Aller au contenu principal

SPARQL Endpoint ?

19/11/2012

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 :

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

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 :

  1. une zone de texte pour lancer une recherche.
    Pour ceux qui manipulent des bases SQL, ça ressemble à ce qu’on y trouve aussi.
  2. 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 :

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

  1. 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&gt; plutôt que <http://mon.ontologie.fr/titre&gt;
    Si on a besoin de désigner la France, <http://www.geonames.org/3017382/&gt;
  2. 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…

3 commentaires
  1. punktauteur permalink
    23/11/2012 09:58

    « l’absence de SPARQL Endpoint pour le Sudoc me semble normale »

    Bon ben alors, fi de la norme 😉

    Un serveur SPARQL pour le Sudoc

Trackbacks

  1. Sparql Endpoint : entrer dans une base de triplets « Bibliothèques [reloaded]
  2. SPARQL Endpoint ? | Bibliolab, l'atelier des hybrides | Scoop.it

Commentaires fermés