Qu’est-ce qu’un triplestore ?


Data.persee.fr est un triplestore. Mais encore ?

Un triplestore est une base de données qui ne contient que des triplets RDF. En fait, une base de données étant une table, avec des lignes et des colonnes, on parle plus volontiers de « graphe » pour décrire un triplestore dans lequel toutes les données sont liées entre elles. Le RDF (Resource Description Framework) est un modèle de graphe destiné à décrire de façon formelle les ressources Web et leurs métadonnées, de façon à permettre le traitement automatique de ces descriptions.

Qu’est-ce qu’un triplet ?

Un triplet est un énoncé descriptif, aussi basique qu’une description peut l’être. Il est composé de trois parties : un sujet, un prédicat (un verbe, une relation) et un objet.

Un triplet sert à décrire le monde. Tout objet, matériel ou conceptuel, peut être décrit par triplets. Essayez avec ce qui vous entoure :

copier le petit symbole bleu

La bouteille à thé est posée sur mon bureau

La souris est posée sur mon bureau

Le casque est posé sur mon bureau

La gomme est posée sur mon bureau

Le tissu nettoie-lunettes est posé sur mon bureau

 

La bouteille à thé est de couleur bleue

La souris est de couleur noire

Le casque est de couleur noire

La gomme est de couleur blanche

Le tissu nettoie-lunettes est de couleur bleue

 

La bouteille à thé pèse 213 g

La souris pèse 186 g

Le casque pèse 248 g

La gomme pèse 19 g

Le tissu nettoie-lunettes pèse 3 g

 

La bouteille à thé est en matière polycarbonate

La souris est en matière copolymère styrénique

Le casque est en matière copolymère styrénique

La gomme est en matière caoutchouc

Le tissu nettoie-lunettes est en matière polyamide

 

Le casque contient des composants informatiques

La souris contient des composants informatiques

La bouteille à thé contient du thé

 

On pourrait continuer très longtemps, ajouter des informations sur la provenance, la date de fabrication, les propriétaires de ces objets…

Une fois notre base de données de triplets composée, nous pouvons l’interroger :

Donne-moi tout ce qui est de couleur bleue :

→ La bouteille à thé, le tissu nettoie-lunettes.

 

Donne moi tout ce qui contient quelque chose et ce qu’il contient en classant les résultats par poids décroissant :

→ Le casque >>        des composants électroniques

→ La bouteille à thé >>     du thé

→ La souris >>        des composants électroniques

 

Donne moi tout ce qui contient quelque chose en limitant les résultats aux objets de couleur bleue :

→ La bouteille à thé

 

On peut maintenant relier notre base de données avec une autre, qui par exemple définit les matières plastiques, et lui demander tout ce qui est fabriqué dans un dérivé pétrolier, cette information ne figure pas dans notre base de données, mais comme dans la seconde base de données les matières polycarbonate, copolymère styrénique et polyamide sont définies, sous forme de triplets, comme des dérivés pétroliers, on pourra obtenir :

→ La bouteille à thé, la souris, le casque, le tissu nettoie-lunettes

Que trouve-t-on dans le triplestore de Persée ?

À Persée, nous avons des articles, des illustrations, des collections, des auteurs… qui ont tous été décrits sous forme de triplets. Toutes les informations concernant chacun de ces “objets” sont stockées dans le triplestore de Persée et sont désormais interrogeables. Les schémas suivants montrent quelles informations sont disponibles pour chaque sorte d’entité et comment elles sont reliées entre elles.

Les prédicats (les relations) utilisés sont majoritairement choisis parmi des vocabulaires préexistants et recommandés, et utilisés par les autres triplestores qui traitent le même genre de données.

Le triplestore de Persée utilise, entre autres, les vocabulaires “foaf” qui définit les relations entre personnes, “bibo” qui définit les relations entre entités bibliographiques , “dcterms” (Dublin core) qui définit un jeu de métadonnées classiques, “cito” qui définit les liens entre documents…

Toutes ces informations à propos des contenus de Persée sont des “métadonnées” : des données qui décrivent des données. Un triplestore est donc une base de données (ou plutôt un graphe, encore une fois) de métadonnées. En requêtant un triplestore, on ne cherche donc pas les mêmes informations que dans une base de données “classique”. On ne s’intéresse pas ici au contenu mais à tout ce qui le qualifie. On ne cherchera pas ici un article particulier mais tous les articles correspondant à tel ou tel critère. Ou le nombre d’articles remplissant ces critères répartis par année, par auteur ou par collection… La particularité de Persée reste que si vos résultats englobent une liste d’identifiants d’articles vous pouvez entrer ces URI (voir ci-dessous) dans un navigateur et accéder au contenu vers lequel elles pointent (on appelle cette opération « déréférencer  » des URI) et consulter le plein texte de ces ressources.

Chaque contenu étant décrit à travers un grand nombre de propriétés et relations, la base de données est volumineuse : nous en sommes à 30 327 681 triplets !

URI, prédicats et vocabulaires

Une ressource est identifiée par une URI (Uniform Resource Identifier), un identifiant unique qui ressemble à une URL mais qui ne pointe pas forcément vers un fichier : une URI n’identifie pas un fichier, mais la ressource elle-même comme entité abstraite.

Les URL sont des URI dont le préfixe est ‘http’ et dont la particularité est d’identifier une ressource principalement par le mécanisme qui permet d’y accéder (par exemple, son emplacement sur un serveur, l’adresse d’un résolveur de liens jointe à des paramètres d’accès, etc.). On parle alors également d’« URI déréférençable ».

Dans un triplet, le sujet et le prédicat sont exprimés par des URI, l’objet peut être une URI ou une chaîne de caractères.

Les vocabulaires, tels qu’entendus ici, sont des listes de prédicats se rapportant à un champ donné. Les prédicats sont des URI, ils comportent un préfixe qui renvoie à un domaine et la propriété elle-même, définie sur le site du domaine. Ainsi, tous les schémas qui utilisent le prédicat “dcterms:publisher” utilisent l’URI “http://purl.org/dc/terms/publisher” et s’accordent sur la définition que le Dublin Core Metadata Initiative en donne : “An entity responsible for making the resource available.” Le fait d’utiliser des vocabulaires largement répandus assure que différents triplestores appellent bien le même concept par le même nom.

Les triplets servent à “décrire le monde”. Les vocabulaires sont des listes de prédicats (propriétés) qui servent à décrire un monde en particulier. Le vocabulaire foaf (Friend of a friend) permet de décrire les personnes et les relations entre elles, le vocabulaire RDA s’applique aux collections des bibliothèques. Le triplestore de Persée combine un certain nombre de ces vocabulaires pour décrire toutes ses ressources. La liste des prédicats utilisés se consulte sur les cartes heuristiques de schémas de données. On peut également accéder à une liste des prédicats attachés à une ressource par ce formulaire .

 

Les principes de base de Sparql / Comment interroger un triplestore ?

On fouille dans un triplestore en lui soumettant des requêtes dans un langage informatique dédié : le Sparql.

Ce langage présente quelques similarités avec SQL, pour ceux qui connaissent ce langage de requêtes permettant d’interroger des bases de données “classiques”.

Une requête-type basique se compose :

d’un ou des appel(s) de vocabulaires utilisés,

d’une ligne SELECT dans laquelle on nomme le type d’informations que l’on recherche, ce nom est une “variable” il peut aussi bien s’appeler ?x ?pifpafpouf ou un mot porteur de sens comme ?name. Une variable Sparql commence par un point d’interrogation.

d’une ligne WHERE dans laquelle on définit lesquelles de ces informations on cible en fonction de leurs relations avec d’autres informations. Le ?x que je cherche est l’objet du prédicat cité.

On peut ensuite limiter, trier, croiser les résultats.

Concrètement :

PREFIX foaf: <http://xmlns.com/foaf/0.1/> —-> Je vais me servir du vocabulaire foaf. Quand j’utiliserai “foaf:” cela reviendra à aller chercher le prédicat qui suivra dans l’espace de noms présent à cette adresse.
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>—-> J’utiliserai également le  vocabulaire rdf-syntax. Quand j’utiliserai “rdf:” cela reviendra à aller chercher le prédicat qui suivra dans l’espace de noms présent à cette adresse.

SELECT ?x —-> ce que je cherche

WHERE { ?y rdf:type foaf:Person . —-> va chercher les ressources de type foaf:Person et les appelle ?y

?y foaf:name ?x. } —-> le nom tel que défini par le vocabulaire foaf attaché à ces entités Person est l’information que je recherche

LIMIT 200 —-> limite les résultats à 200

Nous donnera deux cents noms de personnes présentes dans la base.

Un certain nombre de tutoriels Sparql sont accessibles en ligne, voici quelques liens, en français puis en anglais.

http://web-semantique.developpez.com/tutoriels/jena/arq/introduction-sparql/

https://fr.wikiversity.org/wiki/SPARQL_Protocol_and_RDF_Query_Language/Requ%C3%AAtes_de_lecture

https://jena.apache.org/tutorials/sparql.html

http://www.linkeddatatools.com/querying-semantic-data

http://www.cambridgesemantics.com/semantic-university/sparql-by-example

Mais comme tout le monde n’a pas le courage d’apprendre un nouveau langage, nous vous proposons une solution innovante pour formuler des requêtes sur le triplestore de Persée : Sparklis.

 

Quels sont les avantages d’un triplestore ?

Dans un triplestore, on recherche partout ! Même là où on n’attend pas les réponses. Quand on cherche dans une bibliothèque, on cherche dans une étagère, dans une section, dans une salle. Et on recommence dans une autre étagère, une autre section, une autre salle. On sollicite un.e documentaliste, qui connaît son fonds, et on lui demande ce qu’on a bien pu oublier. On fait quelques recherches annexes, on croise ses recherches avec d’autres mots-clés, avec celles de confrères… Dans un triplestore, une requête s’applique à l’intégralité du fonds, pris comme un seul corpus, puisque les données étant liées les unes aux autres, c’est un seul corpus. On a donc l’avantage de l’exhaustivité.
Qui dit exhaustivité peut dire « bruit ». Avec une requête Sparql, on peut être extrêmement précis. En utilisant une expression régulière on pourra chercher les mots roche, roches, rocher, rochers, rocheux, rocheuse, rocheuses sans obtenir les mots broches, croche, ou accrocheuse. On peut limiter ses recherches dans le temps, ou à un éditeur. On peut exclure d’emblée certains résultats : demander le mot table mais pas « table des matières » ni « table ronde ». On a donc l’avantage de la précision.
Quand on fait une recherche dans une bibliothèque, réelle ou virtuelle, on obtient un livre, une revue ou un article. Ou beaucoup de livres, de revues ou d’articles. Il faut alors consigner toutes ces références, les noter ou les copier-coller. Dans un triplestore, on obtient une table de résultats. Que l’on peut télécharger. Toutes les informations y sont, elles sont ordonnées, dans un format stockable, réutilisable, « enrichissable ». Une fois importées dans un tableur sur votre machine personnelle, vous pourrez ajouter autant de colonnes que nécessaire dans votre tableau et y entrer vos propres annotations. Si vous faites une requête incluant les identifiants des articles, vous pourrez cliquer dessus et accéder au plein texte sur Persee.fr, tout en détenant la liste des données qui vous intéressent (titres, dates, auteurs…). On a donc les avantages du stockage, de la pérennité, de la personnalisation.
Un triplestore n’est pas seul ! Si on parle de « web des données » c’est que les données sont liées même au-delà de notre base. Nous avons procédé à des alignements de nos données avec d’autres référentiels. C’est-à-dire qu’au moyen de triplets spécifiques nous avons identifié certaines de nos ressources comme étant strictement les mêmes « objets » que ceux présents dans d’autres bases : nos auteurs sont alignés avec ceux de la BNF, nos espèces vivantes avec celles du Système mondial d’information sur la biodiversité (GBIF), nos monuments avec la base Athar. Au moyen d’une requête fédérée, on peut donc rechercher à partir de notre point d’entrée des informations détenues par d’autres triplestores.
Un triplestore peut se télécharger. En téléchargeant un jeu de données, vous pouvez installer tout ou partie de nos données sur votre machine personnelle et les réutiliser comme bon vous semble (dans la limite de nos conditions générales d’utilisation, bien sûr !).