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