SPARQL Query Language for RDF Motivace Syntax

Podobné dokumenty
SPARQL Sémantika. Peter Vojtáš

RDF a RDF Query. Jakub Nerad 1. prosince Nerad () RDF a RDF Query 1. prosince / 16

SPARQL teorie, endpointy, pojmenované grafy, web API. 4IZ440 Reprezentace a zpracování znalostí na WWW Josef Petrák

RDF API a SPARQL syntaxe, API, příklady. 4IZ440 Reprezentace a zpracování znalostí na WWW Josef Petrák me@jspetrak.name

SPARQL.

Ukládání a vyhledávání XML dat

Úvod do databázových systémů

POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE

RDF serializace Turtle

Dolování v objektových datech. Ivana Rudolfová

Principy XQuery. funkcionální jazyk vše je výraz, jehož vyhodnocením vznikne určitá hodnota základní typy stejné jako v XML Schema:

Metody tvorby ontologií a sémantický web. Martin Malčík, Rostislav Miarka

Úvod do databázových systémů

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 23, 2016

Databázové systémy. Cvičení 6: SQL

Sémantický web 10 let poté

Návrh a tvorba WWW stránek 1/14. PHP a databáze

KIV/ZIS cvičení 5. Tomáš Potužák

Úvod do databázových systémů

Linked Data a jazyk RDF

DOTAZOVACÍ JAZYK PRO MPEG-7 MP7QL SÉMANTICKÉ VYHLEDÁVÁNÍ NAD MULTIMEDIÁLNÍM OBSAHEM

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Modelování a odvozování v RDFS

Databáze I. Přednáška 4

Úvod do programovacích jazyků (Java)

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

Multi-dimensional expressions

Scraping script version 2 (CS)

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12

Web Information Extraction - extrakce informací z webu

Dotazování nad stromem abstraktní syntaxe

Programovací jazyk Pascal

Sémantický Web RDF(S)

POLOPROVOZ ZNALOSTNÍ DATABÁZE INTERPI DOKUMENTACE

PG 9.5 novinky ve vývoji aplikací

Příklad buňka tabulky

Uspořádaný seznam nula nebo více elementů, každý je typem ASN.1 (heterogenní seznam) uspořádaný seznam stejných elementů

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 3.4.

Informační systémy ve zdravotnictví. 8. cvičení

Operátory ROLLUP a CUBE

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Oracle XML DB. Tomáš Nykodým

PRG036 Technologie XML

MBI - technologická realizace modelu

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Využití XML v DB aplikacích

Linked Data a jazyk RDF

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

XQuery. Jirka Kosek. Visual FoxPro DevCon června Praha. Copyright 2005 Jiří Kosek

Rozhraní SAX, SAX vs. SAX2. Jaroslav Ciml

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Databázové systémy Cvičení 5.3

Tvorba informačních systémů

Informační systémy ve zdravotnictví. 6. cvičení

PRG036 Technologie XML

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

Datové typy a struktury

Databáze SQL SELECT. David Hoksza

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

Jak číst a psát RDF. Reprezentace a zpracování znalostí na WWW, Jindřich Mynarz

XMW4 / IW4 Pokročilé SELECT dotazy. Štefan Pataky

Algoritmizace prostorových úloh

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Databázové systémy Cvičení 5

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David

SQL SQL-SELECT. Informační a znalostní systémy. Informační a znalostní systémy SQL- SELECT

Databázové systémy Cvičení 5.2

Java a XML. 10/26/09 1/7 Java a XML

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Standardy publikace a katalogizace otevřených dat. Dušan Chlapek David Hemala

Deskripční logika. Petr Křemen FEL ČVUT. Petr Křemen (FEL ČVUT) Deskripční logika 37 / 157

Michal Krátký, Miroslav Beneš

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky

Dotazování nad XML daty a jazyk XPath

Od relačních databází k technologiím sémantickému webu

PostgreSQL. Podpora dědičnosti Rozšiřitelnost vlastní datové typy. Univerzální nasazení ve vědecké sféře

8.2 Používání a tvorba databází

SNMP Simple Network Management Protocol

Webová prezentační aplikace

NPRG030 Programování I, 2016/17 1 / :58:13

Úvod do programovacích jazyků (Java)

Sémantický Web SPARQL

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09

Ontologie. Otakar Trunda

Skripty základy VB, vestavěné objekty, příklady

Databázové a informační systémy Jana Šarmanová

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

Jazyk PL/SQL Úvod, blok

Programování v jazyku C# II. 5.kapitola

Informační systémy 2008/2009. Radim Farana. Obsah. Základní principy XML

Databázové systémy. * relační kalkuly. Tomáš Skopal. - relační model

OBJECT DEFINITION LANGUAGE. Jonáš Klimeš NDBI001 Dotazovací Jazyky I 2013

Tvorba informačních systémů

NPRG030 Programování I, 2010/11

PODMÍNKY POSKYTOVÁNÍ PŘÍSTUPU K PORTÁLU NAMĚŘENÝCH DAT POMOCÍ WEBOVÝCH SLUŽEB SPOLEČNOSTI ČEZ DISTRIBUCE, A. S.

Semestrální práce z DAS2 a WWW

Programování v jazyce JavaScript

Formální sémantika SQL dotazování

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:

Transkript:

SPARQL Query Language for RDF Motivace Syntax Peter Vojtáš, Jan Dědek Department of Software Engineering Faculty of Information Technology Czech Technical University in Prague Peter Vojtáš, Jan Dědek, Ivo Lašek Semantic Web MI SWE 2011 Lecture 7 MI POA Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Obsah 1. Úvod a motivace 2. Jednoduché SPARQL-dotazy 3. Složitější grafové vzory ve SPARQL 4. Filter ve SPARQL 5. Výstupní formáty ve SPARQL 6. Modifikátory ve SPARQL 7. Shrnutí a výhled MI-SWE 2011 2

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? MI-SWE 2011 3

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 MI-SWE 2011 4

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ů MI-SWE 2011 5

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. } MI-SWE 2011 6

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) MI-SWE 2011 7

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 název "Semantic Web - Grundlagen" "Semantic Web - Grundlagen" "Semantic Web - Grundlagen" "Semantic Web - Grundlagen" Autor http://example.org/hitzler http://example.org/krötzsch http://example.org/rudolph http://example.org/sure MI-SWE 2011 8

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) MI-SWE 2011 9

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 MI-SWE 2011 10

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 subj hodnota subj hodnota subj hodnota _:a na" _:y na" _:z na" _:b příklad" _:g příklad" _:z příklad" MI-SWE 2011 11

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 MI-SWE 2011 12

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 MI-SWE 2011 13

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 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 _:a http://example.org/kniha5 MI-SWE 2011 14

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í MI-SWE 2011 15

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 MI-SWE 2011 16

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? MI-SWE 2011 17

Kombinace volitelnosti s alternativou Obecné pravidlo OPTIONAL se vztahuje vždy na právě jeden (seskupený) vzor vpravo od 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} } MI-SWE 2011 18

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} } MI-SWE 2011 19

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 Syntax und Intuition http://semantic-web-grundlagen.de MI-SWE 2011 20

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á MI-SWE 2011 21

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é MI-SWE 2011 22

Formatování výsledků - CONSTRUCT PREFIX ex: <http://example.org/> CONSTRUCT {_id1 ex:email?email. _id1 ex:telefon?telefon _id1 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. MI-SWE 2011 23

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) MI-SWE 2011 24

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í MI-SWE 2011 25

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 MI-SWE 2011 26

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 MI-SWE 2011 27

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? MI-SWE 2011 28

Dodatky SPARQL vocabulary SPARQL negace Jena rozšíření MI-SWE 2011 29

SPARQL Vocabulary - Keywords Header Query type Modifiers Dataset spec. Graph patterns Constraints Operators BASE SELECT ORDER BY FROM GRAPH STR isuri PREFIX CONSTRUCT LIMIT FROM NAMED OPTIONAL LANG isiri DESCRIBE OFFSET WHERE UNION LANGMATCHES isliteral ASK DISTINCT FILTER DATATYPE REGEX REDUCED a BOUND true { } sameterm false MI-SWE 2011 30

SPARQL Vocabulary - Operators SPARQL operators XPath operators bound isiri isblank isliteral str lang datatype (logical-or) && (logical-and) = (RDFterm-equal) sameterm langmatches regex! A (not) A < B (less-than) A > B (greater-than) A <= B A >= B A * B (multiply) A / B (divide) A + B (add) A - B (subtract) MI-SWE 2011 31

SPARQL Vocabulary type casting From \ To str flt dbl dec int dt bool str Y M M M M M M flt Y Y Y M M N Y dbl Y Y Y M M N Y dec Y Y Y Y Y N Y int Y Y Y Y Y N Y dt Y N N N N Y N bool Y Y Y Y Y N Y IRI Y N N N N N N ltrl Y M M M M M M bool = xsd:boolean dbl = xsd:double flt = xsd:float dec = xsd:decimal int = xsd:integer dt = xsd:datetime str = xsd:string ltrl = simple literal Y = Yes N = No M = dependent on the lexical value... FILTER ( xsd:datetime(?date) < xsd:datetime("2005-01-01t00:00:00z") )... MI-SWE 2011 32

SPARQL Vocabulary Extensions Jena ARQ Function Library http://jena.sourceforge.net/arq/documentation.html Mathematical Functions afn:min afn:max fn:round fn:abs fn:floor fn:ceiling afn:pi afn:e Boolean Functions fn:boolean fn:not RDF Graph Functions afn:bnode afn:localname afn:namespace Miscellaneous Functions afn:now afn:sha1sum String Functions fn:contains fn:starts-with fn:ends-with fn:string-length fn:lower-case fn:upper-case fn:matches fn:concat fn:substring afn:substr afn:substring afn:strjoin fn: <http://www.w3.org/2005/xpath-functions#> apf: <http://jena.hpl.hp.com/arq/property#> MI-SWE 2011 33

SPARQL Vocabulary Extensions Jena Property Function Library http://jena.sourceforge.net/arq/documentation.html list list:member member list list:index (index member) list list:length length container rdfs:member member apf:textmatch LARQ - Free Text Indexing for SPARQL bag apf:bag member seq apf:seq member member bound to each element in the container seq apf:alt member varorterm apf:assign varorterm iri apf:splitiri (namespace localname) subject apf:str object subject apf:blanknode label subject apf:bnode label subject apf:versionarq version var apf:concat (arg arg...) apf: <http://jena.hpl.hp.com/arq/property#>. list: <http://jena.hpl.hp.com/arq/list#. MI-SWE 2011 34

SPARQL negation -! bound predicate PREFIX rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# PREFIX rdfs: http://www.w3.org/2000/01/rdf-schema# PREFIX xsd: http://www.w3.org/2001/xmlschema# PREFIX owl: http://www.w3.org/2002/07/owl# PREFIX owl2xml: http://www.w3.org/2006/12/owl2-xml# PREFIX stud: http://www.semanticweb.org/ontologies/nswi140/study.owl# SELECT?name?student?year?subject WHERE {?student a stud:student; stud:hasname?name; stud:hasstudyyear?year. OPTIONAL {?student stud:hassubject?subject.?subject a stud:databasesubject. } FILTER (?year > 1 ) FILTER (! bound(?subject) ) } ORDER BY?name MI-SWE 2011 35

Jena ARQ Function Library PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX meex:<http://swa.cefriel.it/meex#> PREFIX gd: <http://maps.google.com/> PREFIX evdb: <http://eventful.com/> PREFIX fn: <http://www.w3.org/2005/xpath-functions#> PREFIX afn: <http://jena.hpl.hp.com/arq/function#> PREFIX apf: <http://jena.hpl.hp.com/arq/property#> CONSTRUCT {?event a meex:event; rdfs:label?event_label; meex:haswhere?where_address; gd:latlon?fn_concat. } WHERE {?event a meex:event; rdfs:label?event_label; meex:haswhere?where.?where gd:postaladdress?where_address; gd:hasgeopt?geopt.?geopt evdb:lat?where_lat; evdb:lon?where_lon. } LET (?fn_concat := afn:strjoin(' ',?where_lat, ',',?where_lon)) MI-SWE 2011 36

Jena ARQ Function Library PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX meex:<http://swa.cefriel.it/meex#> PREFIX gd: <http://maps.google.com/> PREFIX evdb: <http://eventful.com/> PREFIX fn: <http://www.w3.org/2005/xpath-functions#> PREFIX afn: <http://jena.hpl.hp.com/arq/function#> PREFIX apf: <http://jena.hpl.hp.com/arq/property#> A další možnosti, např.:?apf_concat apf:concat('apf_concat: '?label). LET (?fn_concat := fn:concat('fn_concat: ',?label)) LET (?afn_concat := afn:strjoin(' ', 'afn_concat:',?label)) LET (?labelup := fn:upper-case(?label)) MI-SWE 2011 37