SPARQL-workshop Sini Pessala Kirjastoverkkopäivät 23.10.2013
Esittely Sini Pessala Tietojärjestelmäasiantuntija Kansalliskirjasto, ONKI-projekti Avustajina Osma Suominen Henri Ylikotila 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 2
Workshopin tavoite RDF Mitä on SPARQL Mitä on Mitä sillä tehdään Miten liittyy RDF:ään Muodostaa yksinkertaisia kyselyitä 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 3
Workshopin sisältö 1. Esittely (n. tunti) 1. Kirjasampo 2. RDF-muotoinen data 3. SPARQL 4. Kirjasammon data 2. Omatoiminen SPARQL-kyselyiden luominen (n. tunti) Esityksen materiaali: http://tinyurl.com/kvp-sparql 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 4
Kirjasampo: www.kirjasampo.fi Kaunokirjallisuuteen keskittyvä tietokanta ja verkkopalvelu Funktionaalisen luetteloinnin sovellus aineistosta tunnistetaan ja kuvataan teos-, ekspressio- ja manifestaatiotasot Sisällönkuvailu Indeksointi (genre, teema, aika, paikka, toimijat, ) Esittelytekstit Tekstinäytteet Aikalaisarviot Kannet (värit, aiheet) Ontologiat indeksoinnissa KAUNO, KOKO, kieli-, paikka- ja kansallisuusontologiat Tiedot päivittyvät jatkuvasti Tykkää Facebookissa! Seuraa Twitterissä! 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 5
Linkitetty data ja SPARQL Päivän aineistona Kirjasampon dataa Linkitettyä dataa = eri tietolähteitä yhdistelty Kuvailutietoja Auktoriteettejä Ontologioita Linkitetty data = asioiden väliset suhteet koneymmärrettävässä muodossa Uudet tavat yhdistellä ja hahmottaa tietoa Esim. mistä ammateista on kirjoitettu eniten kirjoja 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 6
RDF-muotoinen data 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 7
Taulut ja RDF-tietomalli henkilö nimi ammatti syntymäpaikka H1 Kirsi Kunnas kirjailija Helsinki H2 Spede Pasanen näyttelijä Kuopio subjekti predikaatti objekti H1 tyyppi henkilö H1 nimi Kirsi Kunnas H1 ammatti kirjailija H1 syntymäpaikka Helsinki H2 tyyppi henkilö H2 nimi Spede Pasanen H2 ammatti näyttelijä H2 syntymäpaikka Kuopio 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 8
ammatti kirjailija H1 nimi Kirsi Kunnas tyyppi s-paikka Helsinki henkilö tyyppi H2 ammatti näyttelijä nimi Spede Pasanen s-paikka Kuopio 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 9
kauno:occupation koko:p35732 skos:preflabel kirjailijat @fi kauno: person_123 skos:preflabel Kunnas, Kirsi @fi rdf:type kauno:placeofbirth paikat:helsinki foaf:person rdf:type koko:p5970 kauno:occupation skos:preflabel näyttelijät @fi saha: ubaf skos:preflabel Pasanen, Spede @fi kauno:placeofbirth paikat:kuopio 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 10
Resurssi Yksilöity asia Asialla on erilaisia ominaisuuksia, esim. Nimi Yhteys toisiin asioihin URI-tunniste http://www.yso.fi/onto/koko/p35732 nimiavaruus (=namespace) päättyy # tai / localname 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 11
Literaalit Ominaisuuksien arvoja Tyyppejä mm. Teksti Kielimääre @fi Luvut Päivämäärät 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 12
Subjekti Predikaatti Objekti koko:p35732 skos:related koko:p15879 skos:preflabel kirjailijat @fi Tyyppi: Resurssi Resurssi Resurssi Literaali 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 13
kauno:person_123175976056120 a foaf:person ; skos:preflabel "Kunnas, Kirsi"@fi. 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 14
Turtle kauno:person_123175976056120 a foaf:person ; skos:preflabel "Kunnas, Kirsi"@fi. XML <rdf:description rdf:about= "http://www.yso.fi/onto/kaunokki#person_123175976056120"> <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/person"/> <skos:preflabel xml:lang="fi">kunnas, Kirsi</skos:prefLabel> </rdf:description> 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 15
SPARQL 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 16
SPARQL SPARQL Protocol and RDF sparkle Query Language 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 17
Tältä se näyttää PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT?nimi WHERE {?henkilo a foaf:person.?henkilo skos:preflabel?nimi. } LIMIT 20 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 18
KYSELY: Henkilöiden nimet PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT?nimi WHERE {?henkilo a foaf:person.?henkilo skos:preflabel?nimi. } LIMIT 20 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 19
DATA: Henkilöiden nimet @prefix kauno: <http://www.yso.fi/onto/kaunokki#> @prefix saha: <http://seco.tkk.fi/saha3/> kauno:person_123175976056120 a foaf:person. kauno:person_123175976056120 skos:preflabel Kunnas, Kirsi. kauno:person_123175976056120 foaf:gender kauno:female. kauno:person_12317593459759 a foaf:person. kauno:person_12317593459759 skos:preflabel Nuorto, Olli. kauno:person_12317593459759 foaf:gender kauno:male. saha:u8208e069-b2c8-4f11-8f78-c430de9bc056 a kauno:romaani. saha:u8208e069-b2c8-4f11-8f78-c430de9bc056 skos:preflabel Muistamisen taito @fi. 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 20
Vastaus 1. Kunnas, Kirsi 2. Nuorto, Olli 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 21
Vastauksien tarkastelu YASGUIssa 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 22
KYSELY: Kirjojen teemat PREFIX kauno: <http://www.yso.fi/onto/kaunokki#> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> SELECT?kirjannimi?teemannimi WHERE{?kirja kauno:teema?teema.?kirja skos:preflabel?kirjannimi.?teema skos:preflabel?teemannimi. } LIMIT 20 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 23
Kyselyn osat PREFIX kauno: <http://www.yso.fi/onto/kaunokki#> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> SELECT?kirjannimi?teemannimi WHERE{?kirja kauno:teema?teema.?kirja skos:preflabel?kirjannimi.?teema skos:preflabel?teemannimi. } LIMIT 20 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 24
Muuttujat PREFIX kauno: <http://www.yso.fi/onto/kaunokki#> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> SELECT?kirjannimi?teemannimi WHERE{?kirja kauno:teema?teema.?kirja skos:preflabel?kirjannimi.?teema skos:preflabel?teemannimi. } LIMIT 20 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 25
DATA: Kirjojen teemat @prefix kauno: <http://www.yso.fi/onto/kaunokki#> @prefix btj: <http://www.btj.fi/> btj:at_1895295 kauno:teema kauno:p46. btj:at_1895295 skos:preflabel Rakkausromaanin resepti @fi. kauno: ateos_57997 kauno:teema kauno:p1102. kauno: ateos_57997 skos:preflabel Suuri valhe @fi. kauno:p46 skos:preflabel rakkausromaanit @fi. kauno:p1102 skos:preflabel ikäero @fi. 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 26
Step-by-step-esimerkki 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 27
KYSELY: Kirsi Kunnaksen teosten määrä PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX kauno: <http://www.yso.fi/onto/kaunokki#> SELECT (count(?teos) as?teosmaara) WHERE {?henkilo a foaf:person.?henkilo skos:preflabel "Kunnas, Kirsi".?teos kauno:tekija?henkilo. } 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 28
KYSELY: Kirjan teemat suomeksi PREFIX kauno: <http://www.yso.fi/onto/kaunokki#> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> SELECT?teemannimi WHERE {?kirja a kauno:romaani.?kirja skos:preflabel "Sukkanauhakäärme"@fi.?kirja kauno:teema?teema.?teema skos:preflabel?teemannimi. FILTER (lang(?teemannimi) = 'fi') } LIMIT 20 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 29
KYSELY: Kirjoja teemalla sota PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX kauno: <http://www.yso.fi/onto/kaunokki#> SELECT?kirjannimi?tekijannimi ("sota" as?teemana) WHERE {?kirja a kauno:romaani.?kirja skos:preflabel?kirjannimi. FILTER (lang(?kirjannimi) = fi )?kirja kauno:tekija?tekija.?tekija skos:preflabel?tekijannimi.?kirja kauno:teema?teema.?teema skos:preflabel "sota"@fi. } ORDER BY ASC(?kirjannimi) LIMIT 20 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 30
KYSELY: Romaanien teemoja PREFIX kauno: <http://www.yso.fi/onto/kaunokki#> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> SELECT DISTINCT?teemannimi where{?romaani a kauno:romaani.?romaani kauno:teema?teema.?teema skos:preflabel?teemannimi. FILTER(lang(?teemannimi) = 'fi') } ORDER BY (?teemannimi) LIMIT 20 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 31
KYSELY: Suomalaisten romaanien pituus PREFIX kauno: <http://www.yso.fi/onto/kaunokki#> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX lingvoj: <http://www.lingvoj.org/lang/> PREFIX xsd: <http://www.w3.org/2001/xmlschema#> SELECT?ilmvuosi (avg(xsd:int(?sivut)) AS?sivujakeskimaarin) (count(*) as?kirjoja) WHERE {?romaani rdf:type kauno:romaani.?romaani kauno:alkukieli lingvoj:fi.?romaani kauno:manifests_in?painos.?painos kauno:ilmestymisvuosi?ilmvuosir.?ilmvuosir skos:preflabel?ilmvuosi.?painos kauno:sivulkm?sivut. FILTER(xsd:int(?sivut)) } GROUP BY?ilmvuosi ORDER BY ASC(?ilmvuosi) 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 32
Esittely VISUssa 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 33
Kirjasammon data 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 34
Kirjasampo Triplejä 4 354 301 Resursseja 510 612 Osittainen skeema löytyy osoitteesta (myös paperilla) http://tinyurl.com/kirjasampo-skeema Täydellinen kuvaus datasetistä http://vocab.at/page/29hl 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 35
Do it yourself! 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 36
Ohjeita omatoimiseen Esimerkkisivu 3 harjoitusta, joilla pääsee alkuun Kalvon esimerkit Muita hyödyllisiä kyselyitä Käsi ylös avustajat! 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 37
Kiitos! sini.pessala@helsinki.fi onki-posti@helsinki.fi 23.10.2013 Kirjastoverkkopäivät - SPARQL-workshop 38