SPARQL 1.1 est une recommandation récente du W3C pour interroger des banques de triplets RDF.
SPARQL a une syntaxe basée sur la définition de modèles de triplets comportant des variables qui doivent correspondre à des triplets de la base. Ce document est une introduction aux principales composantes des interrogations de base de triplets RDF pour leur utilisation dans Twinkle.
Un triplet regroupe trois composantes parmi les suivantes. Un triplet doit être terminé par un point (.) souvent précédé par un espace pour éviter les ambiguïtés.
<http://www.iro.umontreal.ca/lapalme/SPARQL?bonjour#toto>sera séparé en composantes optionnelles:
"1.2"^^xsd:decimal
"2010-03-17T11:53:27"^^^xsd:dateTime
PREFIX ident: IRI .Par exemple:
PREFIX gl: <http://www.iro.umontreal.ca/lapalme/SPARQL#> .Ce préfixe est ajouté à ce qui suit le deux-points pour former l'URI complet. Ainsi gl:toto désignera l'URI <http://www.iro.umontreal.ca/lapalme/SPARQL#toto>. L'identificateur de préfixe peut être vide.
Un triplet est noté par trois URI suivis par un point. Ils désignent respectivement le sujet, le prédicat et l'objet RDF. L'objet peut aussi être un littéral. Par exemple
gl:s gl:p "o" .
Lorsqu'un sujet est partagé par plusieurs triplets successifs on sépare les paires prédicat et objet par un point-virgule. Par exemple
gl:s gl:p "o"; gl:p1 "o1" .équivaut à
gl:s gl:p "o" .Lorsqu'un sujet et un prédicat sont communs à plusieurs objets, ces derniers sont séparés par des virgules. Par exemple
gl:s gl:p1 "o1" .
gl:s gl:p gl:o, "o1".équivaut à
gl:s gl:p gl:o.Attention: les parenthèses dans ce contexte sont utilisées pour dénoter des collections que nous ne décrivons pas ici.
gl:s gl:p "o1".
[gl:p "o"] . | _:b1 gl:p "o" . |
[gl:p "o"] gl:q gl:o2 . | _:b2 gl:p "o". _b2 gl:q gl:o2 . |
gl:s gl:p [gl:p1 gl:o]. | gl:s gl:p _:b3 . _:b3 gl:p1 gl:o . |
[gl:p gl:o;gl:p1 "o1"]. | _:b4 gl:p gl:o . _:b4 gl:p1 "o1" . |
Les requêtes sont basées sur la notion de modèle de graphe qu'on cherche à retrouver dans une base de triplets. Dans un modèle de graphe, un triplet peut comporter des variables (i.e. des identificateurs précédés par ? ou $) qui seront instanciées lorsqu'un triplet concorde au modèle en affectant une variable.
Un modèle de graphe est une suite de triplets entre accolades { }. Une variable liée dans un triplet garde la même valeur dans tous les autres triplets où elle est utilisée dans le même modèle de graphe. Il est de plus possible d'ajouter des contraintes supplémentaires sur les triplets par un filtre qui peut apparaître entre des triplets dans un modèle de graphe. Par exemple, le modèle de graphe
Un filtre est de la forme FILTER expression où expression est composée d'une combinaison des éléments suivants:
Un filtre s'applique au modèle de graphe entier où il se trouve, peu importe sa position dans le graphe.
Les triplets étant considérés comme un ensemble, il est difficile de se fier sur l'ordre d'apparition des résultats. Il est toutefois possible de modifier la sortie avec les mots clés suivants:
SPARQL 1.1 fournit également des fonctions d'agrégation telles des sommes ou des moyennes et la possibilité de définir des variables. Nous n'avons décrit ici que les principaux éléments de syntaxe de SPARQL. En particulier, nous avons omis la possibilité d'interroger plusieurs graphes dans une même requête. Nous avons aussi passé sous silence quelques possibilités qui nous semblaient moins importantes ainsi que le traitement des BASE pour créer des URI relatifs.
Pour la syntaxe complète, il faut consulter le document du W3C.
On peut avoir plus de détails dans cette feuille de rappel.
Pour modifier la base de triplets, il faut utiliser SPARQL 1.1 Update sur un Graph Store tel que TDB ou Fuseki.
Feigenbaum présente une bonne introduction à SPARQL 1.1 avec une feuille de rappel