SPARQL Endpoint ?
Au fil de mes lectures et explorations autour des linked data, voilà une expression que j’ai retrouvé fréquemment — jamais traduite, et toujours dans des phrases du genre « après avoir déclaré le SPARQL Endpoint ».
C’est un truc qui intervient en bout de chaine, quand on a mis en ligne une base de triplets. Mais en quoi ça consiste ?
En essayant de le comprendre, je suis tombé sur des définitions comme celle-ci :
A SPARQL endpoint is a conformant SPARQL protocol service as defined in the SPROT specification.
Et encore, c’est ce qu’on trouve de mieux : le pire, c’est de consulter la page officielle du W3C sur SPARQL et d’y constater que le mot « Endpoint » en est absent…
Bref, je n’en suis sorti que grâce à quelques tweets de @lespetitescases, très éclairantes. En substance, de quoi s’agit-il ?
De l’URL racine pour interroger en SPARQL la base de triplets.
Petite définition
Commençons par des comparaisons :
- Dans Google, l’URL d’une recherche ressemblera à :
https://www.google.fr/search?q=sparql+endpoint&ie=utf-8
L’URL racine est : https://www.google.fr/search
q et ie sont des paramètres, suivies de leur valeur (q pour les mots recherchés, ie pour l’encodage des caractères) - Sur Yahoo, l’URL d’une recherche sera :
http://fr.search.yahoo.com/search?p=sparql+endpoint&ei=UTF-8
L’URL racine est : http://fr.search.yahoo.com/search
Les paramètres sont : p et ei
Pour un moteur de recherche « normal » (moteur web, mais aussi opac), vous avez besoin de connaître à la fois l’URL racine et les noms des paramètres pour pouvoir construire une URL permettant d’interroger une base.
C’est vrai aussi pour les API :
Pour utiliser l’API Sudoc Isbn2Ppn (qui pour chaque ISBN demandé, indique quel est le PPN de la notice Sudoc), il faut savoir que
- l’URL racine est : http://www.sudoc.fr/services/isbn2ppn/
- La liste des ISBN suit immédiatement l’URL racine (ISBN séparés par des virgules)
http://www.sudoc.fr/services/isbn2ppn/2-07-037026-7,2-05-100362-9,201000535X
Pour un résolveur OpenURL, il suffit de connaître l’URL racine (ou base URL) du résolveur : OpenURL est un standard qui définit justement la liste des paramètres à indiquer au résolveur, pour obtenir de lui un lien vers la ressource (d’où la possibilité d’indiquer l’URL racine de son résolveur dans Zotero, par exemple).
Donc d’un résolveur à l’autre, seule l’URL racine change.
C’est à peu près la même chose pour les base de triplets : toutes exposent leurs données en triplets RDF, interrogeables avec une interrogation SPARQL, qui constitue le langage de requête (donc les paramètres qu’on va retrouver dans l’URL).
Cas pratique : le SPARQL Endpoint de DBpedia
Allons simplement sur cette page, dont l’URL est le SPARQL Endpoint de DBpedia : http://dbpedia.org/sparql
2 zones essentielles :
- une zone de texte pour lancer une recherche.
Pour ceux qui manipulent des bases SQL, ça ressemble à ce qu’on y trouve aussi. - un paramètre pour le format des résultats (HTML, tableur, RDF/XML, turtles)
Pour le tester, il suffit de se souvenir des quelques billets que j’ai pu écrire sur ma découverte du langage de requête SPARQL — ou plus simplement partir de la requête proposée par défaut :
select distinct ?Concept where {[] a ?Concept} LIMIT 100
pour la modifier un peu.
Par exemple si je consulte la page DBpedia de l’Université de Nice, j’y vois que le nombre d’étudiants est de 25793 :
Je vais donc modifier la requête existante pour extraire la liste des établissements qui ont entre 25500 et 26000 étudiants :
select ?university where {?university dbpedia-owl:numberOfStudents ?nbEtudiants.
FILTER (?nbEtudiants > 25500)
FILTER (?nbEtudiants < 26000)}
J’aurais pu faire plus simple et demander par exemple la liste des universités ayant 26000 étudiants :
select ?university where {?university dbpedia-owl:numberOfStudents 26000.}
Puis je choisis le format de sortie HTML (valeur par défaut).
Et j’obtiens cette page de résultats.
L’URL de cette page est :
http://dbpedia.org/sparql?default-graph-uri=http%3A%2F%2Fdbpedia.org&query=select+%3Funiversity+where+{%3Funiversity+dbpedia-owl%3AnumberOfStudents+%3FnbEtudiants.%0D%0AFILTER+%28%3FnbEtudiants+%3E+25500%29%0D%0AFILTER+%28%3FnbEtudiants+%3C+26000%29}%0D%0A%0D%0A&format=text%2Fhtml&timeout=0&debug=on
Où l’on trouve :
- l’URL racine (le SPARQL Endpoint) http://dbpedia.org/sparql
- le paramètre « default-graph-uri=http://dbpedia.org »
- le paramètre query qui contient la requête SPARQL telle quelle
Certains caractères sont transformés en codes spécifiques :- l’espace remplacé par +
- Le saut de ligne remplacé par
%0D%0A
- ? remplacé par
%3F
- etc.
- le paramètre format=text/html qui détermine le format de sortie des résultats
- 2 autres paramètres : timeout et debug.
Donc je peux ainsi rapidement interroger les données stockées dans Wikipedia (anglophone) et exportées vers DBpedia, sur les critères dont j’ai besoin.
Dans mes découvertes de SPARQL, je m’exerçais sur des simples fichiers (une notice d’autorité après l’autre). L’intérêt en était limité. A présent, le même langage me donne accès à des bases complètes, via leur SPARQL Endpoint :
- Isidore (plate-forme de documentation universitaire en SHS) : http://rechercheisidore.fr/sparql
(en fait, l’interface web est à cette adresse, mais l’URL racine des requêtes est : http://rechercheisidore.fr/sparql/query) - Libris (catalogue collectif suédois) : http://libris.kb.se/sparql
- IdRef ? Sudoc ?
- data.bnf.fr ?
Apparemment il manque un SPARQL Endpoint - Le nouveau site du centre Pompidou ?
Déclarer son SPARQL Endpoint ?
Dans les 5 niveaux (étoiles) de l’Open Data énoncés par Tim Berner-Lee, les 4 premières définissent le format des données elles-mêmes (URI déréférençables, etc.). La 5e consiste à faciliter l’accès aux données exposées, en les liant à d’autres. Cela signifie
- intégrer des URI externes pour décrire les ressources.
Si on a besoin d’indiquer un titre, utiliser <http://purl.org/dc/terms/title> plutôt que <http://mon.ontologie.fr/titre>
Si on a besoin de désigner la France, <http://www.geonames.org/3017382/> - déclarer sa base de triplets (dont, en fait, son SPARQL Endpoint) auprès d’annuaires ou autres sources, où on pourra les retrouver aisément
Exemple : The Data Hub
Cela dit, je suppose que, quand on fait évoluer une plate-forme du type Sudoc pour y ajouter des triplets, que ce soit en RDFa (codage intégré dans la page HTML) ou en RDF/XML (pour chaque notice normale visible dans le navigateur, l’équivalent RDF/XML est proposé), ça ne signifie pas que la plate-forme puisse être interrogée en SPARQL : chaque notice contient des triplets qu’on peut manipuler, mais sans doute pas depuis une entrée unique.
Donc l’absence de SPARQL Endpoint pour le Sudoc me semble normale, ou du moins peu étonnante. En revanche, pour IdRef et data.bnf.fr, soit ils existent et je ne les ai pas trouvés, soit c’est en projet, soit… euh…
Trackbacks
- Sparql Endpoint : entrer dans une base de triplets « Bibliothèques [reloaded]
- SPARQL Endpoint ? | Bibliolab, l'atelier des hybrides | Scoop.it
Commentaires fermés
« l’absence de SPARQL Endpoint pour le Sudoc me semble normale »
Bon ben alors, fi de la norme 😉