9 RDF-kyselykielten perusteet: SPARQL

Samankaltaiset tiedostot
9 RDF-kyselykielten perusteet: SPARQL

SPARQL(SPARQL Protocol and RDF Query Language)

Eero Hyvönen. Semanttinen web. Linkitetyn avoimen datan käsikirja

SPARQL-workshop. Sini Pessala Kirjastoverkkopäivät KANSALLISKIRJASTO - Kirjastoverkkopalvelut

Paikkatiedot ja Web-standardit

Semanttinen Web. Ossi Nykänen Tampereen teknillinen yliopisto (TTY), DMI / Hypermedialaboratorio W3C Suomen toimisto

Semanttinen Web. Ossi Nykänen. Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), Hypermedialaboratorio W3C Suomen toimisto

Luento 12: XML ja metatieto

SPARQL. Timo Pitkänen. Seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

è è è RDF-perusteet 7 RDF-perusteet

standardit (W3C, ISO) Semanttisen laskennan tutkimusryhmä Teknillinen korkeakoulu

Hohde Consulting 2004

Semanttinen Web. Ossi Nykänen. Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), W3C Suomen toimisto

Rakenteisten dokumenttien jatkokurssi, syksy 2006

W3C-teknologiat ja yhteensopivuus

W3C, Web-teknologiat ja Semanttinen Web

12 Pari sanaa sovelluskehityksestä

SELECT-lauseen perusmuoto

RDF ja RDFS. 8 RDF ja RDFS

Esimerkki uudelleenohjauksen teknisestä toteutuksesta

The OWL-S are not what they seem

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

6 Semanttinen Web 101

6 Semanttinen Web 101

W3C, Web-teknologiat ja XML

SÄHKE-hanke. Abstrakti mallintaminen Tietomallin (graafi) lukuohje

Java-kielen perusteita

Semanttisen webin käsikirja (luonnos)

9.16 XSLT ja nimiavaruudet (1/3): literaali oletusnimiavaruus

Ontologiat merkitysten mallintamisessa: OWL. Eeva Ahonen

5 XML Query Language. Skeemojen opiskelun myötä olemme polulla joka luontevasti johtaa ajatukseen XMLdokumenteista

W3C ja alueellinen standardointi

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

TIEDONHALLINTA - SYKSY Luento 8. Saapumisryhmä: Pasi Ranne /9/13 Helsinki Metropolia University of Applied Sciences

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

CSE-A1200 Tietokannat

XML johdanto, uusimmat standardit ja kehitys

12 Case: "hajautettu kauppapaikka"

HELIA 1 (14) Outi Virkki Tiedonhallinta

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005

6 Semanttinen Web 101

XQuery tietokannan kyselykielenä

10 Ohjelmoinnista Semanttisessa Webissä

Helsingin yliopisto/tktl Kyselykielet, s 2006 Relaatiokalkyylit. Harri Laine 1

TIEDONHALLINTA - SYKSY Luento 10. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Java-kielen perusteet

VINKKI: Katso Kentät Muistioon -painikkeella, mikä on taulukon nimen oikea kirjoitusasu.

3 Verkkosaavutettavuuden tekniset perusteet

12 Case: "hajautettu kauppapaikka"

Paikannimirekisteri linkitettynä tietona

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

W3C ja Web-teknologiat

Media- ja kulttuuripalvelut. Eetu Mäkelä

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Resource Description Framework (RDF) -konsepti. Lauri Antikainen

5 XML Query Language. Skeemojen opiskelun myötä olemme polulla joka luontevasti johtaa ajatukseen XMLdokumenteista

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Sosiaalihuollon asiakastiedon arkiston validointipalvelu. Käyttöohje

Logiikkapohjainen lähestymistapa RDF-tietolähteen esittämiseksi. Tuomas Räsänen

10 Nykyaikainen WWW-arkkitehtuuri

Varmennepalvelu Rajapintakuvaus Kansallisen tulorekisterin perustamishanke

Koostefunktiot. Viisi standardifunktiota: Esim. montako henkilöä on henkilo-taulussa:

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

T Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot

Web-teknologiat. XML-datan kysely Topi Sarkkinen

Makrojen mystinen maailma lyhyt oppimäärä

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

SQL:N PERUSTEET MARKKU SUNI

Java-kielen perusteet

XML-tietojenkäsittely

W3C ja Web-teknologiat

W3C ja Web-teknologiat

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Johdatus rakenteisiin dokumentteihin

Semanttinen Web. Ossi Nykänen. Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), W3C Suomen toimisto

Internet jolla on merkitystä

Ehto- ja toistolauseet

CS-A1150 Tietokannat CS-A1150 Tietokannat / 39

6 Mukautuvat verkkopalvelut

7. Näytölle tulostaminen 7.1

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri

13. Loogiset operaatiot 13.1

Graafitietokannan visualisointi- ja hallintatyökalu

W3C: teknologia ja (tieto)yhteiskunta

Kyselyn yleisrakenne:

XML ja Web Services update

Haskell ohjelmointikielen tyyppijärjestelmä

18. Abstraktit tietotyypit 18.1

StanForD-XML. Juha-Antti Sorsa, Tapio Räsänen, Vesa Imponen

Tutkitaan sitten HTML-dokumenttien anatomiaa, jotta päästään käsiksi rakenteisten dokumenttien käsitteistöön esimerkkien kautta.

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

SQL - STRUCTURED QUERY LANGUAGE

Tekstiviestipalvelun rajapintakuvaus

Tyyppiluokat II konstruktoriluokat, funktionaaliset riippuvuudet. TIES341 Funktio-ohjelmointi 2 Kevät 2006

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

ITKP102 Ohjelmointi 1 (6 op)

JHS XXX Paikkatiedon yksilöivät tunnisteet Liite 2: Esimerkki tiedontuottajan URI-palvelun teknisestä toteutuksesta

Transkriptio:

9 RDF-kyselykielten perusteet: SPARQL Pelkkä yhteensopiva tietomalli ei sovellusten toteuttamiseen tietenkään riitä. RDFsovellusten yleiskäyttöisen perustan muodostavat erilaisten kyselyrajapinnat ja - prosessorit. Tilanne on vastaava kuin XML:n ja XQueryn tapauksessa. Seuraavassa tarkastelemme SPARQLkyselykieltä. SPARQL on melko yksinkertainen kyselykieli joka yhdistelee esim. N3:n (tai Turtlen) ja XQueryn piirteitä. Tätä kirjoittaessa SPARQL-työ on W3C:ssä vielä kesken (mutta last call -vaiheessa) MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 167

9.1 Välisoitto Käytännön tiedonhallinnan sovelluksissa keskeiset pulmat liittyvät yleensä tiedon - saatavuuteen - esitystavan virheettömyyteen - sisällön oikeellisuuteen - aineiston täydellisyyteen ja ylläpitoon - jne. Nyt puhumme (taas) vain tekniikasta! MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 168

9.2 RDF ja kyselysovellukset Koska RDF voidaan jäsentää tietokannan tavoin, luonteva tapa rakentaa sovelluksia on taas abstrahoida RDF-data kyselyn (Query) kohteeksi Kyselykielet voidaan jakaa suunnilleen kolmeen luokkaan: - paljaan RDF-tietomallin varassa toimivat kyselyt (ei "tulkintaa") - RDF-skeemojen, OWLin, tms. neutraalin käsitemallin varassa toimivat kyselyt (sisäänrakennettu päättely ja notaatio esim. aliluokkien hallintaan) - kuten edellä, mutta lisäksi oletuksena sovelluskohtainen päättelymekanismi tms. (esim. aikaan tai paikkatietoihin sidottu päättely) Eri lähestymistapojen edut ovat melko ilmeisiä (kyselylausekkeiden ilmaisuvoima vs. kirjoitusasun pituus), samoin haitat (kyselyjen monimutkaisuus ja laskennan raskaus [erityisesti päättelyn osalta!]) Kyynisempi lukija voi miettiä: mihin XQuery riittäisikään jos olisi de facto normalisoitu RDF/XML-formaatti (vastaus: "no, päättely olisi hankalaa...") MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 169

9.3 RDQL, Jena & ARQ RDF-tietomallin perusteella on määritelty lukuisia kyselykieliä joiden perusteella W3C standardoi omaansa, nimellä SPARQL (SPARQL Protocol And RDF Query Language) Kukaties suosituin yksinkertainen RDF-kyselykieli on "perinteisesti" ollut RDQL (RDF Query Language) - hyvin yksinkertainen, paljaan RDF-tietomallin kyselykieli - toteutus esim. osana (Java-pohjaista) Jena -sovelluskehikkoa RDQL on "valmis", muttei "standardi", SPARQL taas on vasta kehitteillä Käytännössä tutustumme seuraavassa SPARQL-kyselykieleen koska: - se muodostunee de facto -standardiksi ("ja opimmepahan RDQL:ää") - saatavilla on jo välineitä ("RDQL-tuki laajenee SPARQL-tueksi") - esim. Jenan moduuli ARQ tukee jo SPARQL-kieltä ja helposti saatavilla MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 170

9.4 Esimerkki: SPARQL-kysely (1/2) Haetaan "resurssit jotka on kirjattu tietyille päiville": PREFIX a: <http://www.w3.org/2000/10/annotation-ns#> PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX xsd: <http://www.w3.org/2001/xmlschema#> SELECT?annotates FROM <http://example.org/data.ttl> WHERE {?annot a:annotates?annotates.?annot dc:date?date. FILTER (?date = xsd:datetime("2004-01-01t00:00:00z")?date = xsd:datetime("2005-01-01t00:00:00z") ) } Huomioita: - syntaksi yhdistelmä SQL:ää ja N3:sta (Turtle...) - kysely pohjautuu suoraan RDF-graafin rakenteeseen - käytössä on rakentajia ja operaattoreita (käytännössä "XQueryn mukaan") - palauttaa (nyt) listarakenteen joka itsessään ei ole RDF-graafi MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 171

9.5 Esimerkki: SPARQL-kysely (2/2) Sovelletaan yo. kyselyä oheiseen dataan: @prefix a: <http://www.w3.org/2000/10/annotation-ns#>. @prefix dc: <http://purl.org/dc/elements/1.1/>. _:b a:annotates <http://www.w3.org/tr/rdf-sparql-query/>. _:b dc:date "2004-12-31T19:01:00-05:00"^^<http://www.w3.org/2001/XMLSchema#dateTime>....tuloksena taulukko ("oikeasti" XML-dataa tai esim. iteraattori) annotates ---------------------------------------- <http://www.w3.org/tr/rdf-sparql-query/> Jos olisi kysytty useita muuttujia (esim.?date), tulos olisi voinut olla esim. annotates date ------------------------------------------+---------------------------- <http://www.w3.org/tr/rdf-sparql-query/> 2004-12-31T19:01:00-05:00 MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 172

9.6 SPARQL, perusidea SPARQL on pohjimmiltaan melko yksinkertainen kyselykieli: - kysely nojautuu vahvasti RDF-graafin rakenteeseen (Patterns) - SPARQL-kyselyt eivät oletuksena tulkitse semanttista tietoa (päättely) - kyselymekanismi kuitenkin sallii laajennukset Kysely voi nyt... - hakea "raakatietoa" RDF-datasta (esim. taulukon URI-nimiä) - tuottaa tuloksena uuden RDF-graafin (ts. tuottaa RDF-dataa) Yhden ja saman kyselyn voi yleensä esittää usein eri tavoin (ja kuten SQL:ssä tuloksena on eroja paitsi syntaksin, myös suorituskyvyn osalta) MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 173

9.7 SPARQL-kielioppi SPARQL-kysely (GP, DS, SM, R) sisältää seuraavia osia: - graafeja (ja lausumia) sovittavia hahmoja (Graph Pattern, Triple Pattern) - RDF-datalähteen (RDF Dataset) - muuntimia (Solution Modifier) - tulostimen (Result Form) Lähemmin tarkasteltuna kyselystä löytyy erityisesti - avainsanoja (Keyword), esim. kyselyhahmon (Query Pattern) ilmaiseva WHERE - termejä (Term), eli IRI-nimiä, literaaleja ja tyhjiä solmuja, esim. foaf:name - muuttujia (Query Variable), esim.?x Iso osa rakenneosista on valinnaisia, esim. datalähde (FROM) voi käydä ilmi kyselyn kontekstista MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 174

9.8 Kyselyiden anatomia (1/5): hahmot ja muuttujat Tyypillinen kysely on kiinnostunut tiettyjen muuttujien arvoista, asettaa ehtoja joita datalähteen tulee noudattaa ja kirjoittaa vastauksen helposti käsiteltävään muotoon, esim. PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT?name?mbox WHERE {?x foaf:name?name ; foaf:mbox?mbox. FILTER ( lang(?name) = "ES" ) } Huomioita: - huomaa lyhennemerkintä (yhteinen subjekti ja ";") - osa muuttujista voi esiintyä vain esim. WHERE-osan sisällä (?x) - muuttujien ja prefiksinimien valinnalla ei juuri ole merkitystä (muuttujat...) - ilmeisestikään tehokas strategia ei ole kasata kaikkea maailman RDFdataa yhteen nippuun ja filtteröidä sitä MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 175

9.9 Kyselyiden anatomia (2/5): datatyypit ja rajaus Kyselyt voivat tietenkin myös kysellä tietoja datatyyppeihin vedoten SELECT?v WHERE {?v?p "abc"^^<http://example.org/datatype#specialdatatype> } XQuery hyödyntää lyhennemerkintöjä mm. RDF-primitiiveihin ja datatyyppeihin liittyen - esim.?x a :Class1 tarkoittaa?x rdf:type :Class1 - esim. "42" on merkkijono, 42 tyyppiä xsd:integer; 1.7e2 ja true vastaavasti Tulosjoukon rajoittaminen onnistuu siis FILTER-avainsanalla: SELECT?title?price WHERE {?x ns:price?price. FILTER (?price < 30). # huomaa kohta johon FILTER on kirj.?x dc:title?title. } MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 176

9.10 Kyselyiden anatomia (3/5): valinnaisuus ja vaihtoehdot Kysely voi sisältää valinnaisia osia (ts. evaluoidaan jos annettu) PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX ns: <http://example.org/ns#> SELECT?title?price WHERE {?x dc:title?title. OPTIONAL {?x ns:price?price. FILTER (?price < 30) } } Kysely voi sisältää vaihtoehtoisia osia (ts. jompikumpi tai molemmat) PREFIX dc10: <http://purl.org/dc/elements/1.0/> PREFIX dc11: <http://purl.org/dc/elements/1.1/> SELECT?title WHERE { {?book dc10:title?title } UNION {?book dc11:title?title } } MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 177

9.11 Kyselyiden anatomia (4/5): nimetyt graafit Datalähde voi koostua nimetyistä RDF-graafeista (Named Graph) PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX data: <http://example.org/foaf/> SELECT?nick WHERE { GRAPH data:bobfoaf {?x foaf:mbox <mailto:bob@work.example>.?x foaf:nick?nick } } Nimetyt graafit voidaan tietää myös kontekstin perusteella ja graafien yli voidaan iteroida: PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT?src?bobNick WHERE { GRAPH?src {?x foaf:mbox <mailto:bob@work.example>.?x foaf:nick?bobnick } } MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 178

9.12 Kyselyiden anatomia (5/5): datalähteet ja nimeäminen Nimetyt graafit voidaan käytännössä kertoa datalähdeen esittelyn yhteydessä (FROM ja FROM NAMED): PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX dc: <http://purl.org/dc/elements/1.1/> SELECT?who?g?mbox FROM <http://example.org/dft.ttl> FROM NAMED <http://example.org/alice> FROM NAMED <http://example.org/bob> WHERE {?g dc:publisher?who. GRAPH?g {?x foaf:mbox?mbox } } "Nimeämätöntä graafia" joka esimerkeissämme on esiintynyt datalähteenä, kutsutaan oletusgraafiksi (Default Graph) MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 179

9.13 Neljä SPARQL-sovellusta: tulosten esittäminen Kysely voi palauttaa tuloksen loogisesti eri muodoissa; SPARQL määrittelee seuraavat "tulostajat": - SELECT: palauttaa valittujen muuttujien mukaisen "taulukon" - CONSTRUCT: palauttaa RDF-graafin joka rakennettu kyselymuuttujista - DESCRIBE: palauttaa RDF-graafin joka kuvaa löydettyjä resursseja - ASK: palauttaa totuusarvon (true/false) SPARQL mahdollistaa siis esim. - raakatiedon hakemisen, - RDF-muunnokset, sekä - yksinkertaiset asiantuntijajärjestelmät (vrt. Prolog ilman sääntöjä) MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 180

9.14 SELECT pähkinänkuoressa SELECT-kyselyyn voi sisältyä muuntimia: - Projection: "tavallinen kysely" - DISTINCT: ei toisteta tuloksen monikoita - ORDER BY: järjestetään tietyn muuttujan mukaan (ASC/DESC-järjestys) - LIMIT: montako monikkoa otetaan tulokseen - OFFSET: monennestako tuloksen monikosta alkaen tulostetaan Esim. PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT DISTINCT?name WHERE {?x foaf:name?name } ORDER BY?name LIMIT 5 # ts. 5 tulosta joista ensimmäisenä näytetään 10. tulos, OFFSET 10 # toisena 11. tulos, jne. MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 181

9.15 CONSTRUCT pähkinänkuoressa, esimerkki PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> CONSTRUCT {?x vcard:n _:v. _:v vcard:givenname?gname. _:v vcard:familyname?fname } WHERE { {?x foaf:firstname?gname } UNION {?x foaf:givenname?gname }. {?x foaf:surname?fname } UNION {?x foaf:family_name?fname }. } Huomioita - rakentajaan muodostetaan tuloksen lausumarakenne kolmikoiden avulla - myös muuntimia voidaan käyttää MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 182

9.16 DESCRIBE pähkinänkuoressa, esimerkki SPAQRL-prosessorilta pyydetään tiettyjä resursseja kuvaavaa RDF-graafia PREFIX foaf: <http://xmlns.com/foaf/0.1/> DESCRIBE?x WHERE {?x foaf:mbox <mailto:alice@org> } Huomioita - perusidea on se, että tulosgraafi sisältää identifioituja resursseja kuvaavia lausumia - prosessori päättää tuloksen (ja voi ilmeisesti jopa lisätä siihen omia tietojaan) VAROITUS: DESCRIBE-tulostajan semantiikka ei tätä kirjoittaessa ole vielä täysin selvä (ja saattaa jopa pudota suosituksesta pois) MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 183

9.17 ASK pähkinänkuoressa, esimerkki Kysytään ehdon toteutumista: PREFIX foaf: <http://xmlns.com/foaf/0.1/> ASK {?x foaf:name "Alice" ; foaf:mbox <mailto:alice@work.example> } "Tuloksena saadaan yes tai no" (pitäisi olla xsd:boolean...) Kyse on oikeastaan vain SELECT-kyselyn kuorruttamisesta (ts. oliko vastaus tyhjä?) Toteuttaa oleellisesti ehtolausekkeen joka voi toimia esim. reaktiivisen järjestelmän liipaisimena MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 184

9.18 Lausekkeiden rakentaminen SPARQL määrittelee tukun operaattoreita joiden avulla erityisesti hahmojen määrittely tehostuu (huomaa että mukana on esim. not()-operaattori!) - XQuery Connectives: A B, A&&B - XPath Tests: A=B, A!=B, A=B, A<B, A>B, A<=B, A>=B, A*B, A/B, A+B, A- B,!A, +A, -A - SPARQL Tests: A=B, A!=B, BOUND(A), isuri(a), isblank(a), isliteral(a), REGEX(STRING, PATTERN [, FLAGS]) - SPARQL Casts: STR(A), LANG(A), DATATYPE(A) Operaattoreita on määritelty rinnakkain useille tietotyypeille: - konnektiivit boolean-tyypille, ehdot eri vertailtaville tietotyypeille - testit ja cast-operaatiot termeille, muuttujille ja literaareille Käytössä on myös rakentajia (Constructor): bool, dbl, flt, dec, int, dt, str, IRI, litrl MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 185

9.19 SPARQL-protokolla ja sarjallistaminen (1/3) SPARQL on osa suurempaa W3C:n RDF Data Access -työryhmän työtä - Protocol, Query Results XML Format, Query Language for RDF Työ määrittelee esim. SELECT-lauseen tuloksen XML-muodossa, palveluna á la Semantic Web Services Esimerkki, SPARQL-kysely: PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX dc: <http://purl.org/dc/elements/1.1/> SELECT?who?g?mbox WHERE {?g dc:publisher?who. GRAPH?g {?x foaf:mbox?mbox } } MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 186

9.20 SPARQL-protokolla ja sarjallistaminen (2/3) HTTP-kutsu (huh!): GET /sparql/?query=encodedquery&default-graphuri=http://my.example/publishers &default-graph-uri=http://my.example/morepublishers&named-graphuri=http://your.example/foaf-alice &named-graph-uri=http://www.example/foaf-bob&named-graphuri=http://www.example/foaf-susan &named-graph-uri=http://this.example/john/foaf Host: my.example User-agent: sparql-client/0.1 (Huomaa että nyt pätkitty usealle riville tulostusta varten) MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 187

9.21 SPARQL-protokolla ja sarjallistaminen (3/3)...ja lopulta tulos HTTP/1.1 200 OK Date: Wed, 03 Aug 2005 12:48:25 GMT Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3 Connection: close Content-Type: application/sparql-results+xml; charset=utf-8 <?xml version="1.0"?> <sparql xmlns="http://www.w3.org/2005/sparql-results#"> <head> <variable name="who"/> <variable name="g"/> <variable name="mbox"/> </head>... </sparql> MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 188

9.22 Sovelluksista Kuten Jena-sovelluskehys, myös ARQ-prosessori on saatavilla verkossa - ks. http://jena.sourceforge.net/ - ks. http://jena.sourceforge.net/arq/ Tulevaisuudessa ARQ lisättäneen standardimoduuliksi Jenaan Helpoin tapa SPARQL-kyselyiden kokeiluun on sopivan verkkopalvelun käyttö - ks. esim. http://www.sparql.org/query.html (Jenan ARQ verkossa) Muitakin toteutuksia toki on (esim. Rasqal ja twinql) MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 189

9.23 Lopuksi SPARQL-kyselykieli auttaa jäsentämään Semanttisen Webin suurena "RDF-tietokantana" josta tieto on helposti saatavilla Käytännön sovellusten näkökulmasta pulmallista on esim. puuttuvan, muuttuvan ja virheellisen tiedon hallinta (RDF on kuitenkin pohjimmiltaan rajapinta) Kyselysovellukset ovat kaiketi suoraviivaisin tapa SW-sovellusten toteuttamiseen, mutta sovelluslogiikan näkökulmasta pintaa on vasta raapaistu... (mutta legacymaailma vie toki ideat helposti mennessään) MATHM-57200 RAKENTEISTEN DOKUMENTTIEN JATKOKURSSI (syksy 2005) - ON 190