Exporter les collections d’échantillons vers d’autres référentiels

Exporter les collections d’échantillons vers d’autres référentiels

Gérer les échantillons, c’est bien. Les faire connaître, c’est mieux !

Gérer les échantillons, c’est bien. Les faire connaître, c’est mieux ! Mais, en informatique, échanger des informations, c’est parfois compliqué :

  • les formats des fichiers peuvent être multiples
  • les noms des champs (ou des colonnes) ne correspondent pas avec ceux que vous manipulez
  • certains libellés doivent être traduits pour être compris. Ainsi, si vous identifiez une truite fario avec le code TRU, mais que votre partenaire attend le nom scientifique (Salmo trutta), il faut que vous puissiez réaliser la conversion
  • certains exports nécessitent de fournir plusieurs fichiers différents, dont le contenu ne peut être déduit des informations stockées (fichier meta.xml vers le GBIF, dont le contenu répond à une structure bien précise)

Pour répondre à ce besoin, le module d’export des échantillons a été rajouté à la version 2.5 de Collec-Science. Ce module permet de créer un lot d’échantillons, et de l’exporter dans des formats totalement paramétrables.

Droits nécessaires

Pour utiliser cette fonctionnalité, vous devez disposer du droit Collection. Si ce n’est pas le cas, contactez le responsable métier de l’application.

Créer un lot d’échantillons

Depuis la fenêtre de sélection des échantillons :

  • sélectionnez impérativement une collection (l’export ne fonctionne que pour une collection à la fois, il n’est pas possible d’indiquer des échantillons issus de diverses collections dans le même export)
  • ajoutez les paramètres complémentaires dont vous auriez besoin pour filtrer vos échantillons, puis lancez la recherche
  • cochez les échantillons que vous voulez exporter
  • en bas du tableau, choisissez l’opération Créer un lot d’export

Décrire un modèle d’export

Créer les traducteurs

Si vous avez besoin de transcoder des libellés pour qu’ils soient compris par le système d’information cible, vous devez créer un traducteur. Pour ce faire :

  • Export des échantillons > Traducteurs
  • Nouveau…
  • indiquez un nom, puis saisissez l’ensemble des libellés à traduire et leur traduction
export-1.png

Dans cet exemple, les libellés Alosa et Alosa sp. seront traduits en ALS.

Créer les modèles de jeux de données (ou datasets)

Les modèles de jeux de données correspondent aux fichiers qui seront produits. Ils peuvent contenir 4 types d’informations différentes :

  • les données sur les échantillons
  • la description de la collection, avec notamment les informations sur son responsable
  • les documents associés aux échantillons
  • un format libre, pour créer un fichier de contenu fixe (fichier xml de description, par exemple).

Deux types d’informations sont nécessaires pour les décrire :

  • des données générales (format du fichier, quelques paramètres spécifiques comme le séparateur de caractères pour les fichiers CSV ou l’entête XML)
  • la liste des colonnes à intégrer.

Décrire les informations générales

Voici les informations à indiquer :

export-2.png
  • nom : libellé libre
  • type :
    • sample : description des échantillons
    • collection : description de la collection
    • document : informations générales sur les documents associés aux échantillons, dont le lien de téléchargement
    • arbitray content : fichier dont le contenu est fixe et décrit
  • format d’export :
    • CSV : fichier délimité, avec ligne d’entête
    • XML : fichier au format XML
    • JSON : fichier au format JSON
  • nom du fichier généré : nom du fichier qui sera envoyé au navigateur, ou intégré dans le fichier zip
  • pour le type document, indiquez si vous souhaitez fournir la liste de tous les documents associés aux échantillons, ou seulement le dernier créé
  • pour le format d’export CSV, indiquez le séparateur à utiliser (tabulation, point-virgule, virgule)
  • pour le format d’export XML :
    • indiquez l’entête du fichier XML (par défaut : <?xml version= »1.0″?><samples></samples>). Les occurrences seront ici stockées dans la balise <samples>
    • indiquez le nom du nœud pour chaque occurrence (par défaut, sample). Ainsi, pour un échantillon, les informations seront stockées dans <samples><sample>(…)</sample><sample>(…)</sample></samples>
    • Transformation XSL : si le contenu est renseigné, le fichier XML « brut » va être transformé en utilisant les commandes décrites dans ce champ, pour générer un fichier conforme à ce qui est attendu. Consultez ci-dessous l’exemple concernant la mise en forme des données décrivant une collection.

Décrire les colonnes

export-3.png

À partir du détail d’un modèle, vous pouvez indiquer les colonnes à insérer dans le fichier d’export. La liste des colonnes disponibles dépend du type du fichier (sample, collection, etc.). Vous retrouverez les informations présentes en base de données, avec quelques champs supplémentaires :

Nom de la colonneDescriptionType d’export
identifiersListe des identifiants secondaires. Vous devrez indiquer le code de l’identifiant secondaire que vous voulez exporter dans le second champ du formulairesample
metadataDonnées présentes dans les métadonnées de l’échantillon. Vous devrez indiquer le nom du champ de métadonnées à exporter dans le second champ du formulairesample
web_addressAdresse qui est générée automatiquement et qui permet d’accéder au détail de l’échantillon ou au contenu du documentsample, document
content_typeDescription normalisée du format du lien fourni par web_addresssample, document
fixed_valueValeur fixe, dont le contenu est récupéré à partir du champ Valeur par défaut du formulairesample, document, collection
contentContenu du fichier, pour le type arbitrary_content. Le contenu doit être indiqué dans le champ Valeur par défaut du formulairearbitrary content

Voici la signification des différents champs :

  • nom de la colonne à exporter : donnée à extraire (cf. le tableau précédent pour la signification de certaines colonnes complémentaires)
  • nom du champ dans les métadonnées ou nom de l’identifiant secondaire : cf. tableau précédent, colonnes identifiers ou metadata
  • nom dans l’export : entête de colonne (ou nom du champ) qui sera indiqué dans le fichier généré
  • nom de la table de correspondance : nom du traducteur qui sera utilisé pour transcoder les libellé (cf. supra). Si le libellé n’est pas trouvé, la valeur initiale sera conservée
  • contenu obligatoire pour l’export : si l’indicateur est positionné, l’export échouera si le champ considéré est vide
  • valeur par défaut : si aucune valeur n’est trouvée, elle sera remplacée par le contenu de ce champ
  • formatage de la date : pour les champs de type date, il est possible de formater le résultat, en utilisant la syntaxe proposée. Pour le format ISO 8601 (2004-02-12T15:19:21+00:00), vous pouvez utiliser la valeur c
  • numéro d’ordre dans l’export : la liste des colonnes sera triée par la valeur croissante de cet attribut

Créer un modèle d’export

Les modèles d’export regroupent un ou plusieurs jeux de données. voici les informations à indiquer :

export-4.png
  • nom : libellé libre
  • description : indiquer la cible et le contenu du modèle est conseillé
  • version : vous pouvez indiquer un numéro de version, si nécessaire
  • fichier compressé : par défaut, si l’export contient plusieurs jeux de données (datasets), le fichier généré sera compressé au format zip. Si l’export ne comprend qu’un seul dataset, vous pouvez indiquer si vous souhaitez que le fichier généré soit au format zip ou au format original
  • nom du fichier généré : nom complet avec l’extension du fichier à créer
  • liste des datasets à générer : indiquez les datasets (préalablement créés) que vous voulez ajouter dans votre fichier d’export.

Exporter un lot

Une fois le lot créé, vous pouvez l’exporter. La recherche s’effectue uniquement par collection.

Un lot peut être exporté selon plusieurs modèles. Vous devez dans un premier temps créer un export associé au lot :

export-5.png

Une fois l’enregistrement réalisé, vous pouvez générer le fichier depuis le détail du lot, en cliquant sur l’icone correspondante dans la liste des exports :

export-6.png

Exemple de mise en forme des données décrivant une collection avec une transformation XSL

Le langage XSL est utilisé pour transformer les données d’un fichier XML et produire le résultat attendu par le destinataire. Voici un exemple d’une transformation concernant la description d’une collection (tiré d’un essai d’export vers le GBIF).

Le contenu généré par l’application, avant transformation, est celui-ci :

<collection>
<referent_name>Quinton</referent_name>
<referent_email>eric.quinton@inrae.fr</referent_email>
<collection_name>nom_collection</collection_name>
<collection_keywords>
<keyword>mot-clé 1</keyword>
<keyword>mot-clé 2</keyword>
</collection_keywords>
<academical_directory>https://orcid.org</academical_directory>
<academical_link>https://orcid.org/0000-0003-4207-4107</academical_link>
<referent_firstname>Éric</referent_firstname>
</collection>

Le code utilisé pour la transformation (champ XSL) contient ces commandes :

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
	<xsl:template match="/">
		<eml:eml 
			xmlns:eml="eml://ecoinformatics.org/eml-2.1.1" 
			xmlns:stmml="http://www.xml-cml.org/schema/stmml-1.1" 
			xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
			packageId="doi:10.xxxx/eml.1.1" system="https://doi.org"
			xsi:schemaLocation="eml://ecoinformatics.org/eml-2.1.1 eml.xsd">
			<xsl:for-each select="collection">
				<dataset>
					<title><xsl:value-of select="collection_name" /></title>
					<creator id="https://orcid.org/0000-0003-4207-4107">
						<individualName><xsl:value-of select="referent_firstname" />&#160;<xsl:value-of select="referent_name" />
						</individualName>
						<electronicMailAddress><xsl:value-of select="referent_email" /></electronicMailAddress>
						<xsl:element name="userId">
							<xsl:attribute name="directory">
								<xsl:value-of select="academical_directory" />
							</xsl:attribute>
							<xsl:value-of select="academical_link" />
						</xsl:element>
					</creator>
					<keywordSet>
						 <xsl:for-each select="collection_keywords/keyword">
						<keyword><xsl:value-of select="." /></keyword>
						  </xsl:for-each>
					</keywordSet>
					<contact>
						<references><xsl:value-of select="academical_link" /></references>
					</contact>
				</dataset>
			</xsl:for-each>
		</eml:eml>
	</xsl:template>
</xsl:stylesheet>

Une fois la transformation effectuée, voici le contenu du fichier généré :

<eml:eml xmlns:eml="eml://ecoinformatics.org/eml-2.1.1" xmlns:stmml="http://www.xml-cml.org/schema/stmml-1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" packageId="doi:10.xxxx/eml.1.1" system="https://doi.org" xsi:schemaLocation="eml://ecoinformatics.org/eml-2.1.1 eml.xsd">
<dataset>
<title>nom_collection</title>
<creator id="https://orcid.org/0000-0003-4207-4107">
<individualName> Éric Quinton</individualName>
<electronicMailAddress>eric.quinton@inrae.fr</electronicMailAddress>
<userId directory="https://orcid.org">https://orcid.org/0000-0003-4207-4107</userId>
</creator>
<keywordSet>
<keyword>mot-clé 1</keyword>
<keyword>mot-clé 2</keyword>
</keywordSet>
<contact>
<references>https://orcid.org/0000-0003-4207-4107</references>
</contact>
</dataset>
</eml:eml>

Quelques explications :

  • toutes les balises qui commencent par xsl: sont des commandes qui vont être interprétées
  • les autres libellés sont écrits tels quels dans le fichier
  • xsl:for-each select= »collection » permet de boucler sur l’ensemble des enregistrements de l’arbre collection
  • xsl:value-of select= »referent_name » permet de sélectionner le contenu d’une balise du fichier d’origine
  • pour les mots clés, le select porte sur l’arbre keywords/keyword
  • concernant l’élément userId, un attribut a été positionné en créant de manière programmée la balise, l’attribut ayant été positionné avec xsl:attribute et le contenu avec xsl:value-of

Concernant l’utilisation des commandes xsl, vous pouvez consulter https://www.w3schools.com/xml/xsl_elementref.asp ou https://www.devguru.com/content/technologies/xslt/elements.html, entre autres.

Date de modification : 15 mai 2023 | Date de création : 22 mars 2023 | Rédaction : Éric Quinton