10 Ohjelmoinnista Semanttisessa Webissä Semanttista Webiä (SW) on sivuttu kurssilla useaan otteeseen. Nyt tavoitteena on käydä tiiviisti läpi Semanttisen Webin tekninen perusta, esitellä muutamia esimerkkejä Semanttisen Webin sovelluksista ja pohtia sitä, miten SW tarkoittaa erityisesti verkkopalvelun suunnittelijan ja toteuttajan näkökulmasta Semanttinen Web tarjoaa pohjan mukautuvaan hypermediaan, tekoälyyn, koneoppimiseen tai tiedonlouhintaan perustuville sovelluksille. Semanttistä Webiä käsitellään tässä etenkin siitä syystä, että mukautuvan hypermedian ja Semanttisen Webin ideoiden, tekniikoiden ja menetelmien yhdistäminen tarjoaa verkkopalvelun toteuttajalle merkittäviä uusia mahdollisuuksia ilman syvällistä tekoälytieteiden osaamista Kaksi lähestymistapaa Semanttisen Webin soveltamiseen: Tiedon julkaiseminen Semanttiseen Webiin muiden hyödynnettäväksi Semanttiseen Webiin julkaistun tiedon hyödyntäminen omassa sovelluksessa Tässä esityksessä keskitytään perusteiden käsittelyn jälkeen tiedon julkaisemiseen Semanttiseen Webiin. 7307010 Hypermedian ohjelmointi (kevät 2005) 120
Taustaa ja käsitteitä Klassisen tiedon määritelmän mukaan tieto on tosi, perusteltu uskomus. Suomenkielessä käsitteellä tieto viitataan sekä dataan että informaatioon. Data on informaation uudelleen tulkittavissa oleva esitystapa, joka sopii siirtoon, tulkintaan tai käsittelyyn. Dataa voi käsitellä joko ihminen tai sitä voidaan käsitellä automaattisin menetelmin. Informaatio on älykkyyttä tai tietämystä, joka voidaan esittää kommunikointiin, varastointiin tai käsittelyyn soveltuvassa muodossa. Informaatiolla voidaan tarkoittaa myös datan ihmiselle tuottamaa merkitystä Metatieto tai kuvailutieto on rakenteista, jotakin muuta tietoa kuvaavaa tietoa, jota voidaan liittää esimerkiksi erilaisiin elektronisiin tallenteisiin. Tiedon täsmällinen esittäminen perustuu käsitteellistämiseen eli kiinnostuksen kohteena olevan ilmiön käsitteiden ja niiden välisten suhteiden täsmälliseen määrittelemiseen. Ontologia tai käsitemalli on käsitteellistetyn tiedon täsmällinen määritys. Semantiikka tarkoittaa (Semanttisessa Webissä) merkityksen täsmällistä määrittämistä siten, että tietoa voidaan käsitellä tietokoneen avulla tiedon merkityksen perusteella. 7307010 Hypermedian ohjelmointi (kevät 2005) 121
Semanttisen Webin perusteet W3C:n Semanttinen Web on nykyisen World Wide Webin (WWW) laajennus, jossa tiedolle annetaan täsmällinen merkitys. Tavoitteena on se, että tietokoneet pystyvät paremmin auttamaan ihmisiä suurien tietomäärien käsittelyssä. Semanttisen Webin perustan muodostavat seuraavat tekniikat: Extensible Markup Language (XML): XML-kielen rooli on tiedon rakenteistaminen eli jakaminen riittävän pieniin palasiin, jotta sitä voidaan käsitellä järjestelmällisellä tavalla. Uniform Resource Identifiers (URI): URI-tunnisteiden avulla resursseille voidaan antaa maailmanlaajuisesti yksikäsitteiset tunnisteet. Resource Description Framework (RDF): RDF-kehyksen avulla voidaan määritellä kuvailutietoa eli tietoa resurssien ominaisuuksista. Kuvailutiedon avulla voidaan hallita rakenteista tietoa. Web Ontology Language (OWL): Yksikäsitteisten käsitemallien eli ontologioiden määrittelemiseen tarkoitettu kieli. Käsitemalleja tarvitaan, jotta kuvailutiedon tehokas hyödyntäminen päättelyn (infer) avulla on mahdollista. SW:ssä tietoa julkaistaessa kerrotaan tiedon merkitys, ei mahdollisia käyttökohteita. 7307010 Hypermedian ohjelmointi (kevät 2005) 122
Semanttisen Webin protokollapino Semanttisen Webin tasot tai protokollapino Berners-Leen mukaan: Lähde: Berners-Lee, T. Semantic Web - XML2000, ks. http://www.w3.org/2000/talks/1206-xml2k-tbl/overview.html 7307010 Hypermedian ohjelmointi (kevät 2005) 123
Esimerkkejä Levyn tiedot XML-muodossa: <record genre="surf" year="1997"> <name>absurdistan</name> <artist>laika and the Cosmonauts</artist> </record> Levyn tiedot RDF-muodossa sarjallistettuna N3-kielellä: @prefix : <http://www.levylaari.fi/2005/record#>. @prefix genre: <http://www.levylaari.fi/2005/genre#>. @prefix artist: <http://www.levylaari.fi/2005/artist#>. :Absurdistan :genre genre:surf. :Absurdistan :year "1997". :Absurdistan :artist artist:laikaandthecosmonauts. OWL-kielellä voidaan määritellä levyn kuvailutietojen käsitemalli: @prefix : <http://www.levylaari.fi/2005/record#>. @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix rdfs: <http://www.w3.org/2001/01/rdf-schema#>. @prefix owl: <http://www.w3.org/2002/07/owl#>. @prefix genre: <http://www.levylaari.fi/2005/genre#>. :Record a owl:class. :genre a rdf:property; rdfs:domain :Record; rdfs:range genre:genre. 7307010 Hypermedian ohjelmointi (kevät 2005) 124
SW-esimerkki: Dublin Core Dublin Core (DC) on yleisesti käytössä oleva kuvailutiedon rakennemalli, jonka keskeisenä tavoitteena on aineiston hallinta, erityisesti hakutulosten parantaminen erilaisissa järjestelmissä. DC:n alkuperäisiä suunnittelutavoitteita ovat yksinkertaisuus, yhteiset kuvailuperiaatteet, kansainvälisyys ja laajennettavuus. DC:n laaja suosio perustuu sen yksinkertaisuuteen ja vapauteen: kaikki 15 kenttää ovat vapaaehtoisia ja kutakin niistä voidaan toistaa tarvittava määrä. DC:n määrittelemät kentät ovat nimeke, tekijä, aihe, kuvaus, julkaisija, muu tekijä, aikamääre, laji, formaatti, indentifiointitunnus, lähde, kieli, suhde, kattavuus ja oikeudet. DC määrittelee rakennemallin kuvailutiedolle ottamatta kantaa lopulliseen esitysmuotoon. Käytännössä DC-muotoinen kuvailutieto onkin esitettävissä useilla eri tavoilla. Käytössä olevia esitysmuotoja ovat esimerkiksi HTML, XML ja RDF. Helsingin yliopisto ylläpitää sivustoa, jossa voi esimerkiksi kokeilla DC-muotoisen kuvailutiedon muokkaamista, ks. http://www.lib.helsinki.fi/cgi-bin/dc.pl. Tarkempi kuvaus Dublin Coren kentistä löytyy suomeksi Helsingin yliopiston sivuilta, ks. http://www.lib.helsinki.fi/dublin_core/dc-sfs.html. 7307010 Hypermedian ohjelmointi (kevät 2005) 125
Esimerkki: levyarvostelun kuvailutiedot DC-muodossa Levyarvostelun DC-muotoiset kuvailutiedot HTML-kielellä esitettynä: <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/tr/xhtml-basic11/xhtml-basic10.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/> <title>arvostelu: Laika and the Cosmonauts / Absurdistan</title> <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" /> <meta name="dc.title" content="arvostelu: LATC / Absurdistan" /> <meta name="dc.creator" content="j. Huhtamäki" /> <meta name="dc.subject" xml:lang="fi" content="surf" /> <meta name="dc.subject" xml:lang="fi" content="levyarvostelu" /> <meta name="dc.format" content="text/html" /> <meta name="dc.language" content="fi" /> </head> <body> <h1>laika and the Cosmonauts / Absurdistan</h1> <p> Uudellaan levyllään Absurdistan Laika and the Cosmonauts liikkuu... </p> </body> </html> 7307010 Hypermedian ohjelmointi (kevät 2005) 126
SW-esimerkki: RDF Site Summary RDF Site Summary (RSS) on eräs ensimmäisistä laajempaa suosiota saaneista Semanttisen Webin sovelluksista. RSS-protokollan käyttötarkoitus on tiedon syndikointi eli erilaisten koosteiden esittäminen ja julkaiseminen RSS-virtojen (RSS Feed) muodossa. RSS-asiakkaita ovat yksittäisiä virtoja yhdistelevät koostajat (aggregator). Yleisimmin RSS-protokollaa käytetään uutisten välittämiseen. RSS soveltuu kuitenkin koosteiden julkaisemiseen mistä tahansa sellaisesta tiedosta, jonka tietoalkiot voidaan yksilöidä URI-tunnistein. Esimerkkejä: verkkolokit (weblog, blog), ruokalistat, jne. RSS on myös klassinen esimerkki SW:n keskeisestä ongelmasta, Not Invented Here (NIH) -ilmiöstä. Sen sijaan, että soveltajat olisivat suosiolla ottaneet käyttöön yleisen ja yhteisen kielen RSS-virtojen esittämiseen, ovat eri tahot määritelleet omia RSSversioitaan. Erilaisia RSS-versioita ovat mm. RSS 0.90, RSS 1.0, RSS 2.0 ja Atom. RSS-protokollan kehityskulku muistuttaa HTML-kielen kehitystä 1990-luvulla: eri toimijat, lähinnä selainten valmistajat, määrittelivät kieleen omia laajennuksiaan. HTML-kielen kohdalla tilanne on nyt rauhoittunut ja eri toimijat ovat antaneet kielen kehittämisen ohjakset W3C:lle. RSS-protokollan tapauksessa tilanne on kuitenkin toinen, sillä W3C:llä ei ole suoraa roolia kehitystyössä. 7307010 Hypermedian ohjelmointi (kevät 2005) 127
Esimerkki: Levylaarin RSS-virta Esimerkki levylaariin viimeksi lisättyjen levyjen tiedoista RSS 1.0 -muodossa esitettynä RDF/XML-kielellä sarjallistetussa muodossa: <?xml version="1.0" encoding="iso-8859-1"?> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://purl.org/rss/1.0/"> <channel rdf:about="http://www.levylaari.fi/uutuudet.rss"> <title>levylaarin uutuudet</title> <link>http://www.levylaari.fi/</link> <description>levylaariin uusimmat levyt RSS 1.0 -virtana. Ota ja syndikoi!</description> <items><rdf:seq> <rdf:li resource="http://www.levylaari.fi/absurdistan"/></rdf:seq> </items> </channel> <item rdf:about="http://www.levylaari.fi/absurdistan"> <title>laika and the Cosmonauts: Absurdistan</title> <description>surf-jyrä Laika and the Cosmonautsin tuorein! </description> <link>http://www.levylaari.fi/latc/absurdistan.php</link> <dc:date>2005-03-30</dc:date> </item> </rdf:rdf> 7307010 Hypermedian ohjelmointi (kevät 2005) 128
Tiedon käsittely Semanttisessa Webissä Tiedon käsittelemisen menetelmät voidaan yleisesti jakaa deklaratiivisiin (declarative) ja proseduraalisiin (procedural). Deklaratiivisissa menetelmissä haluttu toiminnallisuus määritellään yleiselle sovellukselle osoitettavana ohjetiedostona. Proseduraalisissa menetelmissä toiminnallisuus määritellään suoraan ohjelmakoodiksi. XML-muotoisen tiedon käsitteleminen: Proseduraalisia menetelmiä ovat erilaiset ohjelmointirajapinnat, esimerkiksi Simple API for XML (SAX) ja Document Object Model (DOM). Deklaratiivisia menetelmiä ovat esimerkiksi W3C:n XQuery-kyselykieli ja XSL-muunnokset (XSL Transformations, XSLT) RDF-muotoisen tiedon käsitteleminen: Ohjelmointirajapintoihin perustuvia menetelmiä löytyy myös RDF-muotoisen tiedon käsittelemiseen, mutta niitä ei ole standardoitu. Esimerkiksi Jenan (http://jena.sourceforge.net/) RDF API on ohjelmointirajapinta RDFmuotoisen tiedon käsittelemiseen. W3C:n SPARQL Query Language for RDF on esimerkki standardista tavasta käsitellä RDF-muotoista tietoa deklaratiivisen menetelmän avulla. Muita vaihtoehtoja ovat ei-standardit RDF Query Language (RDQL), Sesame RDF Query Language (SeRQL) ja RDF Query Language(RQL). Java-soveltajien käytössä on paras valikoima välineitä, mutta ohjelmistokirjastoja löytyy myös PHP-kielelle. 7307010 Hypermedian ohjelmointi (kevät 2005) 129
Ongelmia Semanttisessa Webissä Semanttisen Webin soveltamiseen liittyy joukko käytännön ongelmia: Tiedon julkaisijoiden osaaminen vaihtelee, joten tiedon esitysmuotojen käyttäminen on ohjeistettava tarkasti. Julkaisijat saattavat myös tulkita esitysmuotoja eri tavoilla. Toimijoiden tarpeet poikkeavat toisistaan, joten esitysmuotojen standardointi on hidasta ja työlästä. Suuri osa Semanttiseen Webiin julkaistusta tiedosta on teknisestä näkökulmasta virheellistä tai sisällöltään epäluotettavaa. Tämä aiheuttaa sen, että tiedon oikeellisuus on yleensä tarkastettava. Ratkaisu: luottamus. Tiedon julkaisijat saattavat julkaista virheellistä tietoa myös tarkoituksellisesti. Esimerkiksi erilaisten tuotteiden valmistajat eivät aina halua julkaista tietoa tuotteidensa virheellisistä tai puutteellisista ominaisuuksista. Merkittävä ongelma Semanttisen Webin on se, että tietoa ei julkaista ohjelmallisesti käsiteltävässä muodossa. Syynä tähän on tietoa hyödyntävien sovellusten pieni määrä. Syynä pieneen määrään on se, että tietoa ei julkaista ohjelmallisesti käsiteltävässä muodossa. Muna vai kana? 7307010 Hypermedian ohjelmointi (kevät 2005) 130
Lopuksi Hypermedian ohjelmoinnin näkökulmasta Semanttinen Web on keskeinen työväline mukautuvien hypermediasovellusten toteuttamisessa, sillä se tarjoaa välineet tiedon käsitteellistämiseen ja käsitteellistetyn tiedon ohjelmalliseen käsittelemiseen. Kapeammasta PHP-soveltajan näkökulmasta Semanttisessa Webissä tärkeintä ovat erilaiset tiedon esitysmuodot, joissa yksittäinen verkkopalvelu voi julkaista tietojansa muiden SW-sovellusten tukemassa ( ymmärtämässä ) muodossa. Semanttisen Webin teknisen perustan muodostavan XML-standardiperheen perusteet käydään läpi opintojaksolla Rakenteiset dokumentit. Semanttisen tiedon esittämistä ja käsittelyä käydään laajemmin läpi Rakenteisten dokumenttien jatkokurssilla. Keskeinen osa Semanttista Webiä on verkkopalveluiden välinen kommunikaatio, jonka perustan muodostavat W3C:n Web-palveluiden (Web Services) teknologiat. Opintojakso XML ohjelmistokehityksessä käsittelee tarkemmin Web-palveluita. Lisätietoa Semanttisesta Webistä löytyy W3C:n Semanttisen Webin aktiviteetin kotisivulta (http://www.w3.org/2001/sw/activity). Ossi Nykäsen vierailuluento opintojaksolla XML ohjelmistokehityksessä käsitteli Semanttista Webiä, ks. http://www.w3c.tut.fi/talks/2005/0310-xmlohj-on/w3c-sw-xml-v003fin.pdf (PDFmuodossa) 7307010 Hypermedian ohjelmointi (kevät 2005) 131