Académique Documents
Professionnel Documents
Culture Documents
Hicham BEHJA
Intro
Requête de triplets
2
Intro
SPARQL = SPARQL Protocol and RDF Query
Language
SPARQL est composé de 3 parties :
1. Langage de requêtes avec syntaxe triplets
simplifiée
SPARQL QUERY LANGUAGE FOR RDF W3C REC 15 JAN. 2008
3
Requête de triplets
Langage de requête sur des données RDF
– Appariements de graphes / projection
– Principe imitant SQL (clauses):
Select: clause sélectionnant les valeurs à retourner
From : identifie la source de données
Where: un pattern de triplets à matcher
Filter: des contraintes exprimées avec des fonctions
de tests.
4
Requête de triplets
Deux formes possibles pour présentation
résultats:
– le binding i.e. la liste des valeurs sélectionnées
pour chaque réponse rencontrée;
(format XML stable ; bien avec XSLT)
– les sous graphes des réponses rencontrées en
RDF
(format RDF/XML ; bien pour applications
utilisant RDF)
5
Requête de triplets
Requête SPARQL
– PREFIX
SELECT
FROM
WHERE {
FILTER, OPTIONAL, UNION
}
ORDER BY
LIMIT
OFFSET
6
WHERE
La clause where est une conjonction de
triplets :
{ ?x rdf:type ex:Person
?x ex:name ?name }
7
PREFIX
PREFIX
– permet de déclarer le schéma à utiliser dans la
requête.
8
Exemple
Exemples : sélectionner les personne et leur
nom
9
Exemple
Exemple : résultat en XML
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#" >
<head>
<variable name="person"/>
<variable name="name"/>
</head>
<results ordered="false" distinct="false">
<result>
<binding name="person">
<uri>http://inria.fr/schema#fg</uri>
</binding>
<binding name="name">
<literal>gandon</literal>
</binding>
</result>
<result> ...
10
FILTER
La clause FILTER permet d’ajouter des
contraintes sur le graphe de patterns (motifs) à
matcher .
Exemple : personne âgé de plus de 17 ans
– PREFIX ex: <http://inria.fr/schema#>
SELECT ?person ?name
WHERE {
?person rdf:type ex:Person
?person ex:name ?name .
?person ex:age ?age .
FILTER (xsd:integer(?age) > 17)
}
Noter le cast de age.
11
FILTER
Opérateurs de FILTER:
– Comparateurs: <, >, =, <=, >=, !=
– Opérateurs: + * - /
– Tests sur les binding des variables:
isURI(?x), isBlank(?x), isLiteral(?x), bound(?x)
– Filtres à base d'expressions régulières regex(?x, "A.*")
– Accès aux attributs/valeur lang(), datatype(), str()
– Fonctions de (re-)typage (casting) xsd:integer(?x)
– Fonctions externes / extensions
– Combinaisons &&, ||, !
12
OPTIONAL
La clause OPTIONAL permet d’indiquer
une partie optionnelle dans le graphe de
patterns à matcher.
Exemple : sélectionner l’âge si disponible
– PREFIX ex: <http://inria.fr/schema#>
SELECT ?person ?name ?age
WHERE {
?person rdf:type ex:Person
?person ex:name ?name .
OPTIONAL { ?person ex:age ?age }
}
13
UNION
La clause UNION permet de définir des
patterns alternatifs dans une requête.
Exemple :
– PREFIX ex: <http://inria.fr/schema#>
SELECT ?name
WHERE {
?person ex:name ?name .
{
{ ?person rdf:type ex:Adult }
UNION
{ ?person ex:age ?age
FILTER (?age > “17”) }
}
}
14
ORDER BY, LIMIT, OFFSET
ORDER BY : permet de trier le résultat
LIMIT : pour limiter le nombre
OFFSET : le rang du premier résultat
Exemple : résultats de 21 à 40 par ordre de nom :
– PREFIX ex: <http://inria.fr/schema#>
SELECT ?person ?name
WHERE {
?person rdf:type ex:Person
?person ex:name ?name .
}
ORDER BY ?name
LIMIT 20
OFFSET 20
15
UNBOUND
BOUND est utilisé pour tester si une variable
n'est pas lié (surtout pour la négation).
Exemple : Personnes qui ne connaissent pas
Java
– PREFIX ex: <http://inria.fr/schema#>
SELECT ?name
WHERE {
?person ex:name ?name .
?person ex:knows ?x
FILTER ( ?x != "Java" )
}
16
UNBOUND
fabien ex:knows "Java”
fabien ex:knows "C++”
Personnes qui ne connaissent pas Java
– PREFIX ex: <http://inria.fr/schema#>
SELECT ?name
WHERE {
?person ex:name ?name .
OPTIONAL { ?person ex:knows ?x
FILTER ( ?x = "Java" ) }
FILTER ( ! bound(?x) )
}
17
ASK
La clause ASK permet de vérifier si il y’a au
moins un résultat. Réponse « true » ou
« false ».
Exemple : y’a-t-il une personne âgé de plus de
17 ans
– PREFIX ex: <http://inria.fr/schema#>
ASK
{
?person ex:age ?age
FILTER (?age > “17”)
}
18
CONSTRUCT
La clause CONSTRUCT permet de retourner
un graphe RDF pour chaque résultat.
Exemple :
– PREFIX ex: <http://inria.fr/schema#>
CONSTRUCT
{
?person rdf:type ex:Adult
}
WHERE
{
?person ex:age ?age
FILTER (?age > 17)
}
19
Syntaxe simplifiée
Les triplets ayant une racine commune
peuvent être simplifiés ainsi que la relation
de typage:
SELECT ?nom ?prenom
SELECT ?nom ?prenom
WHERE {
WHERE {
?x a Person; ?x rdf:type Person .
nom ?nom ; ?x nom ?nom .
prenom ?prenom ;
auteur ?y . }
?x prenom ?prenom .
?x auteur ?y .
}
20
Syntaxe simplifiée
Plusieurs valeurs
?x prenom "Fabien", "Lucien" .
Resource anonyme dans pattern requête
[prenom "Fabien"] ou [] prenom "Fabien"
Exemple :
– ?x a Document; auteur [nom "Lo"] .
21