SPARQL – motivace, syntax
SPARQL – motivace, syntax Sémantický web NSWI108 – Sémantizace Webu Ako urobit aby som tieto poznamky videl a na obrazovke neboli 12. SPARQL – motivace, syntax Peter Vojtáš Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 09-SPARQL-Einfuehrung-Intuition-2009.pdf Ako urobit aby som tieto poznamky videl a na obrazovke neboli Nekomerční rozmnožování (kopírování, reprodukce, reprodukování, rozmnožení, rozšíření) A zpracování těchto folií je povoleno … Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web Obsah Sledujeme německou knížku P. Hitzler, M. Krötzsch, S. Rudolph, Y. Sure Semantic Web Grundlagen Springer 2008, ISBN: 978-3-540-33993-9 Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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 Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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-vztah z dané OWL-Ontologie?“ „Které instance dané třídy plynou z OWL-Ontologie?“ Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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 Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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ů Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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 . } Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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) Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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 Ako urobit aby som tieto poznamky videl a na obrazovke neboli název Autor "Semantic Web - Grundlagen" http://example.org/Hitzler http://example.org/Krötzsch http://example.org/Rudolph http://example.org/Sure Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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) Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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 Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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 Ako urobit aby som tieto poznamky videl a na obrazovke neboli subj hodnota _:a „na" _:b „příklad" subj hodnota _:y „na" _:g „příklad" subj hodnota _:z „na" „příklad" Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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 Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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 Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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 Ako urobit aby som tieto poznamky videl a na obrazovke neboli Kniha název autor http://example.org/kniha1 „název1" http://example.org/autor1 http://example.org/kniha2 „název2" http://example.org/kniha3 „název3" _:a http://example.org/kniha4 http://example.org/kniha5 Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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í Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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 Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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:Autor ?autor . } UNION { ?buch ex:Verfasser ?autor . } } OPTIONAL { ?autor ex:Nachname ?name . } Teda defaultní závorkování zleva, nebo UNION má přednost ? Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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} } Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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} Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web Filtrování výsledků Filtrování výsledků Viz německé slidy, více méně se to shoduje s minulou přednáškou Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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á Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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é Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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"; _l ex:emai1 "g.mueller@example.org"; Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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) Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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í Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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 Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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 Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web přehled Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Sémantický web 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? Ako urobit aby som tieto poznamky videl a na obrazovke neboli Sémantizace webu SPARQL – motivace, syntax Úvod
SPARQL – motivace, syntax Závěr aaa Sémantizace webu SPARQL – motivace, syntax