Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilSofie Kopecká
1
SPARQL – Sémantika
2
Sémantizace webuSPARQL – sémantika2 NSWI108 – Sémantizace Webu Peter Vojtáš 13. SPARQL – sémantika
3
Sémantizace webuSPARQL – sémantika3 10-SPARQL-Semantik-2009.pdf
4
Sémantizace webuSPARQL – sémantika4 Obsah Sledujeme německou knížkuknížku P. Hitzler, M. Krötzsch, S. Rudolph, Y. Sure Semantic Web Grundlagen Springer 2008, ISBN: 978-3-540-33993-9
5
Sémantizace webuSPARQL – sémantika5 Obsah 1. Úvod a motivace 2. Transformace dotazů v SPARQL do SPARQL algebry 3. Počítání v SPARQL algebře 4. Shrnutí
6
Sémantizace webuSPARQL – sémantika6 SPARQL Minulá přednáška: SPARQL jako dotazovací jazyk pro RDF PREFIX ex: SELECT ?buch, ?autor WHERE { ?buch ex:VerlegtBei. ?buch ex:Preis ?preis. ?buch ex:Autor ?autor FILTER (?preis < 35) } ORDER BY ?preis LIMIT 10 Charakteristika SPARQL: jednoduché, nepovinné a alternativní grafové vzory Filter Výstupní formáty (SELECT, CONSTRUCT,... ) Modifikátory (ORDER BY, LIMIT,... ) Pro tuto přednášku zbylo zodpovědět otázku: Jak je přesně definovaná sémantika SPARQL?
7
Sémantizace webuSPARQL – sémantika7 K čemu sémantika Zatím neformální představení SPARQL (my jsme měli článek čilanů) Použivatel: „které odpovědi můžu očekávat na můj dotaz?“ Vývojář: „Jak se bude chovat moje SPARQL implementace?“ Výrobce: „Je můj produkt v souladu se SPARQL?“ Formální sémantika snad do toho vnese více světla
8
Sémantizace webuSPARQL – sémantika8 Sémantika dotazovacích jazyků Sémantika formální logiky: Modelově teoretická sémantika: které interpretace splňují znalostní bázi důkazově teoretická sémantika: které důkazy (odvození) z dané znalostní báze jsou přípustné?... Sémantika programovacích jazyků: Axiomatická sémantika: která logická tvrzení jsou pravdivá pro daný program? Operační sémantika: jak vypadá běh daného programu? Denotační sémantika: jak lze daný programm reprezentovat jako funkci vstup-výstup? Co teď s dotazovacím jazykem?
9
Sémantizace webuSPARQL – sémantika9 Sémantika dotazovacích jazyků Sémantika dotazovacích jazyků: Dotaz jako splňování (query entailment) dotaz jako popis přípustných výsledků databáze jako množina logických předpokladů (teorie) odpověď na dotaz jako logické odvození Např.: OWL DL a RDF(S) jako dotazovací jazyky, konjunktivní dotazy Dotazovací algebra dotaz jako popis výpočtu výsledků databáze jako vstup odpověď jako výstup Např.: relační algebra pro SQL, SPARQL-algebra
10
Sémantizace webuSPARQL – sémantika10 Transformace dotazů do SPARQL algebry { ?kniha ex:Cena ?cena. FILTER (?cena < 15) OPTIONAL { ?kniha ex:Nazev ?nazev. } { ?kniha ex:Autor ex:Shakespeare. } UNION { ?kniha ex:Autor ex:Marlowe. } } Sémantika SPARQL-ovského dotazu: 1. Transformace dotazu do algebraického výrazu 2. Spočítání výsledku tohoto výrazu
11
Sémantizace webuSPARQL – sémantika11 Transformace dotazů do SPARQL algebry: BGP { ?kniha ex:Cena ?cena. FILTER (?cena < 15) OPTIONAL { ?kniha ex:Nazev ?nazev. } { ?kniha ex:Autor ex:Shakespeare. } UNION { ?kniha ex:Autor ex:Marlowe. } } První krok: transformace jednoduchých grafových vzorů Operátor BGP Basic Graph Pattern Současně rozepsaní zkráceného URI
12
Sémantizace webuSPARQL – sémantika12 Transformace dotazů do SPARQL algebry: BGP { BGP(?kniha ?cena.) FILTER (?cena < 15) OPTIONAL { BGP(?kniha <http://eg.org/Nazev ?nazev.) } { BGP(?kniha.) } UNION { BGP(?kniha.) } } První krok: transformace jednoduchých grafových vzorů Operátor BGP Basic Graph Pattern Současně rozepsaní zkráceného URI
13
Sémantizace webuSPARQL – sémantika13 Transformace do SPARQL algebry: Union { BGP(?kniha ?cena.) FILTER (?cena < 15) OPTIONAL { BGP(?kniha <http://eg.org/Nazev ?nazev.) } { BGP(?kniha.) } UNION { BGP(?kniha.) } } Druhý krok: skládání alternativních grafových vzorů Operátor Union vztahuje se na UNION {} ohraničené grafové vzory UNION ( váže silněji než konjunkce) Uzávorkování vícero alternativ jako v minulé přednášce (zleva asociativní)
14
Sémantizace webuSPARQL – sémantika14 Transformace do SPARQL algebry: Union { BGP(?kniha ?cena.) FILTER (?cena < 15) OPTIONAL { BGP(?kniha <http://eg.org/Nazev ?nazev.) } Union({ BGP(?kniha.) }, { BGP(?kniha.) }) } Druhý krok: skládání alternativních grafových vzorů Operátor Union vztahuje se na UNION {} ohraničené grafové vzory UNION ( váže silněji než konjunkce) Uzávorkování vícero alternativ jako v minulé přednášce (zleva asociativní)
15
Sémantizace webuSPARQL – sémantika15 Transformace do SPARQL algebry Join(M1, M2)konjunktivní spojení M1 a M2 LeftJoin(M1, M2, F)Nepovinné spojení M1 s M2 pod podmínkou F Filter (F, M)Použití diltrovací podmínky F na M ZKonstanta pro prázdný výraz
16
Sémantizace webuSPARQL – sémantika16 Transformace do SPARQL algebry Join(M1, M2)konjunktivní spojení M1 a M2 LeftJoin(M1, M2, F)Nepovinné spojení M1 s M2 pod podmínkou F Filter (F, M)Použití filtrovací podmínky F na M ZKonstanta pro prázdný výraz Trasformace se vykonává postupně zevnitř ven: 1.Zvol nejaký „nejvnitřnější“ grafový vzor M; 2.Odstraň filtrovací podmínky z M; GF := konjunkce filtrovacích podmínek 3. Inicializuj G := Z, a zpracuj všechny podvýrazy UA následovně: a. pokud UA = OPTIONAL Filter(F, A): G := LeftJoin(G, A, F) b. jinak, pokud UA = OPTIONAL A: G := LeftJoin(G, A, true) c. jinak: G := Join(G,UA) 4. pokud GF je neprázdné: G := Filter(GF,G)
17
Sémantizace webuSPARQL – sémantika17 Transformace SPARQL algebry:(Left)Join, Filter { BGP(?kniha ?cena.) FILTER (?cena < 15) OPTIONAL { BGP(?kniha <http://eg.org/Nazev ?nazev.) } Union({ BGP(?kniha.) }, { BGP(?kniha.) }) }
18
Sémantizace webuSPARQL – sémantika18 Transformace SPARQL algebry:(Left)Join, Filter { BGP(?kniha ?cena.) FILTER (?cena < 15) OPTIONAL Join(Z, BGP(?kniha <http://eg.org/Nazev ?nazev.) ) Union(Join(Z, BGP(?kniha.) ), Join(Z, BGP(?kniha.) )) }
19
Sémantizace webuSPARQL – sémantika19 Transformace SPARQL algebry:(Left)Join, Filter { BGP(?kniha ?cena.) FILTER (?cena < 15) OPTIONAL Join(Z, BGP(?kniha <http://eg.org/Nazev ?nazev.) ) Union(Join(Z, BGP(?kniha.) ), Join(Z, BGP(?kniha.) )) }
20
Sémantizace webuSPARQL – sémantika20 Transformace SPARQL algebry:(Left)Join, Filter FILTER ((?cena < 15) Join( LeftJoin( Join(Z, BGP(?kniha ?cena.)), Join(Z, BGP(?kniha <http://eg.org/Nazev ?nazev.) ) true ), Union(Join(Z, BGP(?kniha.) ), Join(Z, BGP(?kniha.) )) )
21
Sémantizace webuSPARQL – sémantika21 Transformace SPARQL algebry Modifikátory G := OrderBy(G, zadaní uspořádání) G := Slice(G, o, l) ořeže výsledkovou listinu na interval délky l od pozice o, pokud bylo použito „OFFSET o“ a „LIMIT l“ G := Project(G, seznam proměnných) pokud to bylo v SELECT G:=Distinct(G) …
22
Sémantizace webuSPARQL – sémantika22 Definice operací SPARQL algebry Jak jsou definovány operace SPARQL-algebry? Výstup: „tabulka výsledků“ (formátování nehraje roli) vstup: dotazovaná RDF-Databáze Částečné výsledky podvýrazů Rozličné parametry podle operace Prázdný výraz Z? Výsledek právě jeden (funkce s prázdným oborem hodnot) „tabulka s jedním řádkem ale žádnými sloupci“ Více předminulá přednáška
23
Sémantizace webuSPARQL – sémantika23 Příklad @prefix ex:. @prefix xsd:. ex:Hamlet ex:Autor ex:Shakespeare ; ex:Preis "10.50"^^xsd:decimal. ex:Macbeth ex:Autor ex:Shakespeare. ex:Tamburlaine ex:Autor ex:Marlowe ; ex:Preis "17"^^xsd:integer. ex:DoctorFaustus ex:Autor ex:Marlowe ; ex:Preis "12"^^xsd:integer ; ex:Titel "The Tragical History of Doctor Faustus". ex:RomeoJulia ex:Autor ex:Brooke ; ex:Preis "9"^^xsd:integer. { ?kniha ex:Cena ?cena. FILTER (?cena < 15) OPTIONAL { ?kniha ex:Nazev ?nazev. } { ?kniha ex:Autor ex:Shakespeare. } UNION { ?kniha ex:Autor ex:Marlowe. } }
24
Sémantizace webuSPARQL – sémantika24 Příklad FILTER ((?cena < 15) Join( LeftJoin( Join(Z, BGP(?kniha ?cena.)), Join(Z, BGP(?kniha <http://eg.org/Nazev ?nazev.) ) true ), Union(Join(Z, BGP(?kniha.) ), Join(Z, BGP(?kniha.) )) ) ) kniha ex:Tamburlaine ex:DoctorFaustus
25
Sémantizace webuSPARQL – sémantika25 Příklad FILTER ((?cena < 15) Join( LeftJoin( Join(Z, BGP(?kniha ?cena.)), Join(Z, BGP(?kniha <http://eg.org/Nazev ?nazev.) ) true ), Union(Join(Z, BGP(?kniha.) ), Join(Z, BGP(?kniha.) )) ) ) kniha ex:Macbeth ex:Hamlet
26
Sémantizace webuSPARQL – sémantika26 Příklad FILTER ((?cena < 15) Join( LeftJoin( Join(Z, BGP(?kniha ?cena.)), Join(Z, BGP(?kniha <http://eg.org/Nazev ?nazev.) ) true ), Union(Join(Z, BGP(?kniha.) ), Join(Z, BGP(?kniha.) )) ) ) kniha ex:Hamlet ex:Macbeth ex:Tamburlaine ex:DoctorFaustus
27
Sémantizace webuSPARQL – sémantika27 Příklad FILTER ((?cena < 15) Join( LeftJoin( Join(Z, BGP(?kniha ?cena.)), Join(Z, BGP(?kniha <http://eg.org/Nazev ?nazev.) ) true ), Union(Join(Z, BGP(?kniha.) ), Join(Z, BGP(?kniha.) )) ) ) knihacena ex:Hamlet"10.50"ˆˆxsd:decimal ex:Tamburlaine"17"ˆˆxsd:integer ex:DoctorFaustus"12"ˆˆxsd:integer ex:RomeoJulia"9"ˆˆxsd:integer
28
Sémantizace webuSPARQL – sémantika28 Příklad FILTER ((?cena < 15) Join( LeftJoin( Join(Z, BGP(?kniha ?cena.)), Join(Z, BGP(?kniha <http://eg.org/Nazev ?nazev.) ) true ), Union(Join(Z, BGP(?kniha.) ), Join(Z, BGP(?kniha.) )) ) ) knihanazev ex:DoctorFaustus"The Tragical History of Doctor Faustus"
29
Sémantizace webuSPARQL – sémantika29 Příklad FILTER ((?cena < 15) Join( LeftJoin( Join(Z, BGP(?kniha ?cena.)), Join(Z, BGP(?kniha <http://eg.org/Nazev ?nazev.) ) true ), Union(Join(Z, BGP(?kniha.) ), Join(Z, BGP(?kniha.) )) ) ) knihacenanazev ex:Hamlet"10.50"ˆˆxsd:decimal ex:Tamburlaine"17"ˆˆxsd:integer ex:DoctorFaustus"12"ˆˆxsd:integer"The Tragical History..." ex:RomeoJulia"9"ˆˆxsd:integer
30
Sémantizace webuSPARQL – sémantika30 Příklad FILTER ((?cena < 15) Join( LeftJoin( Join(Z, BGP(?kniha ?cena.)), Join(Z, BGP(?kniha <http://eg.org/Nazev ?nazev.) ) true ), Union(Join(Z, BGP(?kniha.) ), Join(Z, BGP(?kniha.) )) ) ) knihacenanazev ex:Hamlet"10.50"ˆˆxsd:decimal ex:Tamburlaine"17"ˆˆxsd:integer ex:DoctorFaustus"12"ˆˆxsd:integer"The Tragical History..." ex:RomeoJulia"9"ˆˆxsd:integer
31
Sémantizace webuSPARQL – sémantika31 Příklad FILTER ((?cena < 15) Join( LeftJoin( Join(Z, BGP(?kniha ?cena.)), Join(Z, BGP(?kniha <http://eg.org/Nazev ?nazev.) ) true ), Union(Join(Z, BGP(?kniha.) ), Join(Z, BGP(?kniha.) )) ) ) knihacenanazev ex:Hamlet"10.50"ˆˆxsd:decimal ex:Tamburlaine"17"ˆˆxsd:integer ex:DoctorFaustus"12"ˆˆxsd:integer"The Tragical History..." ex:RomeoJulia"9"ˆˆxsd:integer
32
Sémantizace webuSPARQL – sémantika32 Závěr aaa
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.