SPARQL

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

SPARQL (prononcé sparkle en anglais : « étincelle »[1]) est un langage de requête et un protocole qui permet de rechercher, d'ajouter, de modifier ou de supprimer des données RDF disponibles à travers Internet. Son nom est un acronyme récursif qui signifie SPARQL Protocol and RDF Query Language[2].

SPARQL est l'équivalent de SQL car comme en SQL, on accède aux données d'une base de données via ce langage de requête alors qu'avec SPARQL, on accède aux données du Web des données. Cela signifie qu'en théorie, on pourrait accéder à toutes les données du Web avec ce standard. L'ambition du W3C est d'offrir une interopérabilité non pas seulement aux niveaux des services, comme avec les services Web, mais aussi aux niveaux des données structurées ou non qui sont disponibles à travers l'Internet.

Ce standard a été créé par le groupe de travail DAWG (RDF Data Access Working Group) du W3C (Consortium World Wide Web). SPARQL est considéré comme l'une des technologies clés du Web sémantique et le 15 janvier 2008, la version 1.0 est devenu une recommandation officielle du W3C[3]. La version 1.1 permettra d'enregistrer des données et de fusionner des données de sources différentes. La version 1.1 est devenue depuis le 21 mars 2013 une recommandation.

Les implémentations de SPARQL au sein de triplestores se multiplient[4]. « SPARQL fera une énorme différence », selon Tim Berners-Lee dès mai 2006[5].

Bénéfices[modifier | modifier le code]

Les données touchent tous les domaines d’activité.

Voici des exemples relatifs à l'utilisation de SPARQL pour des données gouvernementales, culturelles, scientifiques, environnementales, économiques et d’infrastructure.

Données gouvernementales[modifier | modifier le code]

Les États diffusent des données qui leur sont très coûteuses de structurer par eux-mêmes ; ils organisent donc des concours pour le faire à leur place. Cependant, seule une poignée d’entreprises ou d’associations sont en mesure de répondre à ces concours, excluant la majorité des citoyens, qui n’ont pas les moyens de travailler bénévolement à la mise à disposition des données qui les concernent.

L’extension Mediawiki LinkedWiki illustre la capacité de fabriquer n’importe quel rendu à partir des données disponibles à travers SPARQL comme les données du projet Data.gov aux États-Unis.

ex. : où ont eu lieu les tremblements de terre des 7 derniers jours sur la planète ? On utilise ici Google Maps et les données de Data.gov. [1]


Voici un autre exemple pour trouver sur une carte les écoles les plus proches de son domicile avec les données de Data.gov.uk (version britannique de Data.gov) qui offre justement toutes les données relatives aux écoles sur son territoire.

Données culturelles[modifier | modifier le code]

Les grands médias, les musées et autres centres culturels ne peuvent pas toujours gérer eux-mêmes les besoins créés par les nouveaux médias. Ils ne peuvent plus eux-mêmes développer tous les services qu’il faudrait proposer pour satisfaire leurs clients et usagers. Certains ont compris l’intérêt de SPARQL, comme la BBC, qui bascule régulièrement ses données dans des triplestores, dont certains sont publics.

ex. : afficher la liste des épisodes de la série Doctor Who de la BBC. [2]

De la même manière, France Télévisions pourrait rendre toutes ses données accessibles pour laisser la possibilité aux téléspectateurs de créer de nouveaux services culturels.

Par exemple, durant une émission sur les œuvres d’art sur une chaîne de France Télévisions, on pourrait synchroniser l’émission à une application sur sa tablette PC avec les données de la Bibliothèque Nationale de France (BnF), avec les peintures du Louvre et du musée du Quai Branly. DBpedia, un projet exploratoire utilisant Wikipédia, a déjà commencé à mettre des données en ligne de Wikipédia. Malheureusement les données de DBpedia ne sont pas synchrones avec les contributions de Wikipédia et les contributeurs ne peuvent intervenir dynamiquement sur la structuration des données mises en ligne.

ex. : quelles sont les peintures de musées disponibles dans Wikipédia (à travers DBpedia) ? [3]

Pour terminer, voici un exemple pour démontrer la combinaison infinie avec des œuvres culturelles. ex. : durant un documentaire de Steven Spielberg, proposer aux spectateurs la liste des VOD de ce réalisateur. [4]

À l’avenir, nous pourrons même afficher la description de chaque poisson durant la rediffusion des documentaires du commandant Cousteau. Les téléspectateurs pourront associer les poissons dans un documentaire aux fiches qu’ils trouveraient au sein des bases de données du Muséum national d’histoire naturelle et de Wikipédia.

Données scientifiques[modifier | modifier le code]

Dans l’un des premiers articles de Tim Berners-Lee sur le sujet, l’objectif final du Web sémantique est d’offrir la capacité à des agents (programme informatique autonome) de trouver les incohérences dans une nouvelle théorie. Un scientifique gagnera ainsi à l’avenir un temps infini à proposer de nombreuses hypothèses qui seront éprouvées par des machines parcourant toutes les connaissances disponibles. Cela deviendra indispensable, car il est humainement impossible de lire tous les documents dans un domaine scientifique.

À l’avenir, il sera donc indispensable de stocker et partager toutes les données scientifiques. Certains projets commencent à le faire, comme les banques de description des génomes, ou l’office des statistiques de l’Union européenne.

ex. : statistiques sur les aéroports en Europe, pour étudier leur efficacité. [5]

Données environnementales & économiques[modifier | modifier le code]

On peut déjà par exemple créer une application mobile pour référencer les codes-barres des produits au sein d’un wiki sur le Web afin d’indiquer les ingrédients dans chaque produit. [6]

Grâce à la flexibilité d'un wiki, les contributeurs pourront eux-mêmes créer les propriétés comme l’origine d’un produit, le calcul de l’empreinte carbone, quantité d’emballage, etc. En un mot, les consommateurs vont devenir acteur de leurs consommations.

Imaginez que tous les consommateurs puissent scanner un produit avant son achat pour savoir s’il satisfait à des critères écologiques indiqués par eux-mêmes !

Caractéristiques[modifier | modifier le code]

SPARQL est adapté à la structure spécifique des graphes RDF, et s'appuie sur les triplets qui les constituent. En cela, il est différent du classique SQL (langage de requête qui est adapté aux bases de données de type relationnelles), mais s'en inspire clairement dans sa syntaxe et ses fonctionnalités. Il a aussi quelques traits de ressemblance mineurs avec Prolog.

SPARQL permet d'exprimer des requêtes interrogatives ou constructives :

  • une requête SELECT, de type interrogative, permet d'extraire du graphe RDF un sous-graphe correspondant à un ensemble de ressources vérifiant les conditions définies dans une clause WHERE ;
  • une requête CONSTRUCT, de type constructive, engendre un nouveau graphe qui complète le graphe interrogé.

Par exemple sur un graphe RDF contenant des informations généalogiques, on pourra par une requête SELECT trouver les parents ou grands-parents d'une personne donnée, et par des requêtes CONSTRUCT ajouter des relations frère-sœur, cousin-cousine, oncle-neveu, qui ne seraient pas explicitement déclarées dans le graphe initial.

Exemple[modifier | modifier le code]

Exemple de requête SPARQL retournant une liste de photos avec le nom de la personne qu'elles représentent et une description, à partir d'une base de données de type RDF utilisant l'ontologie (vocabulaire) FOAF (une des plus connues et utilisée pour décrire les personnes et les liens entre elles).

  • Extrait du graphe RDF (écriture XML) d'exemple :
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:foaf="http://xmlns.com/foaf/0.1/"
  xmlns:rss="http://purl.org/rss/1.0/"
  xmlns:dc="http://purl.org/dc/elements/1.1/">
        <foaf:Person rdf:about="http://example.net/Paul_Dupont">
                <foaf:name>Paul Dupont</foaf:name>
                <foaf:img rdf:resource="http://example.net/Paul_Dupont.jpg"/>
                <foaf:knows rdf:resource="http://example.net/Pierre_Dumoulin"/>
        </foaf:Person>
        <foaf:Person rdf:about="http://example.net/Pierre_Dumoulin">
                <foaf:name>Pierre Dumoulin</foaf:name>
                <foaf:img rdf:resource="http://example.net/Pierre_Dumoulin.jpg"/>
        </foaf:Person>
        <foaf:Image rdf:about="http://example.net/Paul_Dupont.jpg">
                <dc:description>Photo d'identité de Paul Dupont</dc:description>
        </foaf:Image>
        <foaf:Image rdf:about="http://example.net/Pierre_Dumoulin.jpg">
                <dc:description>Photo d'identité de Pierre Dumoulin</dc:description>
        </foaf:Image>
</rdf:RDF>
  • La requête SPARQL :
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT DISTINCT ?nom ?image ?description
WHERE {
        ?personne rdf:type foaf:Person.
        ?personne foaf:name ?nom.
        ?image rdf:type foaf:Image.
        ?personne foaf:img ?image.
        ?image dc:description ?description
}

On remarque la déclaration des espaces de noms en début, suivis de la requête proprement dite. Le nom des variables est précédé d'un point d'interrogation ?.

La ligne SELECT permet de sélectionner l'ensemble des tuples, ou lignes de variables (nom, image, description) correspondant aux contraintes de la clause WHERE.

La première ligne de la clause WHERE se lit : la variable personne est de type Person au sens de l'ontologie FoaF. La seconde ligne permet de définir la variable nom en tant que propriété name de la variable personne.

  • Le résultat SPARQL :
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
        <head>
                <variable name="nom"/>
                <variable name="image"/>
                <variable name="description"/>
        </head>
        <results ordered="false" distinct="true">
                <result>
                        <binding name="nom">
                                <literal>Pierre Dumoulin</literal>
                        </binding>
                        <binding name="image">
                                <uri>http://example.net/Pierre_Dumoulin.jpg</uri>
                        </binding>
                        <binding name="description">
                                <literal>Photo d'identité de Pierre Dumoulin</literal>
                        </binding>
                </result>
                <result>
                        <binding name="nom">
                                <literal>Paul Dupont</literal>
                        </binding>
                        <binding name="image">
                                <uri>http://example.net/Paul_Dupont.jpg</uri>
                        </binding>
                        <binding name="description">
                                <literal>Photo d'identité de Paul Dupont</literal>
                        </binding>
                </result>
        </results>
</sparql>

Spécifications[modifier | modifier le code]

Il y a trois recommandations (SPARQL 1.0) du W3C avec une note ainsi que dix documents en fin d'élaboration concernant la version suivante (SPARQL 1.1)[6].

Liste des trois recommandations :

  • Langage d'interrogation SPARQL pour RDF[7]
  • Format XML des résultats d'interrogation SPARQL[8]
  • Protocole SPARQL pour RDF[9]

Et la note du W3C :

  • Format JSON des résultats d'interrogation SPARQL[10]

SPARQL est une des couches pour la mise en œuvre du Web sémantique :

Glossaire[modifier | modifier le code]

Le terme « nœud SPARQL » renvoie à un fournisseur de contenu intégré dans l’architecture du Web des données. Un exemple de nœud SPARQL est DBpedia.

Notes et références[modifier | modifier le code]

  1. (en) Jim Rapoza, « SPARQL Will Make the Web Shine », eWeek,‎ 2 mai 2006 (consulté le 17 janvier 2007)
  2. (en) Toby Segaran, Colin Evans, Jamie Taylor, Programming the Semantic Web, O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472,‎ 2009 (ISBN 978-0-596-15381-6), p. 84
  3. (en) « W3C Semantic Web Activity News - SPARQL is a Recommendation », W3.org,‎ 15 janvier 2008 (consulté le 1er octobre 2009)
  4. (en) « SparqlImplementations - ESW Wiki », Esw.w3.org (consulté le 1er octobre 2009)
  5. (en) Reuters, « Berners-Lee looks for Web's big leap », zdnet.co.uk,‎ 22 mai 2006 (lire en ligne)
  6. (en) « SPARQL Current Status », W3.org,‎ 4 juillet 2012 (consulté le 4 juillet 2012)
  7. (en) « Langage d'interrogation SPARQL pour RDF », W3.org,‎ 4 juillet 2012 (consulté le 4 juillet 2012)
  8. (en) « Format XML des résultats d'interrogation SPARQL », W3.org,‎ 4 juillet 2012 (consulté le 4 juillet 2012)
  9. (en) « Protocole SPARQL pour RDF », W3.org,‎ 4 juillet 2012 (consulté le 4 juillet 2012)
  10. (en) « (en) Serializing SPARQL Query Results in JSON », W3.org,‎ 4 juillet 2012 (consulté le 4 juillet 2012)

Sur les autres projets Wikimedia :

Liens externes[modifier | modifier le code]