Master 2 Informatique - DAC - ASWS 2015/2016

Transcription

Master 2 Informatique - DAC - ASWS 2015/2016
ASWS – 5I802
Apprentissage Symbolique et Web Sémantique
Master M2 DAC
Bernd Amann
UPMC
19 octobre 2015
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
239 / 375
Cours 5
1
SPARQL : Sémantique formelle
2
Évaluation de requêtes SPARQL
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
240 / 375
SPARQL : Sémantique formelle
Outline
1
SPARQL : Sémantique formelle
2
Évaluation de requêtes SPARQL
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
241 / 375
SPARQL : Sémantique formelle
Sémantique de SPARQL
Objectif
Définir précisément la sémantique de SPARQL :
détecter des problèmes sémantiques
définir des techniques d’optimisation
évaluer la complexité du langage
Approche
La sémantique est définie par une algèbre sur des ensembles de
mappings de variables :
jointure, union, différence, jointure externe
similaire à l’algèbre (ensemble de mapping = table de n-uplet)
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
242 / 375
SPARQL : Sémantique formelle
Mappings de variables
Mapping de variables ν
ν:V →T :
V : ensemble de variables dans la requête
T = B ∪ U ∪ L ensemble de termes.
Par extension, pour chaque motif de triplet t dans la requête, ν(t) est
le triplet qu’on obtient en remplaçant chaque variable v ∈ var (t) par
son mapping ν(v ).
Compatibilité de Mapping de variables
Deux mapping ν1 et ν2 sont compatibles si ν1 ∪ ν2 est aussi un
mapping, i.e. pour toutes les variables x ∈ dom(ν1 ) ∩ dom(ν2 ),
ν1 (x) = ν2 (x)
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
243 / 375
SPARQL : Sémantique formelle
Exemple
Turtle bibliosem
@prefix :
< h t t p : / / example . org / ns#> .
: book1 : t i t l e
"SPARQL T u t o r i a l " ; : p r i c e 42 ; : e d i t o r : j e n a .
: book2 : t i t l e
" The Semantic Web" ; : p r i c e 23 .
: book3 : t i t l e
"RDF Framework " ; : p r i x
53 .
: book4 : t i t l e
"SPARQL pour l e s Nuls " ; : e d i t o r : p o u r l e s n u l s .
: p o u r l e s n u l s : address " P a r i s " .
Requête optfilter
PREFIX : < h t t p : / / example . org / ns#>
SELECT ?x ? e d i t o r ? p r i c e
FROM < b i b l i o s e m . t t l >
WHERE { ?x : e d i t o r ? e d i t o r .
OPTIONAL { ?x : p r i c e ? p r i c e }
FILTER ( ! bound ( ? p r i c e ) ) }
B. Amann (UPMC)
Résultat de optfilter
--------------------------------| x
| editor
| price |
=================================
| :book4 | :pourlesnuls |
|
---------------------------------
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
244 / 375
SPARQL : Sémantique formelle
Motifs et mapping de variables
L’interprétation d’un motif de graphe sur un graphe RDF est un ensemble de mappings
de variables.
Requête optfilter
PREFIX : < h t t p : / / example . org / ns#>
SELECT ?x ? e d i t o r ? p r i c e
FROM < b i b l i o s e m . t t l >
WHERE { ?x : e d i t o r ? e d i t o r .
OPTIONAL { ?x : p r i c e ? p r i c e }
FILTER ( ! bound ( ? p r i c e ) ) }
Ensemble de mappings de variables pour les deux motifs de triplets :
ν11
ν21
ν12
ν22
= {(?x, : book 1), (?editor , : jena)}
= {(?x, : book 1), (?price, 42)}
= {(?x, : book 2), (?price, 23)}
= {(?x, : book 4), (?editor , : pourlesnuls)}
L’ensemble {ν22 } est l’unique solution de motif pour la requête.
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
245 / 375
SPARQL : Sémantique formelle
Opérations sur des ensembles de mappings
Soient deux ensembles de mapping Ω1 et Ω2 . On définit les opérations
(algèbre) suivantes :
Jointure :
Ω1 1 Ω2 = {ν1 ∪ ν2 |ν1 ∈ Ω1 et ν2 ∈ Ω2 sont des mappings compatibles}
Union :
Ω1 ∪ Ω2 = {ν|ν ∈ Ω1 ou ν ∈ Ω2 }
Différence :
Ω1 \ Ω2 = {ν1 |ν1 ∈ Ω1 , 6 ∃ν2 ∈ Ω2 : ν1 et ν2 sont compatibles}
Jointure externe gauche (left outer join) :
Ω1 o Ω2 = (Ω1 1 Ω2 ) ∪ (Ω1 \ Ω2 )
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
246 / 375
SPARQL : Sémantique formelle
Exemple : mapping de variables
Ω1 = {ν11 , ν12 } :
ν11 = {( ?x, ’ :book1’), ( ?editor, :jena) }
ν12 = {( ?x, ’ :book4’), ( ?editor, :pourlesnuls)}
Ω2 = {ν21 , ν22 } :
ν21 = {( ?x, ’ :book1’), ( ?price, 42)}
ν22 = {( ?x, ’ :book2’), ( ?price, 23)}
Opérations sur Ω1 et Ω2 :
Ω1 1 Ω2 = {ν11 ∪ ν21 }
Ω1 ∪ Ω2 = {ν11 , ν12 , ν21 , ν22 }
Ω1 \ Ω2 = {ν12 }
Ω2 \ Ω1 = {ν22 }
Ω1 o Ω2 = (Ω1 1 Ω2 ) ∪ (Ω1 \ Ω2 ) = {ν11 ∪ ν21 , ν12 }
Ω2 o Ω1 = (Ω1 1 Ω2 ) ∪ (Ω2 \ Ω1 ) = {ν11 ∪ ν21 , ν22 }
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
247 / 375
SPARQL : Sémantique formelle
Interprétation algébrique d’un motif de graphe P
L’interprétation d’un motif de graphe P sur un graphe RDF D est un
ensemble de mappings noté JPKD
J◦KD est défini récursivement :
JtKD = {ν|dom(ν) = var (t) et ν(t) ∈ D} : l’ensemble de mappings
générés par un triplet t dans D.
J(P1 . P2 )KD = JP1 KD 1 JP2 KD
J(P1 OPTIONAL P2 )KD = JP1 KD o JP2 KD
J(P1 UNION P2 )KD = JP1 KD ∪ JP2 KD
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
248 / 375
SPARQL : Sémantique formelle
Exemple : Interprétation algébrique de motifs
J ?x :editor ?editor KD = {ν11 , ν12 } :
ν11 = {( ?x, ’ :book1’), ( ?editor, :jena) }
ν12 = {( ?x, ’ :book4’), ( ?editor, :pourlesnuls)}
J ?x :price ?price KD = {ν21 , ν22 } :
ν21 = {( ?x, ’ :book1’), ( ?price, 42)}
ν22 = {( ?x, ’ :book2’), ( ?price, 23)}
J ?x :editor ?editor . OPTIONAL { ?x :price ?price }KD :
J ?x :editor ?editor KD o J ?x :price ?price KD
J ?x :editor ?editor KD 1 J ?x :price ?price KD
∪ J ?x :editor ?editor KD \ J ?x :price ?price KD
({ν11 , ν12 } 1 {ν21 , ν22 }) ∪ ({ν11 , ν12 } \ {ν21 , ν22 })
{ν11 ∪ ν21 , ν12 }
{ {( ?x, ’ :book1’), ( ?editor, :jena), ( ?price, 42)},
{( ?x, ’ :book4’), ( ?editor, :pourlesnuls)} }
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
249 / 375
SPARQL : Sémantique formelle
Interprétation d’un filtre
Sémantique d’un filtre P FILTER R
JP FILTER (R)KD = {ν|ν ∈ JPKD et ν |= R}
Satisfaction ν |= R
Un mapping ν satisfait R, dénoté ν |= R, si :
1
R est bound(?X ) et ?X ∈ dom(ν) ;
2
R est ?X = c, ?X ∈ dom(ν) et ν(?X ) = c ;
3
R est ?X =?Y , ?X ∈ dom(ν), ?Y ∈ dom(ν) et ν(?X ) = ν(?Y ) ;
4
R est (¬R1), R1 est une condition, et ν 6|= R1 ;
5
R est (R1 ∨ R2), R1 et R2 sont des conditions et ν |= R1 ou ν |= R2 ;
6
R est (R1 ∧ R2), R1 et R2 sont des conditions et ν |= R1 et ν |= R2.
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
250 / 375
SPARQL : Sémantique formelle
Quelques remarques sur la complexité de SPARQL
[PAG06] a montré que les opérateurs UNION et OPTIONAL
augmentent considérablement la complexité du langage :
SPARQL.,FILTER (motifs P avec . et FILTER) : O(|P| × |D|)
SPARQL.,FILTER,UNION : NP-complet (vérification en temps
polynomial sur une machine de Turing non-deterministe,
algorithmes de recherche généralement en temps exponentielle)
SPARQL.,FILTER,OPTIONAL : PSPACE-complet (vérification en
espace polynomial sur une machine de Turing déterministe)
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
251 / 375
SPARQL : Sémantique formelle
Bibliographie
[GHM04] C. Guttierez, C. Hurtado, A. Mendelzon, Foundations of
Semantic Web Databases, PODS 2004
[RDFSEM04] RDF Semantics, W3C Recommendation 10 February
2004, http ://www.w3.org/TR/rdf-mt/
[PAG06] Jorge Perez, Marcelo Arenas, Claudio Gutierrez, Semantics
and Complexity of SPARQL, http ://arxiv.org/abs/cs.DB/0605124, Mai
2006
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
252 / 375
Évaluation de requêtes SPARQL
Outline
1
SPARQL : Sémantique formelle
2
Évaluation de requêtes SPARQL
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
253 / 375
Évaluation de requêtes SPARQL
Plans d’exécution SPARQL
2 - Évaluation de requêtes SPARQL
Plans d’exécution SPARQL
Réécriture et normalisation
Optimisation de requêtes SPARQL
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
254 / 375
Évaluation de requêtes SPARQL
Plans d’exécution SPARQL
Exemple : Plans ARQ-SPARL
Algèbre pour l’évaluation de requêtes SPARQL :
traduction de l’expression SPARQL
optimisation logique
optimisation physique
évaluation
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
255 / 375
Évaluation de requêtes SPARQL
Plans d’exécution SPARQL
Motif simple = triple
Requête ex1
PREFIX : < h t t p : / / asws . upmc . f r / exemples# >
SELECT ? t i t l e
FROM <ex1 . t t l >
WHERE { : book1 : t i t l e ? t i t l e . }
Expression algébrique de ex1
( p r e f i x ( ( : < h t t p : / / asws . upmc . f r / exemples# > ) )
( project ( ? t i t l e )
( bgp ( t r i p l e : book1 : t i t l e ? t i t l e ) ) ) )
triple : motif de triplet
bgp : basic graph pattern
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
256 / 375
Évaluation de requêtes SPARQL
Plans d’exécution SPARQL
Motifs simples (AND)
Expression algébrique de couleur1
( p r e f i x ( ( : < h t t p : / / c o l o r s . org / ns# > ) )
( distinct
( p r o j e c t ( ?a ?b ?c ?d ? f ?g )
( bgp
( t r i p l e ?a : e ?b )
( t r i p l e ?a : e ?c )
Requête couleur1
( t r i p l e ?a : e ?d )
PREFIX : < h t t p : / / c o l o r s . org / ns#>
( t r i p l e ?a : e ? f )
SELECT DISTINCT ?a ?b ?c ?d ? f ?g
( t r i p l e ?a : e ?g )
FROM < c o u l e u r . t t l >
( t r i p l e ?b : e ?a )
WHERE {
( t r i p l e ?b : e ?c )
?a : e ?b ; : e ?c ; : e ?d ; : e ? f ; : e ?g . ( t r i p l e ?b : e ?d )
?b : e ?a ; : e ?c ; : e ?d .
( t r i p l e ?c : e ?a )
?c : e ?a ; : e ?b ; : e ? f ; : e ?g .
( t r i p l e ?c : e ?b )
?d : e ?a ; : e ?b ; : e ?g .
( t r i p l e ?c : e ? f )
? f : e ?a ; : e ?c .
( t r i p l e ?c : e ?g )
?g : e ?a ; : e ?c ; : e ?d .
( t r i p l e ?d : e ?a )
}
( t r i p l e ?d : e ?b )
( t r i p l e ?d : e ?g )
( t r i p l e ? f : e ?a )
( t r i p l e ? f : e ?c )
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
257 / 375
Évaluation de requêtes SPARQL
Plans d’exécution SPARQL
Union = union
Requête construct
PREFIX dc : < h t t p : / / p u r l . org / dc / elements / 1 . 1 / >
PREFIX ns : < h t t p : / / asws . org / ns#>
CONSTRUCT { ?x ns : p r i x ? p r i c e ;
ns : t i t r e ? t i t l e . }
FROM <ex5 . t t l >
WHERE { { ?x ns : p r i c e ? p r i c e . }
UNION
{ ?x dc : t i t l e ? t i t l e . } }
Expression algébrique de construct
( p r e f i x ( ( dc : < h t t p : / / p u r l . org / dc / elements / 1 . 1 / > )
( ns : < h t t p : / / asws . org / ns# > ) )
( union
( bgp ( t r i p l e ?x ns : p r i c e ? p r i c e ) )
( bgp ( t r i p l e ?x dc : t i t l e ? t i t l e ) ) ) )
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
258 / 375
Évaluation de requêtes SPARQL
Plans d’exécution SPARQL
OPTIONAL = leftjoin
Requête optional10
PREFIX : < h t t p : / / example . org / ns#>
SELECT ?x ? t i t l e ?y ?address
FROM < b i b l i o s e m . t t l >
WHERE { ?x : t i t l e ? t i t l e .
OPTIONAL { ?x : e d i t o r
: notexists
OPTIONAL { ?y : address ?address } } }
Expression algébrique de optional10
( p r e f i x ( ( : < h t t p : / / example . org / ns# > ) )
( p r o j e c t ( ?x ? t i t l e ?y ?address )
( leftjoin
( bgp ( t r i p l e ?x : t i t l e ? t i t l e ) )
( leftjoin
( bgp ( t r i p l e ?x : e d i t o r : n o t e x i s t s ) )
( bgp ( t r i p l e ?y : address ?address ) ) ) ) ) )
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
259 / 375
Évaluation de requêtes SPARQL
Plans d’exécution SPARQL
Graphes nommés = graph
Requête ex10
PREFIX
PREFIX
dc :
ns :
< h t t p : / / p u r l . org / dc / elements / 1 . 1 / >
< h t t p : / / asws . org / ns#>
SELECT ?a ?b ? t i t l e ? p r i c e
FROM NAMED <ex5 . t t l >
FROM NAMED <ex6 . t t l >
{ { GRAPH ?b { ?x dc : t i t l e ? t i t l e . } }
OPTIONAL
{ GRAPH ?a { ?x ns : p r i c e ? p r i c e . } } }
Expression algébrique de ex10
( p r e f i x ( ( dc : < h t t p : / / p u r l . org / dc / elements / 1 . 1 / > )
( ns : < h t t p : / / asws . org / ns# > ) )
( p r o j e c t ( ?a ?b ? t i t l e ? p r i c e )
( leftjoin
( graph ?b
( bgp ( t r i p l e ?x dc : t i t l e ? t i t l e ) ) )
( graph ?a
( bgp ( t r i p l e ?x ns : p r i c e ? p r i c e ) ) ) ) ) )
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
260 / 375
Évaluation de requêtes SPARQL
Plans d’exécution SPARQL
Expressions de chemins = path
Requête ex12
PREFIX f o a f :
< h t t p : / / xmlns . com / f o a f / 0 . 1 / >
SELECT ?xn ?yn
FROM <ex11 . t t l >
WHERE { ?x f o a f : name ?xn ;
( f o a f : knows+ | ^ f o a f : knows +)
[ f o a f : name ?yn ] . }
Expression algébrique de ex12
( p r e f i x ( ( f o a f : < h t t p : / / xmlns . com / f o a f / 0 . 1 / > ) )
( p r o j e c t ( ?xn ?yn )
( sequence
( bgp ( t r i p l e ?x f o a f : name ?xn ) )
( path ?x ( a l t ( path+ f o a f : knows ) ( r e v e r s e ( path+ f o a f : knows ) ) ) ??0 )
( bgp ( t r i p l e ??0 f o a f : name ?yn ) ) ) ) )
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
261 / 375
Évaluation de requêtes SPARQL
Réécriture et normalisation
2 - Évaluation de requêtes SPARQL
Plans d’exécution SPARQL
Réécriture et normalisation
Optimisation de requêtes SPARQL
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
262 / 375
Évaluation de requêtes SPARQL
Réécriture et normalisation
Réécritures et normalisation
Règles de réécriture
. et UNION sont associatifs et commutatifs.
(P1 . (P2 UNION P3)) ≡((P1 . P2) UNION (P1 . P3)).
(P1 OPTIONAL (P2 UNION P3)) ≡((P1 OPTIONAL P2) UNION (P1
OPTIONAL P3)).
((P1 UNION P2) OPTIONAL P3) ≡((P1 OPTIONAL P3) UNION (P2
OPTIONAL P3)).
((P1 UNION P2) FILTER R) ≡((P1 FILTER R) UNION (P2 FILTER R)).
Forme normale (disjonctive)
Tous les motifs de graphe P peuvent être réécrits en une union de motifs sans
union :
P≡
[
Pi
i
où Pi sont sans sans union.
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
263 / 375
Évaluation de requêtes SPARQL
Réécriture et normalisation
UNION
Turtle couleur
Expression algébrique de couleur4
Requête couleur4
PREFIX : < h t t p : / / c o l o r s . org / ns#>
SELECT DISTINCT ?a ?b ?c
FROM < c o u l e u r . t t l >
WHERE {
?a : e ?b . ?b : e ?c
OPTIONAL { { ?a : e ?c }
UNION
{ ?a : e ?d }
UNION
{ ?b : e ?d } }
}
B. Amann (UPMC)
( p r e f i x ( ( : < h t t p : / / c o l o r s . org / ns# > ) )
( distinct
( p r o j e c t ( ?a ?b ?c )
( leftjoin
( bgp
( t r i p l e ?a : e ?b )
( t r i p l e ?b : e ?c )
)
( union
( union
( bgp ( t r i p l e ?a : e ?c ) )
( bgp ( t r i p l e ?a : e ?d ) ) )
( bgp ( t r i p l e ?b : e ?d ) ) ) ) ) ) )
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
264 / 375
Évaluation de requêtes SPARQL
Réécriture et normalisation
UNION - Normalisation
Requête couleur4n2
PREFIX : < h t t p : / / c o l o r s . org / ns#>
SELECT DISTINCT ?a ?b ?c
FROM < c o u l e u r . t t l >
WHERE {
{ ?a : e ?b . ?b : e ?c OPTIONAL { ?a : e ?c } }
UNION
{ ?a : e ?b . ?b : e ?c OPTIONAL { ?a : e ?d } }
UNION
{ ?a : e ?b . ?b : e ?c OPTIONAL { ?b : e ?d } }
}
Résultat de couleur4n2
---------------------------| a
| b
| c
|
============================
| :vert | :bleu | :vert |
| :vert | :bleu | :rouge |
| :vert | :rouge | :vert |
| :vert | :rouge | :bleu |
| :bleu | :vert | :bleu |
| :bleu | :vert | :rouge |
| :bleu | :rouge | :vert |
| :bleu | :rouge | :bleu |
| :rouge | :vert | :bleu |
| :rouge | :vert | :rouge |
| :rouge | :bleu | :vert |
| :rouge | :bleu | :rouge |
---------------------------B. Amann (UPMC)
Expression algébrique de couleur4n2
( p r e f i x ( ( : < h t t p : / / c o l o r s . org / ns# > ) )
( distinct
( p r o j e c t ( ?a ?b ?c )
( union
( union
( leftjoin
( bgp
( t r i p l e ?a : e ?b )
( t r i p l e ?b : e ?c )
)
( bgp ( t r i p l e ?a : e ?c ) ) )
( leftjoin
( bgp
( t r i p l e ?a : e ?b )
( t r i p l e ?b : e ?c )
)
( bgp ( t r i p l e ?a : e ?d ) ) ) )
( leftjoin
( bgp
( t r i p l e ?a : e ?b )
( t r i p l e ?b : e ?c )
)
( bgp ( t r i p l e ?b : e ?d ) ) ) ) ) ) )
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
265 / 375
Évaluation de requêtes SPARQL
Réécriture et normalisation
Évaluation de motifs sans UNION
Algorithme EvalD (P, Ω) (top-down, récursif)
si Ω = ∅ retourne ∅
si (P est un motif triplet) retourne (Ω 1 JPKD )
si (P = (P1 . P2)) retourne EvalD (P2, EvalD (P1, Ω))
si (P = (P1 OPTIONAL P2)) retourne
EvalD (P1, Ω) o EvalD (P2, EvalD (P1,Ω))
si (P = (P1 FILTER R)) retourne {ν ∈ EvalD (P1, Ω)|ν |= R}
Evaluate(P) = EvalD (P, {∅})
Optimisation de OPTIONAL
La sémantique d’évaluation EvalD (P2, EvalD (P1,Ω) est une optimisation pour
la sémantique formelle EvalD (P2, Ω) fondée sur l’hypothèse que seulement
les mappings dans Ω qui sont compatibles avec les mappings dans
EvalD (P1,Ω) sont utiles.
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
266 / 375
Évaluation de requêtes SPARQL
Réécriture et normalisation
Évaluation de motifs sans UNION : Exemple
SELECT ∗
WHERE { t 1 OPTIONAL { t 2 OPTIONAL t 3 } }
Sémantique d’évaluation
EvalD (t1 OPTIONAL(t2 OPTIONAL t3), {∅})
EvalD (t1, {∅}) o EvalD (t2 OPTIONAL t3, EvalD (t1, {∅}))
Jt1KD o (EvalD (t2, Jt1KD ) o EvalD (t3, EvalD (t2, Jt1KD )
Jt1KD o ((Jt1KD 1 Jt2KD ) o (Jt1KD 1 Jt2KD 1 Jt3KD ))
Sémantique formelle
J((t1 OPTIONAL(t2 OPTIONAL t3))KD
Jt1KD o (Jt2KD o Jt3KD )
La sémantique d’évaluation top-down ne respecte pas la sémantique formelle.
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
267 / 375
Évaluation de requêtes SPARQL
Réécriture et normalisation
Motif bien-formé
Motif bien formé
Un motif P est bien formé si pour chaque occurrence d’un sous-motif
P 0 = P1 OPTIONAL P2 de P et pour chaque variable ?X dans P la
condition suivante est validée : si ?X apparaît dans P2 et en dehors de
P 0 , alors elle apparaît également dans P1 .
Exemples
{ ?x a ?y OPTIONAL { ?y b ?z OPTIONAL { ?x c ?u } } : pas bien
formé
{ ?x a ?y OPTIONAL { ?y b ?z OPTIONAL { ?u c ?v } } : bien formé
Théorème
Si P est un motif bien formé, alors JPKD = EvalD (P) (la sémantique
d’évaluation top-down respecte la sémantique formelle).
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
268 / 375
Évaluation de requêtes SPARQL
Optimisation de requêtes SPARQL
2 - Évaluation de requêtes SPARQL
Plans d’exécution SPARQL
Réécriture et normalisation
Optimisation de requêtes SPARQL
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
269 / 375
Évaluation de requêtes SPARQL
Optimisation de requêtes SPARQL
Optimisation de requêtes (SPARQL)
Qu’est-ce qu’on peut optimiser ?
requête (simplification)
plan d’exécution
réécriture algébrique (reordonner les opérations)
opérations :
chemins d’accès / indexation
algorithmes d’évaluation
technologie :
relationnel, noSQL, MapReduce, native
Problème : très grand espace de solutions
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
270 / 375
Évaluation de requêtes SPARQL
Optimisation de requêtes SPARQL
Optimisation de requêtes (SPARQL)
Simplification des requêtes :
utiliser les règles RDF/S pour enlever des motifs de triplets
redondants (« inverse » de la saturation)
exemple : a p b . p rdf:type rdf:Property . est
équivalent à a p b .
Réécriture algébrique du plan d’exécution :
optimisation « relationnel » :
pousser les sélections
reordonner les jointures (motifs de graphes)
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
271 / 375
Évaluation de requêtes SPARQL
Optimisation de requêtes SPARQL
Optimisation de motifs de graphes
motif de graphe = ensemble de motifs de triplets avec des
variables
graphe de jointure :
noeud = motif de triplet t
arc (t, t 0 ) = t et t 0 partagent une variable
graphe de variables :
noeud = variable
arc (v , v 0 ) = v et v 0 apparaissent dans le même motif de triplet
graphe hybrid :
union de graphe de variables et du graphe de jointure
ajouter des arcs (v , t) pour une variable v qui apparaît dans un
motif t
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
272 / 375
Évaluation de requêtes SPARQL
Optimisation de requêtes SPARQL
Optimisation : exemple
t1 :
t2 :
t3 :
t4 :
t5 :
t6 :
(?a
(?b
(? c
(? c
(?d
(?d
p
p
p
q
r
s
graphe de jointure :
x)
y)
x)
?a )
?b )
?a )
noeud = motif de triplet t
arc (t, t 0 ) = t et t 0 partagent une
variable
graphe de variables :
noeud = variable
arc (v , v 0 ) = v et v 0 apparaissent
dans le même motif de triplet
Graphe de variable :
Graphe de jointure :
t3
?d
t5
?c
?b
t6
t5
B. Amann (UPMC)
t6
?a
t4
?a
?b
?a
t2
?a
?c
t4
t1
?d
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
273 / 375
Évaluation de requêtes SPARQL
Optimisation de requêtes SPARQL
Optimisation : Graphe de Jointure
Graphe de jointure dirigé acyclique
Ordonnancement des jointures
t6
?b
?d
t1, t4, t6, t3, t5, t2
t1, t4, t3, t6, t5, t2
B. Amann (UPMC)
t5
t1
t4
?a
?a
t2
t6
?b
?a
t3
?a
?a
t2
?c
t4
t1
?a
?c
t3
?d
t5
t1, t6, t3, t4, t2, t5
t1, t6, t2, t5, t3, t4
t1, t6, t3, t2, t5, t4
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
274 / 375
Évaluation de requêtes SPARQL
Optimisation de requêtes SPARQL
Jointure : Associativité et Commutativité
La jointure est associative et commutative au niveau logique.
Mais :
L’efficacité d’une opération (algorithme de jointure) dépend de
l’ordre des opérandes.
L’ordre des opérations est important.
(t1 1 t4) 1 t6) 1 t3) 1 t5) 1 t2 (plan linéaire)
(t1 1 t6) 1 t3) 1 t4) 1 t2) 1 t5 (plan linéaire)
(t1 1 t6) 1 (t3 1 t4) 1 (t2 1 t5) (plans touffu / parallélisation)
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
275 / 375
Évaluation de requêtes SPARQL
Optimisation de requêtes SPARQL
Estimation de la sélectivité des motifs
H1 : Nombre et position des variables dans les motifs :
(s, p, o) < (s, ?, o) < (?, p, o) < (s, p, ?) < (?, ?, o) < (s, ?, ?) <
(?, p, ?) < (?, ?, ?)
s, p, o désignent des constantes (URI, littéraux), ? désigne une
variable
H2 : Position des variables de jointure dans les motifs joints :
p ./ o < s ./ p < s ./ o < o ./ o < s ./ s < p ./ p
p ./ o est équivalent à une jointure (a, ?x, b), (c, d, ?x)
H3 : Les littéraux sont plus selectives que les URI
Tsialiamanis, Petros, et al. "Heuristics-based query optimisation for
SPARQL." Proceedings of the 15th International Conference on Extending
Database Technology. ACM, 2012.
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
276 / 375
Évaluation de requêtes SPARQL
Optimisation de requêtes SPARQL
Graphes de variables : ensemble indépendant
maximal
Ensemble indépendant de poids maximal :
t5
t4
Graphe avec noeuds pondérés
Ensemble indépendant : ensemble de noeuds qui ne partagent pas d’arcs
Ensemble indépendant (de poids) maximal : problème NP-complet [Bourgois
et.al. 12]
Poids = nombre de triplets
t1 : (?a p x )
contenant la variable :
t2 : (?b p y )
?a,3
?b,2
t3 : (? c p x )
t6
t 4 : ( ? c q ?a )
t 5 : ( ? d r ?b )
?c,2
?d,2
t 6 : ( ? d s ?a )
Ensemble indépendant maximal : {?a, ?b}
[Bourgois et.al. 12] Bourgeois, N., et al. "Fast algorithms for max independent set."
Algorithmica 62.1-2 (2012) : 382-415.
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
277 / 375
Évaluation de requêtes SPARQL
Optimisation de requêtes SPARQL
Graphes de variables : planification des jointures
p
p
p
q
r
s
x)
y)
x)
?a )
?b )
?a )
?a,3
?c,2
?b,2
t6
t5
(?a
(?b
(? c
(? c
(?d
(?d
t4
t1 :
t2 :
t3 :
t4 :
t5 :
t6 :
?d,2
Algorithme :
Calculer tous les ensembles maximaux I
Appliquer heuristiques sur I pour choisir l’ensemble le plus sélectif.
Ensemble indépendant maximal : {?a, ?b}
Utiliser heuristiques (sélectivité, index/chemins d’accès possibles) pour ordonner les jointures et
choisir les index (voir cours index)
Plan résultat :
t1
t6
t3
t4
t2
t5
z }| {
z }| {
z }| {
z }| {
z }| {
z }| {
((σp,x (POS) 1?a σs (POS)) 1?a (σp,x (POS) 1?c σq (PSO))) 1 (σp,y (POS) 1?b σr (POS))
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
278 / 375
Évaluation de requêtes SPARQL
Optimisation de requêtes SPARQL
Optimisation dans Jena : TDB Optimizer
Trois stratégies :
none.opt : ne modifie pas le plan d’origine et exécute les motifs de
triplets dans l’ordre de la requête
fixed.opt : réordonne les motifs de triples par le nombre de
variables dans le motif
stats.opt : utilise des statistiques sur les données de l’entrepôt
interrogé
La stratégie est choisie par la présence d’un fichier dans le répertoire
de l’entrepôt RDF (voir TP).
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
279 / 375
Évaluation de requêtes SPARQL
Optimisation de requêtes SPARQL
Bibliographie
Marcelo Arenas , Jorge Pérez, Querying semantic web data with SPARQL,
Proceedings of the thirtieth ACM SIGMOD-SIGACT-SIGART symposium on
Principles of database systems, June 13-15, 2011, Athens, Greece
Reinhard Pichler , Sebastian Skritek, Containment and equivalence of well-designed
SPARQL, Proceedings of the 33rd ACM SIGMOD-SIGACT-SIGART symposium on
Principles of database systems, June 22-27, 2014, Snowbird, Utah, USA
Sebastian Skritek, Foundational aspects of semantic web optimization, Proceedings
of the on SIGMOD/PODS 2012 PhD Symposium, May 20-20, 2012, Scottsdale,
Arizona, USA
Andrés Letelier , Jorge Pérez , Reinhard Pichler , Sebastian Skritek, Static analysis
and optimization of semantic web queries, ACM Transactions on Database Systems
(TODS), v.38 n.4, p.1-45, November 2013
Katja Losemann , Wim Martens, The complexity of regular expressions and property
paths in SPARQL, ACM Transactions on Database Systems (TODS), v.38 n.4,
p.1-39, November 2013
B. Amann (UPMC)
Master M2 DAC – ASWS – UPMC - UFR 919 Ingéniérie
19 octobre 2015
280 / 375