Objektorientert RDF med RDFS

Objektorientert RDF med RDFS

Resource Description Framework Schema (RDFS) er det mest brukte skjemaspråket i den semantiske stakken. RDFS er som en slags universell oversetter, det lar oss knytte data fra forskjellige kilder og data med forskjellige bruksområder. 

For at dette skal være mulig, må man definere et felles vokabular. RDFS er av natur objektorientert. Det vil si, RDFS beskriver klasser av objekter.

Vi bruker samme syntaks for RDFS som for RDF. Her følger et eksempel på bruk av RDFS.

acando:Veronika rdf:type     foaf:Person ;
                rdfs:label   "Veronika Heimsbakk" ;
                rdfs:seeAlso <http://ifi.uio.no/alumni/veronahe> .

Her beskriver vi untertegnede som en ressurs av typen Person. foaf:Person er en RDFS-klasse som er definert et annet sted.

Klasser

Vi kan tenke på en rdfs:Class som en betegnelse av et sett med ressurser. Klasser i RDFS defineres på følgende måte.

acando:Ansatt   rdf:type   rdfs:Class ;
                rdfs:label "Ansatt i Acando." .

acando:Avdeling rdf:type   rdfs:Class ;
                rdfs:label "Avdeling i Acando." .

Disse klassene beskriver henholdsvis ansatte og avdelinger i Acando.

Egenskaper

Vi kan også definere egne egenskaper med RDFS.

acando:iAvdeling rdf:type    rdf:Property ;
                 rdfs:label  "Relasjon mellom ansatt og avdeling i Acando." ;
                 rdfs:domain acando:Ansatt ;
                 rdfs:range  acando:Avdeling .

Nå som vi har en egenskap, kan vi bruke denne med klassene våre til å beskrive en relasjon mellom ansatt og avdeling.

acando:Veronika rdf:type         foaf:Person ,
                                 acando:Ansatt ;
                rdfs:label       "Veronika Heimsbakk" ;
                rdfs:seeAlso     <http://ifi.uio.no/alumni/veronahe> .

acando:ALM      rdfs:subClassOf  acando:Avdeling ;
                rdfs:label       "Application Lifecycle Management" .

acando:Veronika acando:iAvdeling acando:ALM .

rdfs:range og rdfs:domain

Disse egenskapene sier noe om hvordan egenskapen brukes. 

rdfs:range

P rdfs:range C

P er en instans av rdf:Property og C er en instans av rdfs:Class. Med rdfs:range vil egenskapen P ha mulige verdier av klassen C. I triplet acando:iAvdeling rdfs:range acando:Avdeling sier vi at egenskapen acando:iAvdeling kan ha verdier av typen acando:Avdeling, inkludert subklasser av denne.

rdfs:domain

P rdfs:range C

er en instans av rdf:Property og C er en instans av rdfs:Class. rdfs:domain sier noe om hvilke objekter av klassen C som kan ha egenskapen P. For acando:iAvdeling rdfs:domain acando:Ansatt, sier vi at acando:Ansatt kan ha relasjonen acando:iAvdeling, fordi alle ansatte skal være i en avdeling.

Annotering

RDFS introduserer egenskaper som er lesbare for mennesker, men som ikke betyr noe for maskinen. Disse er kalt annotasjonsegenskaper, vi skal lære mer om disse i neste blogginnlegg om OWL. Inntil videre kan vi kjenne til noen egenskaper av denne karakteren fra RDFS.

rdfs:label

En string av tekst som sier noe om ressursen.

rdfs:comment

En lengere tekst som beskriver ressursen.

rdfs:seeAlso

Linker til en annen «relevant» ressurs.

rdfs:literal

Noe som er en primitiv datatype.

Arv

Det er mulig å beskrive arv for både egenskaper og klasser ved å si at det er en sub-klasse eller en sub-egenskap av noe annet.

rdfs:subClassOf

I eksempelet med avdelinger i Acando så vi bruken av denne egenskapen. Vi kan si at avdelingen acando:ALM er en rdfs:subClassOf acando:Avdeling.

Når vi sier X rdfs:subClassOf Y, gjelder

  • at alle instanser av X er også en instans av Y og
  • alle egenskaper i Y er også egenskaper i X.

Siden antall egenskaper for en klasse kan være svært høy, er muligheten for å beskrive slike sub-klasser hensiktsmessig for å redusere antall linjer og øke lesbarheten.

rdfs:subPropertyOf

Denne egenskapen er lik rdfs:subClassOf. Et eksempel på dette kan være:

ex:mother rdfs:subPropertyOf ex:parent .
ex:John  ex:mother     ex:Jane .

Disse to triplene sier at Johns mor er Jane. Siden egenskapen ex:mother er en rdfs:subPropertyOf ex:parent, impliserer dette ex:John ex:parent ex:Jane.

Semantiske implikasjoner

Semantiske implikasjoner (eng: RDFS entailment) er standard implikasjoner for relasjoner i den semantiske webben. Vi bruker implikasjoner for å kunne si om sammenhengen mellom data. Dette er nyttig for store datasett og spørringer. Disse implikasjonene kan deriveres ut fra et sett med forplantingsregler (eng: propagation rules) som er definert under W3C RDF 1.1 Semantics [1], seksjon 9.2.1. Vi skal se eksempel på en av disse reglene her.

Ta følgende datasett som beskriver familierelasjoner. Eksempelet er hentet fra kurset Semantiske teknologier ved Institutt for informatikk [2].

fam:isRelativeOf rdf:type           rdf:Property ;
                 rdfs:range         foaf:Person ;
                 rdfs:domain        foaf:Person .

fam:hasSibling   rdf:type           rdf:Property ;
                 rdfs:subPropertyOf fam:isRelativeOf .

fam:hasSister    rdf:type           rdf:Property ;
                 rdfs:subPropertyOf fam:hasSibling ;
                 rdfs:range         gender:Woman .

Vi skal se om triplet fam:hasSister rdfs:subPropertyOf fam:isRelativeOf er en semantisk implikasjon i dette datasettet ved hjelp av reglene for implikasjon. Triplet er åpenbart en implikasjon på detasettet, og det kan vi bevise ved hjelp av regelen rdfs5.

 

Hvis S inneholder

så impliserer D

rdfs5

xxx rdfs:subPropertyOf yyy .
yyy rdfs:subPropertyOf zzz .

xxx rdfs:subPropertyOf zzz .

Vi kan derivere triplet ved å sette opp triplene på det formatet regelen beskriver.

P1    fam:hasSister    rdfs:subPropertyOf    fam:hasSibling
P2    fam:hasSibling   rdfs:subPropertyOf    fam:isRelativeOf
rdfs5  fam:hasSister    rdfs:subPropertyOf    fam:isRelativeOf

Det eksisterer totalt 13 slike regler for RDFS.

Oppsummering

I dette blogginnlegget har vi introdusert RDF Schema og sett på bruken av dette vokabularet ved å beskrive egne klasser og relasjoner. Vi har også sett på semantiske implikasjoner som legger grunnlag for integriteten i dataen vår. I neste blogginnlegg skal vi lære mer om vokabularer, ontologier og OWL, og vi skal lage våre egne ontologier med verktøyet Protégé.

Referanser

[1] W3C RDF 1.1 Semantics. 2014.

[2] Giese, Martin. INF3580—Semantiske teknologier, Institutt for informatikk, Universitetet i Oslo. Obligatorisk oppgave 4. 2015.

 

Om bloggeren:
Veronika har studert programmering og nettverk ved Universitetet i Oslo og har en forkjærlighet for logikk, semantiske teknologier, typografi og elektronikk.

comments powered by Disqus