sparql_1.1
TRANSCRIPT
1
Faculté des Sciences Dhar El Mahraz-Fès
SPARQL 1.1
• Yassine AKHIAT• El Yazid AKACHAR
Master :Information Systems ,Network & Multimédia
2
Plan
Introduction
SPARQL 1.0
SPARQL 1.1 Description
Motivation
Nouveautés
Demonstration
Conclusion
3
INTRODUCTION
4
SPARQL 1.0
SPARQL est composé de 3 parties :
SPARQL Query Language
SPARQL QUERY RESULTS
SPARQL PROTOCOL FOR RDF
5
SPARQL 1.0
LIMITATION
Read Only : interrogation mais pas de mise a jour
Nécessite de passer par des langages externe
6
SPARQL 1.1
DESCRIPTION
SPARQL 1.1 – recommandation récente du W3C
SPARQL 1.1 – en 21-03-2013
SPARQL 1.1 – interroger des banques de triplets
RDF
7
SPARQL 1.1
NOUVEAUTÉS SPARQL 1.1 QUERY
Projection (project Exption)
Agrégation (Aggregates)
Requetés imbriquées (Subqueris)
Négation
Chemins (Property-path)
Librairie de fonctions (Function Library)
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
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
DATARESULTAT
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
SPARQL 1.1:
COUNT
SUM
MIN
MAX
AVG
SAMPLE
ETC …
Combinés avec les projections précédentes
SPARQL 1.1 - AGGREGATION
12
SPARQL 1.1 - AGGREGATION
PREFIX humans:<http://www.inria.fr/2007/09/11/humans#> SELECT (COUNT( ?x) as ?count) WHERE { ?y humans:age ?x }
count
8
COUNT :
Nombre d’éléments associés a une expression
<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
13
SPARQL 1.1 - AGGREGATION
PREFIX humans:<http://www.inria.fr/2007/09/11/humans#>SELECT (AVG(?x) AS ?moyenne) WHERE { ?y humans:age ?x }
moyenne
52.44
AVG :
moyenne des valeurs associées a une expression
<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
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
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
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
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>
RESULTATDATA
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
19
SPARQL 1.1 - FONCTIONS
PREFIX humans: <http://www.inria.fr/2007/09/11/humans#>
SELECT (CONCAT(?x,?name) AS ?concatination)
WHERE {
?y humans:age ?x
?y humans:name ?name.
}
<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 concatination
John37
Mark14
Flora95
Lucas12
Gaston102
William42
Karl36
Pierre71
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
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
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
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
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
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
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
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
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
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
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
31
SPARQL 1.1 - PROTOCOL
Terminologies
SPARQL Protocol client
SPARQL Protocol service
SPARQL endpoint
SPARQL Protocol operation
RDF Dataset
32
SPARQL client SPARQL engine
RDF
Store
SPARQL 1.1 - PROTOCOL
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.
34
QUESTIONS :
Merci pour votre
attention
^_^35