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
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 :
- 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
À 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 colonne | Description | Type d’export |
identifiers | Liste des identifiants secondaires. Vous devrez indiquer le code de l’identifiant secondaire que vous voulez exporter dans le second champ du formulaire | sample |
metadata | Donné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 formulaire | sample |
web_address | Adresse qui est générée automatiquement et qui permet d’accéder au détail de l’échantillon ou au contenu du document | sample, document |
content_type | Description normalisée du format du lien fourni par web_address | sample, document |
fixed_value | Valeur fixe, dont le contenu est récupéré à partir du champ Valeur par défaut du formulaire | sample, document, collection |
content | Contenu du fichier, pour le type arbitrary_content. Le contenu doit être indiqué dans le champ Valeur par défaut du formulaire | arbitrary 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 :
- 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 :
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 :
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" /> <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>
- 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.