330 likes | 491 Views
SPARQL – motivace, syntax. NSWI108 – Sémantizace Webu. 12 . SPARQL – motivace, syntax. Peter Vojtáš. 09-SPARQL-Einfuehrung-Intuition-2009.pdf. Nekomer ční rozmnožování (kopírování, reprodukce, reprodukování, rozmnožení, rozšíření)
E N D
NSWI108 – Sémantizace Webu 12. SPARQL – motivace, syntax Peter Vojtáš SPARQL – motivace, syntax
09-SPARQL-Einfuehrung-Intuition-2009.pdf Nekomerční rozmnožování (kopírování, reprodukce, reprodukování, rozmnožení, rozšíření) A zpracování těchto folií je povoleno … SPARQL – motivace, syntax
Obsah Sledujeme německou knížku P. Hitzler, M. Krötzsch, S. Rudolph, Y. Sure Semantic Web GrundlagenSpringer 2008, ISBN: 978-3-540-33993-9 SPARQL – motivace, syntax
Obsah • Úvod a motivace • Jednoduché SPARQL-dotazy • Složitější grafové vzory ve SPARQL • Filter ve SPARQL • Výstupní formáty ve SPARQL • Modifikátory ve SPARQL • Shrnutí a výhled SPARQL – motivace, syntax
Dotazovací jazyky pro Sémantický web Jak se dostanu k informacím specifikovaným v RDF nebo OWL? Dotazování na informace v RDF(S) - jednoduché splňování - RDF-splňování - RDFS-splňování „Vyplývá nějaký RDF-Graph z daného grafu?“ Dotazování na informace v OWL, logickéodvození, „Vyplývá Subclass-vztahz dané OWL-Ontologie?“ „Kteréinstance danétřídyplynou z OWL-Ontologie?“ SPARQL – motivace, syntax
Stačí RDF nebo OWL dotazování, nebo ne? Samotné OWL je jako dotazovací jazyk často slabé „Které řetězce v českém jazyce obsahuje ontologie?“ „Které vlastnosti spojují dvě dané individua?“ „Které dvojice osob mají společného rodiče?“ se nedá vyjádřit ani v RDF ani v OWL. Požadavek: Veliká vyjadřovací síla na popis hledaných informací Formátování, ohraničení a manipulace s výsledky Pozn. opouštíme DL bez proměnných SPARQL – motivace, syntax
SPARQL SPARQL (vyslov angl. sparkle) je zkratka za SPARQL Protocol And RDF Query Language W3C-Specifikace (od 15. ledna 2008) Dotazovací jazyk pro nalezení instancí v RDF-datech Veliký praktický význam Části SPARQL-Specifikace: Dotazovací jazyk Formát výsledků: prezentace výsledků v XML Dotazovací protokol: přeposílání dotazů a výsledků SPARQL – motivace, syntax
Jednoduché SPARQL dotazy Příklad jednoduchého dotazu: PREFIX ex: <http://example.org/> SELECT ?název ?autor WHERE { ?kniha ex:VydanáU <http://springer.com/Verlag> . ?kniha ex:název ?název . ?kniha ex:Autor ?autor . } SPARQL – motivace, syntax
Jednoduché SPARQL dotazy - příklad PREFIX ex: <http://example.org/> SELECT ?název ?autor WHERE { ?kniha ex:VydanáU <http://springer.com/Verlag> . ?kniha ex:název ?název . ?kniha ex:Autor ?autor . } WHERE - dotazovací vzorek v Turtle-rdf-Syntaxi Vzorek může obsahovat proměnné (?variable) Zkratky pro URI jsou možné (PREFIX) Výsledek určíme výběrem proměnných v (SELECT) SPARQL – motivace, syntax
Výsledek příkladu Příklad RDF Dokumentu (dat): @prefix ex: <http://example.org/> . ex:SemanticWeb ex:vydanáU <http://springer.com/Verlag> ; ex:název "Semantic Web - Grundlagen" ; ex:Autor ex:Hitzler, ex:Krötzsch, ex:Rudolph, ex:Sure . Výsledek dotazu: Tabulka kde každý řádek je jeden výsledek SPARQL – motivace, syntax
Jednoduché grafové vzory Základní dotazovací vzory jsou jednoduché grafové vzory = množiny RDF-Trojic v Turtle-Syntaxi Turtle-zkratky (s použitím , a ;) jsou přípustné Proměnné budou označené ? nebo $ (?variable má rovnaký význam jako $variable) Proměnné jsou přípustné jako Subjekt, Predicate nebo Objekt Přípustné nemusí znamenat čitelné PREFIX ex: <http://example.org/> SELECT $rf456df ?_AIFB WHERE { ?ef3a_3 ex:vydanáU <http://springer.com/Verlag> . ?ef3a_3 ex:název ?rf456df . $ef3a_3 ex:Autor ?_AIFB . } (je sémanticky ekvivalentní předešlému dotazu) SPARQL – motivace, syntax
Prázdné uzly Co znamenají prázdné uzly v SPARQL? Prázdné uzly v dotazovacích vzorech: Jsou přípustné jako Subject nebo Object ID libovolné, ale nikdy stejné ID vícekrát v dotazu Chovají se jako proměnné, které není možné vybrat do SELECT SPARQL – motivace, syntax
Prázdné uzly Co znamenají prázdné uzly v SPARQL? Prázdné uzly v dotazovacích vzorech: Jsou přípustné jako Subject nebo Object ID libovolné, ale nikdy stejné ID vícekrát v dotazu Chovají se jako proměnné, které není možné vybrat do SELECT Prázdné uzly ve výsledcích: zkratka pro neznámý prvek ID libovolné, může tvořit vazbu na jiné části dotazu SPARQL – motivace, syntax
Datové typy @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix ex: <http://example.org/> . ex:bsp1 ex:p "test" . ex:bsp2 ex:p "test"^^xsd:string . ex:bsp3 ex:p "test"@de . ex:bsp4 ex:p "42"^^xsd:integer . Co dává dotaz s následujícím vzorem? { ?subject <http://example.org/p> "test" . } ex:bsp1 jako jediný výsledek Přesná shoda nad datovými typy je požadovaná, ale zkratky číselných hodnot jsou možné { ?subject <http://example.org/p> 42 . } Datový typ se určí ze syntaktického tvaru buď xsd:integer, xsd:decimal, nebo xsd:double SPARQL – motivace, syntax
Seskupování grafových vzorů Jednoduché grafové vzory můžou být seskupovány použitím {. . . } . například: PREFIX ex: <http://example.org/> SELECT ?název ?autor WHERE { { ?kniha ex:vydanáU <http://springer.com/Verlag> ?kniha ex:název ?název . } { } ?kniha ex:Autor ?autor . } Má smysl až při použití složitějších konstrukcí, zde jen vizuálně odděluje. Tento dotaz je ekvivalentní předešlému dotazu z příkladu SPARQL – motivace, syntax
Volitelné (nepovinné) vzory Klíčové slovo OPTIONAL dovoluje zadávat nepovinné části vzoru Příklad : { ?buch ex:VerlegtBei <http://springer.com/Verlag> . OPTIONAL { ?buch ex:Titel ?titel . } OPTIONAL { ?buch ex:Autor ?autor . } } Část výsledku nemusí být vázana SPARQL – motivace, syntax
Vzory s alternativou Klíčové slovo UNION dovoluje zadat alternativní části vzoru Příklad: { ?kniha ex:vydanáU <http://springer.com/Verlag> . { ?kniha ex:Autor ?autor . } UNION { ?kniha ex:editor ?autor . } UNION { ?kniha ex:sestavovatel ?autor . } … } Výsledek odpovídá sjednocení výsledků splňujících jednu z možností Pozn.: stejné proměnné v částech union se neovlyvňují SPARQL – motivace, syntax
Kombinace volitelnosti s alternativou Jak rozumět kombinaci OPTIONAL a UNION? { ?kniha ex:vydanáU <http://springer.com/Verlag> . { ? kniha ex:Autor ?autor . } UNION { ? kniha ex:editor ?autor . } OPTIONAL { ?autor ex:příjmení ?name . } } Sjednocení dvou vzorů s přidaným nepovinným vzorem nebo Sjednocení dvou vzorů, kde ten druhý má nepovinnou část Ptá se na distribuci UNION a OPTIONAL SPARQL – motivace, syntax
Kombinace volitelnosti s alternativou Jak rozumět kombinaci OPTIONAL a UNION? { ?buch ex:VerlegtBei <http://springer.com/Verlag> . { ?buch ex:Autor ?autor . } UNION { ?buch ex:Verfasser ?autor . } OPTIONAL { ?autor ex:Nachname ?name . } } Sjednocení dvou vzorů s přidaným nepovinným vzorem nebo Sjednocení dvou vzorů, kde ten druhý má nepovinnou část První interpretace je správná { ?buch ex:VerlegtBei <http://springer.com/Verlag> . { { ?buch ex:Autor ?autor . } UNION { ?buch ex:Verfasser ?autor . } } OPTIONAL { ?autor ex:Nachname ?name . } } Teda defaultní závorkování zleva, nebo UNION má přednost ? SPARQL – motivace, syntax
Kombinace volitelnosti s alternativou Obecné pravidlo OPTIONAL se vztahuje vždy na právě jeden (seskupený) vzor vpravo o něj OPTIONAL a UNION mají stejnou prioritu a vztahují se na všechny nalevo stojící výrazy (jsou zleva asociativní) příklad: { {s1 p1 o1} OPTIONAL {s2 p2 o2} UNION {s3 p3 o3} OPTIONAL {s4 p4 o4} OPTIONAL {s5 p5 o5} } SPARQL – motivace, syntax
Kombinace volitelnosti s alternativou Obecné pravidlo: OPTIONAL se vztahuje vždy na právě jeden (seskupený) vzor vpravo o něj OPTIONAL a UNION mají stejnou prioritu a vztahují se na všechny nalevo stojící výrazy (jsou zleva asociativní) Příklad: { {s1 p1 o1} OPTIONAL {s2 p2 o2} UNION {s3 p3 o3} OPTIONAL {s4 p4 o4} OPTIONAL {s5 p5 o5} } Znamená { { { { {s1 p1 o1} OPTIONAL {s2 p2 o2} } UNION {s3 p3 o3} } OPTIONAL {s4 p4 o4} } OPTIONAL {s5 p5 o5} } SPARQL – motivace, syntax
Filtrování výsledků Filtrování výsledků Viz německé slidy, více méně se to shoduje s minulou přednáškou SPARQL – motivace, syntax
Formatování výsledků - SELECT prozatím byly všechny výsledky tabulky se sloupci jako Proměnné v SELECT Syntax: SELECT <seznam proměnných> nebo SELECT * Výhoda Jednoduché sekvenčbí zpracování výsledků Nevýhoda Struktura/vztahy mezi Objekty není ve výsledku zřejmá SPARQL – motivace, syntax
Formatování výsledků - CONSTRUCT Kódování výsledků ve tvaru RDF-Grafů: výstupní formát CONSTRUCT Syntax: CONSTRUCT <RDF-šablóna v Turtle> PREFIX ex: <http://example.org/> CONSTRUCT { ?person ex:mailbox ?email . ?person ex:telefon ?telefon . } WHERE { ?person ex:email ?email . ?person ex:tel ?telefon . } Výhoda Strukturovaný výsledek se vztahy mezi prvky nevýhoda Sekvenční zpracování je ztíženo Schází podpora pro volné proměnné SPARQL – motivace, syntax
Formatování výsledků - CONSTRUCT PREFIX ex: <http://example.org/> CONSTRUCT {_id1 ex:email ?email. _id1 ex:telefon ?telefon _idl ex:person ?person.} WHERE {?person ex:email ?email. ?person ex:tel ?telefon.} @prefix ex: <http://example.org/> ex:Gabi ex:email gabi@example.org. ex:Gabi ex:email "g.mueller@example.org". ex: Gabi ex:tel "123456789“. ex: Gabi ex:tel "987654321". _e ex:email "gabi@example.org"; ex:telefon "123456789" ; ex:person ex:Gabi. _g ex:email "gabi@example.org"; ex:telefon "987654321" ; ex:person ex:Gabi. _a ex:email "g.mueller@example.org"; ex:telefon "123456789" ; ex:person ex:Gabi. _l ex:emai1 "g.mueller@example.org"; ex:telefon "987654321" ; ex:person ex:Gabi. SPARQL – motivace, syntax
Další výstupní formáty SPARQL SPARQL podpořuje další dva výstupní formáty ASK jenom testuje, zda nějaké výsledky existují, žádné parametry DESCRIBE (informativní) ke každému nalezenému URI dává na výstupu RDF-popis (závislé na aplikaci) SPARQL – motivace, syntax
Modifikátory – uspořádání výsledků SELECT ?kniha, ?cena WHERE { ?kniha <http://example.org/Cena> ?cena . } ORDER BY ?cena Uspořádání jako při srovnávacích operátorech FILTER, Uspořádání URI abecedně jako řetězce znaků Pořadí mezi různými druhy prvků: Nevázané proměnné < prázdné uzly < URI < RDF-Literály Ne každá možnost je v specifikaci definovaná Další možné upřesnění: ORDER BY DESC(?cena) ORDER BY ASC(?cena) default ORDER BY DESC(?cena), ?název: hierarchické kriteria uspořádání SPARQL – motivace, syntax
LIMIT, OFFSET und DISTINCT Omezení velikosti výstupu: LIMIT: maximální počet výsledků (řádků tabulky) OFFSET: poloha/pozice prvního výsledku SELECT DISTINCT: SELECT DISTINCT ?kniha, ?cena WHERE { ?kniha <http://example.org/Cena> ?cena . } ORDER BY ?cena LIMIT 5 OFFSET 25 LIMIT a OFFSET mají smysl jen s ORDER BY SPARQL – motivace, syntax
Kombinace modifikátorů Pořadí zpracování vícero modifikátorů: 1 nejdřív uspořádání podle ORDER BY 2 Odstranění nevybraných proměnných 3 Odstranění vícenásobných výsledků (DISTINCT) 4 Odstranění prvního OFFSET výsledku 5 Odstranění všech výsledků nad LIMIT Uspořádat se dá i podle nevybraných proměnných ORDER BY není relevantní jen pro SELECT SPARQL – motivace, syntax
přehled SPARQL – motivace, syntax
Otevřené Otevřené otázky Jak je přesně definovaná sémantika SPARQL ? Jak těžká je úplná implementace SPARQL? Jak se můžeme dotazovat nad RDF Schema nebo OWL? Jak jinak to vše navrhnout? SPARQL – motivace, syntax
Závěr aaa SPARQL – motivace, syntax