Semantiske teknologier

Semantiske teknologier

Tenkt deg en web hvor all data er noder som er fritt tilgjengelig for brukerne, og hvor all informasjon kan knyttes sammen ved hjelp av enkle teknologier. Dette er det den semantiske webben prøver å oppfylle. Acando vil i vinter publisere en bloggserie på fire innlegg som omhandler de semantiske teknologiene RDF, SPARQL, RDFS og OWL. 

Hva er semantiske teknologier?

Den britiske informatikeren Tim Berners-Lee hadde en visjon for webben at all data skulle kunne analyseres—innhold, linker, transaksjoner mellom menneske og maskin. Hans visjon var et «Semantisk Web». 

Semantiske teknologier er myntet på denne visjonen og enkoder en mening bak data og innhold, separat fra applikasjoner. Det gjør det mulig for mennesker og maskiner å dele og å ressonere (eng: reason) på data under kjøretid [3].

Denne teknologien gir et felles rammeverk som bidrar til at data kan bli brukt og gjenbrukt på tvers av applikasjoner. Utviklingen av disse rammeverkene ledes av W3C (World Wide Web Consortium) i samarbeid med en rekke forskere og utviklere [2].

Fundamentet semantiske teknologier bygger på er RDF (Resource Description Framework), som vi skal lære mer om i dette blogginnlegget. Eksemplene i denne bloggserien er inspirert av kurset INF3580—Semantiske teknologier ved Universitetet i Oslo [1].

Den semantiske stakken.

Den semantiske stakken

RDF

Hva er RDF?

RDF er en del av W3Cs standarder og er en modell for å beskrive metadata. Metadata blir beskrevet som en rettet graf. Både nodene og kantene i grafen er markert med identifikatorer som skiller disse fra hverandre. Siden RDF er en grafstruktur, er det enkelt å kombinere flere sammen.

All informasjon i RDF er uttrykt i et mønster av tripler. Disse triplene består av et subjekt, et predikat og et objekt. Man omtaler gjerne tripler som fakta (eng: facts) eller erklæring (eng: statement). Her følger et eksempel på et trippel.

subject predicate object
Norway capital Oslo

For å identifisere subjektene, predikatene og objektene bruker RDF URIer (Uniform Resource Identifiers) som navn for å skille de fra hverandre. En URI representerer en ressurs (eng: resource), for eksempelet over kan vi hente disse ressursene fra datasettet dbpedia.org. Merk at URIer er kun et navn, de trenger ikke peke til noe.

http://dbpedia.org/resource/Norway

URIene kan bli gitt til annoteringen @prefix i RDF Turtle syntaks. Merk, det fins flere syntakser for å skrive RDF. Syntaksen Turtle er brukt i dette innlegget. Andre syntakser er beskrevet i eget avsnitt i dette blogginnlegget.

@prefix dbp: <http://dbpedia.org/resource/>
@prefix dbp-ont: <http://dbpedia.org/ontology/>

dbp:Norway dbp-ont:capital dbp:Oslo .

RDF vokabularet

Med RDF, så følger det et vokabular. Et vokabular er kun et sett med ord som beskriver data, vi skal lære mer om dette bloggseriens siste innlegg om OWL, da vi skal lage våre egne vokabularer og ontologier. I mellomtiden benytter vi oss av eksisterende vokabularer.

Fra RDF vokabularet trenger vi inntil videre å kjenne til egenskapen rdf:type. Dette predikatet angir hvilken type subjektet er. For kort kan rdf:type skrives som a i syntaksen Turtle.

Literaler

Man kan spesifisere et objekt i et trippel til å være et literal istedenfor å være en ressurs. Literaler er dataverdier som kan bli gitt en datatype. Datasettet xsd beskriver en rekke av disse datatypene. Informasjon om språket literalet er skrevet på kan legges til ved å benytte tegnet @.

dbp:Norway dbp-ont:capital    dbp:Oslo .
dbp:Oslo   dbp-ont:population "629313"^^xsd:integer .

RDF-grafer

RDF kan visualiseres ved å tegne RDF-grafer. En slik graf har alle ressurser representert ved en sirkel, og alle literaler som firkanter.

Blanke noder

RDF har også støtte for noder uten URIer, disse er kalt blanke noder. Blanke noder kan ikke bli adressert globalt, og de inneholder ingen tilleggsinformasjon i RDF-grafen.

Blanke noder kan derimot bli gitt et navn og bli brukt flere ganger, det skal vi se eksempel på litt senere.

Forskjellige syntakser

RDF/XML

Dette er W3Cs standard for RDF. 

<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF xlmns:rdf="http://www.w3c.org/1999/02/22-rdf-syntax-ns#"
         xlmns:foaf="http://xmlns.com/foaf/0.1/">

  <foaf:Person rdf:about="http://example.org/acando/veronika">
  </foaf:Person>
</rdf:RDF>

Turtle

Denne syntaksen er den mest lesbare og den som brukes i denne bloggserien om semantiske teknologier.

@prefix foaf: <http://xmlns.com/foaf/0.1/>
@prefix rdf: <http://www.w3c.org/1999/02/22-rdf-syntax-ns#>
@prefix acando: <http://example.org/acando/>

acando:veronika rdf:type foaf:Person .

N-tripler

Denne syntaksen skriver ut ett trippel per linje og bruker ingen prefikser.

<http://example.org/acando/veronika> <http://www.w3c.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .

Turtle

La oss gjøre et lite dykk i RDF med Turtle syntaks. Følgende prefikser vil bli brukt i eksemplene som følger.

@prefix dbp: <http://dbpedia.org/resource/>
@prefix : <http://dbpedia.org/ontology/>

Literaler

Er som beskrevet ovenfor om literaler. Her følger et eksempel på hvordan man kan oppgi både tekstlige, numeriske og boolske literaler.

dbp:Oslo   :officialName "Oslo" .
dbp:Norway rdfs:label    "Norge"@no .
dbp:Oslo   :population   "629313"^^xsd:integer .
dbp:Oslo   :population   629313 .
dbp:Oslo   :isCapital    true .

Deling av elementer

Det er mulig for et trippel å dele elementer på både subjekt og predikat. Man lister elementer på subjekt ved å bruke ;. Dette minimerer antall tegn i koden, og gjør den noe mer lesbar.

dbp:Oslo :officialName "Oslo" ;
         :population   629313 ;
         :leaderName   dbp:Marianne_Borgen .

Man lister elementer på predikat ved å bruke ,.

dbp:Norway rdfs:label "Norway"@en ,
                      "Norwegen"@de ,                      "Norge"@no .

Blanke noder

Blanke noder defineres ved understrek eller [ og ].

Her sier vi at det eksisterer et sted _:someplace som er hovedstad i Norge, og som har innbyggertall 629313.

dbp:Norway  :capital    _:someplace .
_someplace: :population 629313 .

Her sier vi at vi har et sted som har et offesielt navn Oslo.

[] a             :Place ;
   :officialName "Oslo" .

Et godt eksempel på bruk av blanke noder er om man skal beskrive en adresse. Ta Acandos hovedkontor med adresse Tordenskioldsgate 8-10, 0160 Oslo.

:Acando :address [ :street       "Tordenskioldsgate" ;
                   :streetNumber "8-10" ;
                   :place        "Oslo" ;
                   :postcode     "0160" ] .

Blanke noder med bruk av [ og ] har ikke noe navn. I Turtle kan man navngi blanke noder ved å bruke understrek, slik som i det første eksempelet. Dette gir muligheten til å gjenbruke denne blanke noden i andre tripler.

Annet

Andre ting som kan være verdt å vite om Turtle er følgende.

#

Kommentarer

\

Slipper gjennom spesialtegn. Som for eksempel i literalet "Veronika \"veleda\" Heimsbakk".

Oppsummering

I dette blogginnlegget har vi sett litt på bakgrunnen til semantiske teknologier og grunnteknologien RDF. Vi bruker syntaksen Turtle, som er lett lesbar, og har sett at RDF er strukturert som en graf.

I neste innlegg skal vi se nermere på spørrespråket SPARQL, som vi bruker for å gjøre spørringer mot data på RDF-formatet.

Referanser

[1] Giese, Martin. INF3580—Semantiske teknologier.

[2] W3C. 2013. W3C Semantic Web Activity.

[3] Wikipedia. 2015. Semantic technology.

 

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