Transformer un fichier tabulé en SKOS avec Sheet2RDF (VocBench)

Cette documentation « pas à pas » vous montre comment utiliser Sheet2RDF dans VocBench pour transformer un vocabulaire au format tabulé en une ressource représentée à l’aide du modèle standard SKOS. Cette page est un des résultats du test comparatif de 3 outils pour transformer un vocabulaire au format tabulé vers SKOS (projet FooSIN). Toutes les données sont publiées sur l’entrepôt ouvert recherche.data.gouv. 

VocBench est un outil open source d’édition de thésaurus et d’ontologies en ligne. Le logiciel peut être installé sur serveur ou sur son poste. En plus des fonctionnalités d’édition de ressources en SKOS et OWL, VocBench embarque divers outils pour vérifier la syntaxe d’un fichier, valider l’alignement de vocabulaires ou transformer un fichier tabulé au format RDF. C’est ce dernier outil appelé Sheet2RDF que nous testons. La documentation officielle en anglais est consultable à cette adresse.
L’objectif de ce pas à pas est de vous montrer comment produire une ressource suivant le modèle SKOS en partant d’un fichier tabulé et en utilisant le module Sheet2RDF dans l’interface VocBench (version 9.1.0). Notons que Sheet2RDF peut être utilisé en mode commande mais nous n’aborderons pas cet usage dans ce tutoriel.

Prérequis

Pour réaliser la transformation, vous devez travailler au sein d’un projet VocBench paramétré pour une ressource en SKOS. Assurez-vous que l’URI de base et le nom de domaine de votre projet VocBench sont bien déclarés (onglet metadata/Namespaces and Imports) pour éviter les erreurs au moment de générer les triplets. Enfin, si vous utilisez des propriétés non définies dans le modèle SKOS, assurez-vous de déclarer les noms de domaines correspondants dans le projet VocBench, dans l’onglet Metadata/Namespaces and Imports du bandeau bleu.

Préparez le fichier de données

Important : chaque cellule du fichier ne doit contenir qu’une seule valeur. Si votre fichier contient des valeurs multiples, vous pouvez les séparer sur plusieurs colonnes (avec Excel ou NotePad++ par exemple) ou sur plusieurs lignes (avec OpenRefine par exemple). Dans notre exemple ci-dessous, le concept c_2631 a deux libellés alternatifs (altLabel) indiqués sur une ligne chacun, l’identifiant du concept étant répété.

Afin de faciliter le travail de paramétrage dans Sheet2RDF, nous vous recommandons de retravailler les intitulés de colonnes du fichier source en indiquant directement les propriétés SKOS cibles ainsi que les paramètres de langue (ex : @fr), comme montré ci-dessus. De cette manière, Sheet2RDF interprètera ces informations et pré-configurera certains paramètres. Vous pouvez télécharger le fichier test contenant les données d’entrée ici.

Enregistrez votre fichier au format xlsx, odt ou csv. Il doit être encodé en UTF-8.

L’interface Sheet2RDF

Accédez à VocBench depuis un navigateur. Dans le bandeau bleu, sélectionnez Tools puis Sheet2RDF.  L’interface de Sheet2RDF est composée de quatre fenêtres (voir ci-dessous). La partie Spreadsheet preview (cadre rouge) permet de visualiser les données que vous avez chargées et de paramétrer l’outil de transformation. La partie Pearl (cadre vert) montre le code Pearl généré à partir des configurations que vous aurez faites. Vous n’avez pas besoin de connaître le langage de programmation Pearl pour utiliser l’outil. La dernière partie  Generated triples preview (cadre bleu) permet de contrôler le résultat de la transformation en RDF.

Chargez le fichier source

Pour commencer, chargez le fichier contenant votre jeu de données au format tabulé en utilisant la boîte de chargement Spreadsheet file (cadre jaune ci-dessus)

Dans la fenêtre Spreadsheet preview vous pouvez visualiser votre jeu de données et vérifier que le chargement s’est fait correctement. La configuration de la procédure de transformation se fait colonne par colonne. La couleur de l’en-tête de chaque colonne  vous permet de contrôler l’état du paramétrage :  vert indique que la colonne est bien configurée, rouge et orangé qu’il manque des informations, noir que celle-ci n’est pas configurée, et gris que vous écartez la colonne du traitement. La pastille [s] verte indique que la colonne contient le sujet des prédicats. Si vous avez suivi nos recommandations pour les intitulés des colonnes du fichier source, plusieurs en-têtes apparaissent déjà en vert.

Paramétrez Sheet2RDF

Indiquez le sujet des triplets

La première tâche est d’indiquer à l’outil quelle colonne contient le sujet des prédicats à générer. S’il s’agit d’identifiants comme dans notre exemple, ils serviront à créer les URIs des concepts. Cliquez sur le bouton Subject mapping qui est rouge à ce stade (car pas encore complètement configuré). Lorsque vous cliquez dessus, une nouvelle fenêtre appelée Subject Header editor s’ouvre.

  1. Sélectionnez dans le menu déroulant de la section Header le nom de la colonne où se trouvent les identifiants de concepts (URI dans notre cas).
  2. Cochez la case Assert type pour renseigner le type de ces URI.
  3. Cliquez sur la puce jaune et sélectionnez le bon type dans l’arborescence : skos:Concept dans notre exemple.
  4. La partie Converter permet de réaliser des transformations spécifiques pour générer les URIs. Sélectionnez DefaultConverter (d’autres méthodes sont possibles, voir la documentation sur les converters) et cliquez sur OK.

Le bouton Subject mapping devient vert et une pastille verte avec un [s] est apparue dans l’en-tête de la colonne contenant les identifiants. Elle signifie que cette colonne contient les  sujets des triplets qui seront générés. 

Cliquez sur le bouton “play” (flèche noire) de la fenêtre Spreadsheet preview et voyez le code généré dans la fenêtre Pearl. Cliquez ensuite sur le bouton “play” de la fenêtre Pearl et visualisez les triplets générés dans la fenêtre Generated triples preview. En cas d’erreur, vérifiez que le nom de domaine (namespace) est bien configuré pour votre projet.

Configurez les colonnes

Maintenant, il vous reste peut-être à configurer quelques propriétés supplémentaires pour vos concepts. Dans notre exemple, definition (colonne E) et th:Utiliser_pour (colonne G). Ces 2 intitulés ne sont pas interprétés automatiquement et nécessitent donc une configuration manuelle. Cliquez sur l’icône avec le crayon dans l’entête de colonne. Une fenêtre Header editor s’ouvre comme montré ci-dessous; elle ressemble à celle utilisée pour paramétrer le subject.

Header contient le nom de la colonne sur laquelle vous travaillez et Pearl feature le nom de la variable associée qui sera repris dans le script Pearl. Le paramétrage se fait en deux étapes : dans la section Nodes, vous indiquerez une procédure pour convertir les données de la colonne en valeur RDF puis, dans la section Graph Applications, vous indiquerez comment le prédicat sera construit. Utilisez le bouton + de la ligne “Nodes” pour ajouter des règles. Elles s’affichent comme ci-dessous :

Choisissez une/des procédure(s) de conversion

Pour chaque opération de la partie Nodes, indiquez un identifiant d’opération pour y faire référence ensuite et sélectionnez une procédure. Dans notre exemple, nous choisissons la procédure LangStringConverter qui permet d’indiquer une langue en paramètre (dans notre exemple, fr car toutes nos définitions sont en français – nous n’avions pas indiqué la langue dans l’en-tête comme pour les labels). 

Déclarez le prédicat RDF

Le section Graph applications permet ensuite de déclarer un modèle de triplet RDF. Lorsque vous cliquez sur le “+” pour ajouter une déclaration vous avez le choix entre graphe simple et graphe avancé. Dans ce tutoriel, nous ne montrons que le graphe simple, suffisant dans la plupart des cas. Le graphe avancé donne à l’utilisateur plus de possibilités pour construire des graphes complexes, dans le cas par exemple où on souhaite générer du SKOS-XL (voir la section Advanced graph application dans la documentation). 

Pour paramétrer un graphe simple :

  1. sélectionnez la propriété en cliquant sur le dossier bleu comme montré ci-dessous. Cette propriété est définie dans l’ontologie qui sous-tend votre projet dans VocBench.  Pour la définition, nous sélectionnons la propriété skos:definition (déplier skos:note). Le champ Range est rempli automatiquement et ne peut pas être modifié.
  2. Renseignez le champ Range type pour préciser le type de l’objet du triplet. Il ne peut prendre que deux valeurs : Literal (pour du texte) ou Resource (pour un URI). Dans notre exemple pour les définitions, nous choisissons Literal et choisissons DataType rdf:langString (puisque nous avons paramétré une langue pour le Node).
  3. Remplissez le champ Node en sélectionnant la ligne correspondante dans le menu déroulant.
  4. Cliquez sur OK puis de nouveau sur OK pour fermer la fenêtre Header editor.

Vous pouvez voir que l’intitulé de colonne est passé à vert.

Paramétrer une propriété non SKOS (th:Utiliser_pour)

Sheet2RDF n’étant pas limité au modèle SKOS, vous pouvez déclarer des propriétés issues d’un autre modèle. Pour notre propriété utiliser_pour, nous choisissons de la déclarer comme une spécialisation de la propriété skos:related. Allez dans l’onglet “Data” du bandeau bleu et ouvrez l’onglet Property. Descendez jusqu’à la propriété skos:semanticRelation et dépliez l’arbre. Cliquez sur skos:related puis sur le bouton Create subProperty. Indiquez “utiliser_pour” comme nom de propriété. Cliquez sur OK. Nous laisserons les valeurs par défaut de la propriété déclarée.

Retournez dans l’outil Sheet2RDF (menu Tools du bandeau bleu)  et recommencez la procédure de configuration en cliquant sur l’intitulé de la colonne th:Utiliser_pour. 

Lors du choix de la procédure de conversion (Nodes), sélectionnez DefaultConverter qui permet de transformer l’identifiant de concept en URI. N’oubliez pas d’indiquer l’ID de la procédure.

Dans la partie Graph application, cliquez sur + et choisissez “Simple Graph Application”.  Allez sélectionner th:utiliser_pour dans la hiérarchie des propriétés (pour rappel, sous skos:semanticRelation/skos:related). Pour Range type, choisissez Resource.

Fermez les deux fenêtres en cliquant sur OK. Le paramétrage est terminé.

Contrôlez le résultat et exportez

Une fois que vous avez configuré vos colonnes – les en-têtes sont toutes vertes- , vous pouvez cliquer sur le bouton Play de la fenêtre Spreadsheet preview pour produire le script Pearl.

Cliquez sur le bouton Play de la fenêtre Pearl pour générer les triplets. Vous pouvez explorer les triplets dans la fenêtre Generated triples preview .

S’ils vous conviennent, il ne vous reste plus qu’à exporter votre ressource représentée suivant le modèle SKOS dans l’un des formats du langage RDF que vous voulez à l’aide du bouton Export (cadre rouge ci-dessus). Si vous préférez utiliser VocBench pour travailler votre ressource, le bouton Add triples (cadre vert) permet d’instancier votre base RDF d’un simple clic.

Le modèle de configuration (fenêtre Spreadsheet preview) ainsi que le script Pearl généré peuvent être exportés à l’aide des boutons de téléchargement et utilisés pour reproduire ce traitement à l’identique et sans effort sur un autre jeu de données similaire. Les fichiers exportés s’intitulent respectivement s2rdf_status.json et pearl_export.pr. Tous les fichiers générés pour ce pas à pas sont téléchargeables ici.

Pour aller plus loin


Cette ressource a été développée dans le cadre du projet ANR FooSIN (ANR-19-DATA-0019-01). Accéder au comparatif des 3 outils pour transformer un vocabulaire au format tabulé vers SKOS. Lire l’introduction à SKOS.

  
Auteurs (INRAE): Jérémy Yon, Sophie Aubin
Relecteurs (INRAE) : Catherine Roussey