8 RDF ja RDFS RDF:n merkitys selkiytyy kun tarkastelemme RDFsanastojen määrittelyä (kuvailua). RDF-skeemat (RDF Schema) tarjoaa peruskäsitteet joiden varassa voidaan karkeasti luonnehtia esim. yksinkertaisten käsite- tai luokittelujärjestelmien käsitteitä ja näiden välisiä suhteita. RDF-skeemat lähtevät siitä perusajatuksesta että sanastoja (ja siten sovelluksia) kuvataan luokkien (Class) ja ominaisuuksien (Property) käsitteisiin vedoten. Kuten abstraktin RDF:n tapauksessa, myös RDF-sanastot kuvailevat "jotakin jo olemassa olevaa" (vrt. XML-skeemat!). RDF:lle (tai assertionaaliselle logiikalle) on ominaista ajattelu jonka mukaan kuvailutieto EI ole tyhjentävää! (Erit.: ei negaatiota eikä "suljetun maailman" käsitettä.) 160
8.1 Välisoitto Pelkän RDF-tietomallin varassa ei siis pitkälle päästä ("(s,p,o)") RDF-skeemat tarjoavat keinon määritellä omia sanastoja Tämäkään ei sinänsä vielä varmista "semanttista yhteensopivuutta" sovellusten välillä "käytännössä" juju on yhteisesti sovittujen sanastojen ja nimeämiskäytäntöjen hyödyntämisessä (vrt. yleisesti tunnettujen asiasanastojen käyttö)...koska luokan ja predikaatin käsitteetkin ovat hyvin abstrakteja (ja siten neutraaleja) 161
8.2 Luokkien kuvailu: rdfs:class (1/2) Mallinnuksessa nojaudutaan erityisesti luokan (Class), aliluokan (Subclass) ja esiintymän (Instance) käsitteisiin Esimerkki: (companycar on luokan MotorVehicle esiintymä) ex:motorvehicle rdf:type rdfs:class. exthings:companycar rdf:type ex:motorvehicle. Esimerkki: (Van on luokan MotorVehicle aliluokka) ex:van rdfs:subclassof ex:motorvehicle. Huom. (järkevä sovellus voi asettaa rajoituksia, mutta "oletuksena"...) - luokka voi olla useamman kuin yhden luokan aliluokka - objekti voi olla useamman kuin yhden luokan esiintymä - objekti voi olla samanaikaisesti sekä luokka että esiintymä 162
8.3 Luokkien kuvailu: rdfs:class (2/2) Predikaatista rdf:type voidaan päätellä että subjekti on tyyppiä rdfs:resource ja objekti tyyppiä rdfs:class Vastaavasti, predikaatista rdfs:subclassof voidaan päätellä että subjekti ja objekti ovat luokkia Predikaatti rdfs:subclassof on transitiivinen: - subclassof(a, B) subclassof(b, C) subclassof(a, C) RDF-käytäntö: "luokkien nimet kirjoitetaan isolla alkukirjaimella, objektien ja predikaattien nimet pienellä" (vrt. esim. companycar, MotorVehicle) Koska RDF/XML-tiedostot sallivat tyyppiin nojautuvat lyhennemerkinnät, voidaan esim. luokat kirjoittaa seuraavasti: <rdfs:class rdf:id="van"> <rdfs:subclassof rdf:resource="#motorvehicle"/> </rdfs:class> 163
8.4 Ominaisuuksien kuvailu: rdfs:property (1/2) Predikaattien määrittely "ominaisuuksina" nojautuu relaatioiden määrittelyyn, perustana käytetään määrittelyjoukon (Domain) ja arvojoukon (Range) käsitteitä (r: Domain Range) Esimerkki: ex:person rdf:type rdfs:class. ex:author rdf:type rdf:property. ex:author rdfs:domain ex:book. ex:author rdfs:range ex:person. Huom. - ominaisuudet ovat universaaleja, ts. niitä ei ole kiinnitetty esim. luokkien määrittelyyn (vrt. oliosuunnittelu) - predikaatin ei (tietenkään) tarvitse olla esim. funktionaalinen relaatio (mutta toki voi olla) - määrittelyjoukko voidaan ilmoittaa ilman arvojoukkoa (ja päinvastoin) 164
8.5 Ominaisuuksien kuvailu: rdfs:property (2/2) Arvojoukko voi tietenkin koostua myös literaaleista (rdfs:literal) xsd:integer rdf:type rdfs:datatype. ex:age rdf:type rdf:property. ex:age rdfs:range xsd:integer. Huomaa että RDF ei määrittele datatyyppejä vaan viittaa niihin Predikaatille voidaan sanoa useita arvo- tai määrittelyjoukkoja: tällöin tulkinta on se, että ominaisuuden tulee täyttää kaikki ehdot luvassa on ongelmia... exterms:weight rdfs:domain ex:book. exterms:weight rdfs:domain ex:motorvehicle. Ts. exterms:weight käyttö vaatii nyt että oliot ovat sekä kirjoja että autoja! HUOM!: Tämä piirre vähentää universaalien domain/range-kuvailujen käyttökelpoisuutta, koska yleisesti ottaen ei ole järkevää määritellä "liian" suppeita ominaisuuksia (weightofbooks, parenttiger jne.) 165
8.6 Ominaisuuksien tarkentaminen RDF määrittelee aliluokkaa vastaavan ominaisuuden rdfs:subpropertyof ex:driver rdf:type rdf:property. ex:primarydriver rdf:type rdf:property. ex:primarydriver rdfs:subpropertyof ex:driver. Ts. jos on sanottu ex:companyvan ex:primarydriver ex:fred....voidaan päätellä ex:companyvan ex:driver ex:fred. Aliominaisuudelle pätevät kaikki kantaominaisuuden piirteet 166
8.7 Lisätietoja (1/2) Varsinaisten luokkia ja ominaisuuksia kuvailevien rakenteiden ohella XMLskeemat tarjoavat myös apuvälineitä (vapaamuotoisen) lisätiedon liittämiseksi RDF-dataan Kuvataan resurssi ihmislukijalle "luettavana otsikkona": ex:fred rdfs:label "Fred Möttönen, lähetti"@fi. Kuvataan resurssi ihmislukijalle "kommenttina": ex:primarydriver rdfs:comment "Ensimmäinen kuljettaja vahinkovakuutuksen mukaan."@fi. 167
8.8 Lisätietoja (2/2) Vinkkejä voidaan tarjota myös tiedon tulkintaan: ex:motorvehicle rdfs:seealso dict:car. Vastaavasti "skeematiedon" olemassaolosta voidaan vihjeistää ex:person rdfs:isdefinedby un:humanrights. Mutta: - kyse on intuitiivisista määrittelyistä joita tietokoneet eivät yleisessä tapauksessa ymmärrä -...niinpä (ainakin toistaiseksi?) ko. ominaisuuksien käyttöarvo jää nähtäväksi Huomaa että vaikka formaalin tulkinnan & tietokoneiden näkökulmasta edellisillä kuvauksilla ei juuri semanttista eroa olekaan, niin esim. RDFeditorien/välineiden näkökulmasta erot voivat olla hyvinkin konkreettisia 168
8.9 "RDF & RDFS" Skeemamäärittely jakaa RDF-tiedon luontevasti kahteen moduuliin: - sovellusolioita käsittelevät lausumat ("RDF") - valittua sanastoa kuvaavat terminologiset lausumat ("RDFS") Käytännön sovelluksissa lausumat jaetaan tiedostoihin ylläpidettävyyden ja yleiskäyttöisyyden näkökulmasta company_drivers.rdf "RDFS" MotorVehicle subclassof driver subpropertyof domain primarydriver Person range subclassof Van StaffMember type type "RDF" primarydriver ABC-123 fred acme_drivers.rdf 169
8.10 RDF-skeemojen tulkinta RDF-tietoa tulkitaan oletuksena siis kuvailun (ja päättelyn), ei rajoitteiden näkökulmasta RDFS kuitenkin sallii kuvailutietojen monitulkintaisuuden :-( "esimerkiksi" 1. annetun tiedoston tietojen järkevyyden arviointi 2. tietojen tarkistus (syöttövaiheessa) 3. päättely Käytännössä suuren pulmia tuovat myös seuraavat kysymykset - mikä näkökulma edellä tulisi valita (sovittava RDF:n ulkopuolella) - milloin kuvailutietoa on "riittävästi" saatavilla? (vaikka kuvailumekanismi onkin rakennettu loogiselta rakenteeltaan monotoniseksi) - mikä vaihtoehtoisesta kuvailutiedosta valitaan (ts. vaikkei loogisia ristiriitoja, niin lausumien { type(abc-123, Sedan), type(abc-123, Van) } tulkinta on silti käytännössä melkoinen ongelma 170
8.11 RDF- ja RDFS-sanastojen jäsennys RDF Vocabulary - rdf:type, rdf:property, rdf:xmlliteral, rdf:nil, rdf:list, rdf:statement, rdf:subject, rdf:predicate, rdf:object, rdf:first, rdf:rest, rdf:seq, rdf:bag, rdf:alt, rdf:_1, rdf:_2,..., rdf:value - osajoukot: RDF Reification Vocabulary, RDF Container Vocabulary, RDF Collection Vocabulary RDFS Vocabulary - rdfs:domain, rdfs:range, rdfs:resource, rdfs:literal, rdfs:datatype, rdfs:class, rdfs:subclassof, rdfs:subpropertyof, rdfs:member, rdfs:container, rdfs:containermembershipproperty, rdfs:comment, rdfs:seealso, rdfs:isdefinedby, rdfs:label 171
8.12 Pari sanaa RDF(S)-aksiomista (kuvailu vs. päättely) Kun RDF-dataa tulkintaan formaalisti, oletetaan annetun RDF-datan rinnalle ns. aksiomaattisten lausumien (Axiomatic Triples) joukko RDF-sanastosta määritellään seuraavat lausumat: rdf:type rdf:type rdf:property. rdf:subject rdf:type rdf:property. rdf:predicate rdf:type rdf:property. rdf:object rdf:type rdf:property. rdf:first rdf:type rdf:property. rdf:rest rdf:type rdf:property. rdf:value rdf:type rdf:property. rdf:_1 rdf:type rdf:property. rdf:_2 rdf:type rdf:property.... rdf:nil rdf:type rdf:list. RDFS-sanaston yhteyteen aksiomia määritellään "neljä kertaa enemmän": rdf:type rdfs:domain rdfs:resource. rdfs:domain rdfs:domain rdf:property. rdfs:range rdfs:domain rdf:property.... 172
8.13 Lopuksi RDF-skeemat tarjoavat perustan luokittelujärjestelmien (taksonomia) ja asiasanastojen (tesaurus) kaltaisten rakenteiden määrittelyyn Formaalista määrittelystään huolimatta semanttisen yhteensopivuuden ydin ovat vapaamuotoisesti sovitut ja ohjeistetut käytännön erilaisten standardisanastojen käytöstä (esim. dokumenttien metatiedot ja Dublin Core -sanasto) Skeemojen pulmallisia piirteitä ovat esim. - predikaattien universaali perusluonne - standardisanastojen melko heikko saatavuus / tunnettavuus (toistaiseksi?) Osa pulmista on "helposti" ratkaistavissa (esim. OWL & Property Restrictions), osa ei (vaatii esim. työlästä sanastotyötä) 173