« SPARQL Protocol and RDF Query Language/Requêtes de lecture » : différence entre les versions

Contenu supprimé Contenu ajouté
m Robot : Remplacement de texte automatisé (- n'est pas + n’est pas , - Aujourd'hui + Aujourd’hui , - d'euros + d’euros , - d'agir + d’agir , - l'apparence + l’apparence )
m Robot : Remplacement de texte automatisé (-\n(==={0,3})(?: *)([^\n=]+)(?: *)\1(?: *)\n +\n\1 \2 \1\n)
Ligne 10 :
L'ambition de SPARQL est d’offrir une interopérabilité, non seulement au niveau des services, comme avec les services Web, mais aussi au niveau des données, structurées ou non, qui sont disponible à travers l'Internet. Toutes ces données disponibles en ligne via SPARQL sont ce que l’on nomme le Web des données. Ce chapitre va nous permettre d'apprendre à interroger ce Web des données.
 
== Introduction ==
=== Commentaires ===
On peut écrire des commentaires dans les requêtes SPARQL. Les commentaires commencent par un '#' en début de ligne.
Ligne 18 :
}}
 
=== Préfixes ===
Dans le chapitre [[../Modèle de données RDF/]], nous avons vu comment écrire des IRIs relatifs à l'aide de préfixes.
 
Ligne 35 :
Si vous ne connaissez pas un préfixe dans un exemple, vous pouvez utiliser le site http://prefix.cc pour retrouver la définition d'un préfixe.
 
=== Abréviations ===
==== rdf:type ====
Vous pouvez rencontrer dans les requêtes SPARQL le mot "a", qui est l’abréviation du prédicat <nowiki><http://www.w3.org/1999/02/22-rdf-syntax-ns#type></nowiki> (ou rdf:type)
Ligne 45 :
Attention, c’est "a" minuscule. Écrire ''A'' peut entraîner une erreur.
}}
==== Sujet ====
De plus, le sujet des triplets est souvent répété dans une requête pour écrire plusieurs conditions sur ce même sujet. Ainsi, le caractère ";" évite de retaper le sujet des triplets suivants.
 
Ligne 62 :
</pre>
 
==== Prédicat ====
Pour les mêmes raisons mais pour éviter d'écrire le même prédicat, vous pouvez utiliser le caractère ",".
Par exemple :
Ligne 74 :
</pre>
 
=== Les littéraux ===
Dans le chapitre [[../Modèle de données RDF/]], nous avons vu comment écrire un littéral dans le format RDF/Turtle. Dans une requête en SPARQL qui utilise également des triplets, comme dans le format RDF/Turtle, les objets peuvent également être des littéraux, en ayant la même syntaxe que Turtle.
 
Ligne 86 :
</pre>
 
=== Variables ===
Une variable dans une requête commence par le caractère "?" et ce caractère ne fait pas partie du nom de la variable.
Le nom d'une variable :
Ligne 100 :
Par exemple, si une variable correspond à l'IRI de l’objet adresse, on peut utiliser la variable "address" qui sera utilisée dans la requête sous la forme "?address".
 
== Requêtes SELECT ==
 
=== Structure d'une requête ===
Une requête SELECT se divise en 5 parties :
# Définition des préfixes si vous utilisez des IRIs relatifs
Ligne 137 :
</source>
 
=== Définir le tableau de résultats ===
 
Nous avons vu dans le protocole SPARQL que les résultats prennent la forme d'un tableau. C'est dans la clause SELECT que les colonnes sont définies en alignant les variables qui sont présentes dans la clause WHERE.
Ligne 147 :
* dans SPARQL 1.1, "SELECT ?country (100 * ?rate '''AS''' ?percent)" permettra de faire des calculs et renommer les champs, etc. (comme on peut le faire dans SQL)
 
=== Modifier les résultats ===
Pour le moment, on expliquera uniquement l’utilisation des mots-clés <code>ORDER BY</code>, <code>LIMIT</code> et <code>OFFSET</code>.
 
==== ORDER BY ====
 
ORDER BY permet d'ordonner le résultat de la requête. Il suffit de lui donner en argument la colonne selon laquelle il doit ordonner les résultats.
Ligne 193 :
</source>}}
 
==== LIMIT ====
LIMIT permet de limiter le nombre de lignes retournées.
{{exemple|titre=Exemple de requête avec une limite|contenu=
Ligne 206 :
N'hésitez pas à l’utiliser, car dans beaucoup de cas cela vous permettra d'obtenir des temps de réponse plus faibles du serveur interrogé.
}}
==== OFFSET ====
OFFSET permet de n'afficher le résultat qu’à partir de la ligne indiquée.
{{exemple|titre=Exemple de requête qui ne donne le résultat qu’à partir de la cinquième ligne|contenu=
Ligne 230 :
On a maintenant tout ce qu’il nous faut pour naviguer de page en page dans les résultats d'une requête.
 
=== Définir les conditions ===
La plupart des requêtes SPARQL contiennent un ensemble de triplets appelé '''masque de graphe'''.
 
Ligne 239 :
* Ce masque de graphe peut recouvrir un ou plusieurs sous-graphe des données RDF. Le résultat est alors équivalent à tous les sous-graphes ainsi découvert à l'aide de ce masque.
 
==== Écrire une requête simple ====
 
L'exemple ci-dessous montre une requête SPARQL pour trouver le titre d'un livre à partir du graphe des données RDF suivant, décrit au format Turtle. La requête se compose de deux parties :
Ligne 267 :
| "Tutoriel SPARQL"
|}
==== Obtenir plusieurs réponses ====
Le résultat d'une requête est un tableau où chaque ligne représente une solution différente, qui correspond à un sous-graphe trouvé à l'aide du masque de la requête. Il peut y avoir zéro, une ou plusieurs solutions à une requête.
 
Ligne 300 :
|}
 
=== Conditions par la comparaison ===
 
Utilisons le graphe RDF/Turtle suivant :
Ligne 318 :
}}
 
==== Littéral avec une balise de langue ====
 
Précédée du symbole @, la balise de langue qui suit un littéral permet de faire cohabiter dans une même base de données plusieurs langues et permet d'obtenir toutes les langues disponibles à travers une simple requête.
Ligne 342 :
|}
 
==== Littéral avec un type numérique ====
Les entiers, dans une requête SPARQL, sont implicitement de type xsd:integer.<br />
'''Exemple: le littéral 42 est équivalent à l'écriture'''<br />
Ligne 357 :
|}
 
==== Littéral avec un type arbitraire ====
 
La base de données n'a pas besoin de comprendre ce que représente un type pour l'enregistrer ou pour le retrouver. La base de données va simplement comparer la forme lexicale et la référence IRI du type avec les données qu'elle contient.
Ligne 371 :
|}
 
=== Contraintes ===
Un masque de graphe produit une liste de solutions. On peut, à l'aide du mot clé FILTER, ajouter une contrainte à ce masque. La clause FILTER ajoute une condition qui doit se vérifier pour valider une solution.
 
Ligne 388 :
:book2 ns:price 23 .</pre>
 
==== Littéral texte ====
 
regex() est une fonction qui permet d’utiliser une expression régulière pour vérifier une chaîne de caractères sans balise de langue.
Ligne 440 :
|}
 
==== Littéral numérique ====
 
La clause FILTER peut vérifier des conditions numériques.
Ligne 460 :
|}
 
==== Les autres littéraux ====
La clause FILTER peut utiliser de nombreuses fonctions et des opérateurs booléens que nous étudierons dans une future leçon. Si vous cherchez une fonction particulière, vous pourrez la trouver, en attendant, dans la documentation de SPARQL ([http://www.w3.org/TR/rdf-sparql-query/#tests]).
 
=== Jointures ===
Les jointures s'expriment dans une requête SPARQL au sein de la clause WHERE.
==== Jointure basique ====
{{définition|titre=A . B|contenu=
Considérer A et B comme des graphes. "A.B" représente une jointure, rassemblant les résultats de A et B en fonction des variables en commun.
Ligne 471 :
Les points qui séparent les triplets dans la clause WHERE représentent des jointures basiques.
 
==== Jointure à gauche ====
{{définition|titre=A OPTIONAL { B }|contenu=
Considérer A et B comme des graphes. "A OPTIONAL { B }" représente une jointure à gauche. Il rassemble les résultats de A et B en fonction des variables en commun, si possible. Il garde toutes les solutions de A s’il y a ou non des résultats dans B.
Ligne 559 :
|}
 
==== Addition ====
{{définition|titre={ A } UNION { B }|contenu=
Considérer A et B comme des graphes. "{ A } UNION { B } " représente une addition. Il rassemble les résultats de A et B sans condition.
Ligne 602 :
|}
 
==== Soustraction ====
Seulement disponible pour SPARQL 1.1.
{{définition|titre=A MINUS { B }|contenu=
Ligne 608 :
}}
 
=== Exercices ===
==== Interroger un point d'accès SPARQL ====
 
Ligne 640 :
}}
 
==== Faire une requête complexe ====
 
# Avec DBpedia, faire une requête pour trouver les dix premiers films français.
Ligne 674 :
}}
 
== Requêtes ASK ==
=== Résultat ===
Une requête ASK est très proche d'une requête SELECT sauf qu’il n'y a que deux résultats possibles : true (vrai) ou false (faux).
=== Structure d'une requête ===
Elle se divise en 3 parties :
# Définition des préfixes si vous utilisez des IRIs relatifs
Ligne 725 :
Le résultat sera : '''FALSE'''
 
== Requêtes DESCRIBE ==
 
La requête DESCRIBE a pour fonction de décrire une référence. Bien souvent, c’est le premier niveau des données du graphe en partant de la référence qui est utilisée pour donner un résultat.