sparql
Transcription
sparql
Chapitre V SPARQL 1 Présentation 2 Forme d’une requête 3 Requêtes plus complexes Web Sémantique – M1 – 2016-2017 SPARQL 133 Présentation Chapitre V SPARQL 1 Présentation 2 Forme d’une requête 3 Requêtes plus complexes Web Sémantique – M1 – 2016-2017 SPARQL 134 Présentation Présentation SPARQL est un langage d’interrogation de base RDF. Langage standard d’interrogation implémenté dans plusieurs outils utilisables en ligne, en local, depuis un langage de programmation. Recommandation du W3C. http://www.w3.org/TR/rdf-sparql-query/ Inspiré de SQL (select-from-where). . . mais adapté à la (non-)structure d’une base RDF. Web Sémantique – M1 – 2016-2017 Présentation SPARQL 135 Présentation Données utilisées dans les exemples Exemple (personnes.n3) @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix mv: <http://exemple.fr/mv#> . mv:fm mv:nom "Fox Mulder" ; mv:famille mv:Mulder ; mv:travailleavec mv:ds ; mv:pere mv:bm ; mv:photo <http://upload.wikimedia.org/wikipedia/en/5/5e/Xfiles-FoxMulder-sma mv:naissance "1961"^^xsd:gYear . mv:bm mv:nom "Bill Mulder" ; mv:famille mv:Mulder ; mv:fils mv:fm . mv:ds mv:nom "Dana Scully" ; mv:famille mv:Scully ; mv:travailleavec mv:fm . mv:ws mv:nom "Walter Skinner" ; mv:dirige mv:fm ; mv:dirige mv:ds . Web Sémantique – M1 – 2016-2017 SPARQL 136 Forme d’une requête Chapitre V SPARQL 1 Présentation 2 Forme d’une requête 3 Requêtes plus complexes Web Sémantique – M1 – 2016-2017 Requête simple SPARQL 137 Forme d’une requête Exemple SELECT ?uri FROM <personnes.n3> WHERE { ?uri <http://exemple.fr/mv#famille> <http://exemple.fr/mv#Mulder> . } SELECT : Ce que l’on veut obtenir. FROM : Depuis quelle base. Optionnel, peut être précisé au moment de l’exécution de la requête. WHERE : Conditions de sélection. Exemple | uri | | <http://exemple.fr/mv#bm> | | <http://exemple.fr/mv#fm> | Web Sémantique – M1 – 2016-2017 SPARQL 138 Requête simple Forme d’une requête Simplification de la requête Exemple PREFIX m: <http://exemple.fr/mv#> SELECT ?uri WHERE { ?uri m:famille m:Mulder . } Doit être exécutée en précisant l’URL de la base. Exemple | uri | | m:bm | | m:fm | Web Sémantique – M1 – 2016-2017 SPARQL 139 Requêtes plus complexes Chapitre V SPARQL 1 Présentation 2 Forme d’une requête 3 Requêtes plus complexes Web Sémantique – M1 – 2016-2017 SPARQL 140 Requêtes plus complexes Graphe condition Exemple PREFIX m: <http://exemple.fr/mv#> SELECT ?n ?uri WHERE { ?uri m:nom ?n . ?uri m:pere ?uri2 . ?uri2 m:nom "Bill Mulder" . } Exemple | n | uri | | "Fox Mulder" | m:fm | Web Sémantique – M1 – 2016-2017 SPARQL 141 Requêtes plus complexes Conditions optionnelles Une base RDF est non-structurée (ou semi-structurée), par opposition à une base relationnelle. Le langage de requêtes prend en compte cette caractéristique. Exemple PREFIX m: <http://exemple.fr/mv#> SELECT ?nom ?photo WHERE { ?uri m:nom ?nom . ?uri m:photo ?photo . } . . . ne retourne qu’un seul résultat : les personnes qui ont une photo. Une requête peut être formulée de sorte à prendre en compte des informations optionnelles. Exemple : la liste de toutes les personnes, accompagnées de leurs photos (si photo il y a). Web Sémantique – M1 – 2016-2017 SPARQL 142 Requêtes plus complexes Conditions optionnelles OPTIONAL Exemple PREFIX m: <http://exemple.fr/mv#> SELECT ?nom ?photo WHERE { ?uri m:nom ?nom . OPTIONAL { ?uri m:photo ?photo . } . } Exemple | nom | "Walter Skinner" | "Dana Scully" | "Bill Mulder" | "Fox Mulder" | photo | | | | <http://upload.wik..-small.jpg> | | | | | La condition d’un bloc OPTIONAL peut être plus complexe que dans cet exemple. Il peut y avoir plusieurs blocs OPTIONAL. Web Sémantique – M1 – 2016-2017 SPARQL 143 Requêtes plus complexes Conditions alternatives UNION Exemple PREFIX m: <http://exemple.fr/mv#> SELECT ?nom WHERE { ?uri m:nom ?nom . { { ?uri m:famille m:Mulder . } UNION { ?uri m:famille m:Scully . } } } Exemple | nom | "Dana Scully" | "Bill Mulder" | "Fox Mulder" | | | | Web Sémantique – M1 – 2016-2017 SPARQL 144 Requêtes plus complexes Conditions sur les valeurs FILTER Exemple PREFIX m: <http://exemple.fr/mv#> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> SELECT ?nom WHERE { ?uri m:nom ?nom . ?uri m:naissance ?annee . FILTER ( ?annee >= "1960"^^xsd:gYear && ?annee < "1970"^^xsd:gYear ) } Un bloc FILTER peut être imbriqué dans un bloc OPTIONAL (mais pas l’inverse). Web Sémantique – M1 – 2016-2017 SPARQL 145 Requêtes plus complexes Graphes nommés Dans certains cas, on veut écrire des requêtes portant sur plusieurs graphes (fichiers), en gardant l’origine des informations. Si plusieurs graphes sont donnés dans FROM, l’union de tous les triplets est faite pour former un graphe : l’origine des informations est perdue. Les conditions (WHERE) portent toujours sur le graphe du FROM. D’autres graphes peuvent être introduits dans une requête par FROM NAMED. Ils peuvent alors être utilisés dans le WHERE à l’aide d’un bloc GRAPH. Web Sémantique – M1 – 2016-2017 SPARQL 146 Requêtes plus complexes Graphes nommés Données utilisées dans les exemples Exemple (acteurs.n3) @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix mv: <http://exemple.fr/mv#> . mv:dd mv:nom "David Duchovny" ; mv:role mv:fm ; mv:naissance "1960"^^xsd:gYear . mv:ga mv:nom "Gillian Anderson" ; mv:role mv:ds. Web Sémantique – M1 – 2016-2017 SPARQL 147 Requêtes plus complexes Graphes nommés Exemple PREFIX m: <http://exemple.fr/mv#> SELECT ?nompers ?nomacteur FROM <personnes.n3> FROM NAMED <acteurs.n3> WHERE { ?uripers m:nom ?nompers . GRAPH <acteurs.n3> { ?uriacteur m:role ?uripers . ?uriacteur m:nom ?nomacteur . } } Exemple | nompers | nomacteur | | "Dana Scully" | "Gillian Anderson" | | "Fox Mulder" | "David Duchovny" | Web Sémantique – M1 – 2016-2017 SPARQL 148 Requêtes plus complexes Graphe nommé variable Chercher dans plusieurs graphes, utiliser le nom d’un graphe nommé comme une variable. Exemple SELECT ?g ?nom ?date FROM NAMED <personnes.n3> FROM NAMED <acteurs.n3> WHERE { GRAPH ?g { ?uri m:nom ?nom . ?uri m:naissance ?date . } } Exemple | g | nom | date | <personnes.n3> | "Fox Mulder" | "1961"^^<http.| | <acteurs.n3> | "David Duchovny" | "1960"^^<http.| Web Sémantique – M1 – 2016-2017 SPARQL | 149 Requêtes plus complexes Tri ORDER BY / LIMIT Exemple PREFIX m: <http://exemple.fr/mv#> SELECT ?nom WHERE { ?uri m:nom ?nom } ORDER BY ?nom LIMIT 3 ORDER BY DESC(?nom) pour un tri dans l’ordre décroissant. Plus d’informations ? Le site du W3C : http://www.w3.org/TR/rdf-sparql-query/ Des exemples ? interroger Wikipedia http://wiki.dbpedia.org/OnlineAccess Ex : Joueurs de football qui ont joué comme gardien dans un club qui a un stade de plus de 40000 places et qui sont nés dans un pays de plus de 10 millions d’habitants. Web Sémantique – M1 – 2016-2017 SPARQL 150