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

Documents pareils