8. 8
SPARQL 1.1 - PROJECTION
As
Assignation et création de nouvelles valeurs
Utilisable avec les agrégats, fonctions mathématiques
et librairie de fonctions
9. 9
SPARQL 1.1 - PROJECTION
<Person rdf:ID="John">
<age rdf:datatype="&xsd;integer" >37</age>
</Person>
<Person rdf:ID="Mark">
<age rdf:datatype="&xsd;integer" >14</age>
</Person>
<Woman rdf:ID="Flora">
<age rdf:datatype="&xsd;integer" >95</age>
</Woman>
<Man rdf:ID="Lucas">
<age rdf:datatype="&xsd;integer" >12</age>
</Man>
PREFIX humans: <http://www.inria.fr/2007/09/11/humans#>
SELECT ?name (?x AS ?AGE)
where {
?name humans:age ?x
}
name AGE
John 37
Mark 14
Flora 95
Lucas 12
Gaston 102
William 42
Karl 36
Pierre 71
DATA
RESULTAT
10. 10
SPARQL 1.1 - AGGREGATION
SPARQL 1.0:
Besoin de passer par un script externe pour les
fonctions agrégats « classiques » et disponibles en SQL
Compter un nombre de résultats
Trouver une valeur moyenne
Prendre une valeur aléatoire
11. 11
SPARQL 1.1:
COUNT
SUM
MIN
MAX
AVG
SAMPLE
ETC …
Combinés avec les projections précédentes
SPARQL 1.1 - AGGREGATION
14. SPARQL 1.1 - SUBQUIRIES
SPARQL 1.0:
Necessaire de passer par un language extern
SPARQL 1.1:
Il est possible d'imbriquer les requêtes les unes dans les autres.
Mais , il faut faire attention à la portée des variables
Exemple
14
PREFIX humans: <http://www.inria.fr/2007/09/11/humans#>
SELECT ?name (?y AS ?Amis)
WHERE {
?x humans:name ?name.
{ SELECT ?y
WHERE {
?x humans:hasFriend ?y
} } }
15. 15
SPARQL 1.0:
FILTRE + BOUND
SPARQL 1.1:
MINUS et NOT EXISTS
SPARQL 1.1 - NÉGATION
PREFIX tp: <http://www.inria.fr/2007/09/11/humans#>
SELECT ?x ?y
WHERE {
?x rdf:type tp:Man.
optional {?x tp:hasChild ?y}
FILTRE (!BOUND (?y))
}
16. 16
SPARQL 1.1:
Simplifier la négation en SPARQL 1.1
Identifier les patrons de requête non existants
Supprimer certaines valeurs des résultats (Evaluer le
MINUS et le soustraire des résultats)
SPARQL 1.1 - NÉGATION
17. 17
SPARQL 1.1 - NEGATION
PREFIX humans: <http://www.inria.fr/2007/09/11/humans#>
SELECT ?name
WHERE {
?name humans:age ?y.
MINUS { ?name humans:age 37
}
}
name
Mark
Flora
Lucas
Gaston
William
Karl
Pierre
<Person rdf:ID="John">
<age rdf:datatype="&xsd;integer" >37</age>
</Person>
<Person rdf:ID="Mark">
<age rdf:datatype="&xsd;integer" >14</age>
</Person>
<Woman rdf:ID="Flora">
<age rdf:datatype="&xsd;integer" >95</age>
</Woman>
<Man rdf:ID="Lucas">
<age rdf:datatype="&xsd;integer" >12</age>
</Man>
RESULTAT
DATA
18. 18
SPARQL 1.1:
Intégrer les fonctions utilisés par les différents intégrateurs
Utilisés fréquemment mais non standardisés en SPARQL 1.0
En supplément des fonctions habituelles, et de nouvelles
STRLEN : longueur d’une chaine
CONCAT : concatenation
COALESCE : première expression sans erreur
CONTAINS : sous-chaine de caractère
SPARQL 1.1 - FONCTIONS
20. 20
SPARQL 1.1:
Un chemin est une voie possible entre deux nœuds dans un
graphe
Ce système est basé sur les expressions régulières.
Exemples
Identifier les amis d’un ami, et les amis de leurs amis,
quelque soit la distance
SPARQL 1.1 - CHEMINS
21. 21
SPARQL 1.1 - CHEMINS
Syntaxe description
IRI une IRI ou un nom préfixé, un chemin de longueur unitaire
^elt chemin inverse (de l'objet au sujet)
elt{,n} entre 0 et n occurrences de elt
elt{n,} n occurrences ou plus de elt
elt{n} exactement n occurrences de elt
elt{n,m} un chemin entre n et m occurrences de elt
elt? un chemin de zéro ou un elt
elt+ un chemin d'une ou plusieurs occurrences de elt
elt* un chemin de zéro ou plusieurs occurrences de elt
elt1|elt2 une voie alternative de elt1 ou elt2 (toutes les possibilités sont
essayées) ;
elt1 / elt2 une séquence de chemin de elt1, suivie par elt2
(elt) un groupe de chemin elt, des crochets de contrôle prioritaire
22. 22
Alternatives
Simplifier l’union :
Triples utilisant un prédicat parmi plusieurs
SPARQL 1.1 - CHEMINS
PREFIX humans: <http://www.inria.fr/2007/09/11/humans#>
select ?x
where
{
?y (humans:name|humans:age) ?x
}
23. 23
Inverse
Simplifier les requetés bidirectionnelles
Simulation de la symétrie
Exemple
SPARQL 1.1 - CHEMINS
PREFIX humans: <http://www.inria.fr/2007/09/11/humans#>
select ?x
WHERE {
?x (^humans:age) ?y.
}
y
37
14
95
12
102
42
36
71
24. 24
Séquences
Simplifier les imbrications
A suivi de B, suivi de C …
Exemple
SPARQL 1.1 - CHEMINS
PREFIX humans: <http://www.inria.fr/2007/09/11/humans#>
SELECT ?y ?x
WHERE {
?y humans:name "Mark"
?y humans:hasFather/ humans:name ?x
}
25. 25
SPARQL 1.0:
Read-only: Interrogation mais pas de mise a jour
Nécessité de passer par des langage externes
SPARQL 1.1:
Deux types d'opérations ont été définis :
les opérations sur les graphes (graph management)
les opérations sur les données au sein de graphes (graph
update)
SPARQL 1.1 - UPDATE
26. 26
SPARQL 1.1 - UPDATE
SPARQL 1.1:
Les opérations possibles sur les graphes sont :
CREATE & DROP
CLEAR & LOAD
Pour les données et les triplets :
INSERT DATA & DELETE DATA
INSERT & DELETE
27. 27
SPARQL 1.1 - UPDATE
SPARQL Update Language Statements
INSERT DATA { triples }
DELETE DATA {triples}
[ DELETE { template } ] [ INSERT { template } ] WHERE {
pattern }
LOAD <uri> [ INTO GRAPH <uri> ]
CLEAR GRAPH <uri>
CREATE [ SILENT ] GRAPH <uri>
DROP [ SILENT ] (GRAPH <uri> | DEFAULT | NAMED | ALL )
28. 28
SPARQL 1.1 - UPDATE
Suppression
PREFIX humans: <http://www.inria.fr/2007/09/11/humans#>
DELETE DATA
{
<http://www.inria.fr/2007/09/11/humans-instances#John> humans:age 37
}
PREFIX humans: <http://www.inria.fr/2007/09/11/humans#>
INSERT DATA
{
<http://www.inria.fr/2007/09/11/humans-instances#John>
humans:age 89
}
name AGE
John 89
Mark 14
Flora 95
Lucas 12
Gaston 102
William 42
Karl 36
Pierre 71
Insertion
29. 29
SPARQL 1.1 - UPDATE
DELETE / INSERT
PREFIX humans: <http://www.inria.fr/2007/09/11/humans#>
DELETE
where
{
?x humans:age 37
}
PREFIX humans: <http://www.inria.fr/2007/09/11/humans#>
INSERT {
?x humans:age 1000 .
}
where {
? x humans:name "Alice"
}
name AGE
John 89
Alice 1000
Flora 95
Lucas 12
Karl 36
30. 30
SPARQL 1.1 - PROTOCOL
Définition
Le protocole SPARQL est un moyen de transmettre des requêtes
et des mises à jour SPARQL des clients aux processeurs SPARQL
Le protocole SPARQL se compose de deux opérations HTTP :
Query opération
Update opération
33. 33
CONCLUSION
SPARQL permet de découvrir la structure d'une base de données.
Cela servira à l'avenir à des agents (machines) sur le Web qui
pourront ainsi découvrir les données disponibles à travers le Web
pour répondre à des questions complexes.
SPARQL ouvre ainsi les portes au Web des données (Linked
Data), qui permettra à l'homme et à la machine de mieux
interpréter les informations à travers le Web, sans service
intermédiaire.