RDF grundguide del 1: Definition av klasser och attribut med RDF-Schema

Resource Description Framework (RDF) är en öppen standard av W3C för att beskriva digitala resurser med semantisk innebörd. Data som beskrivs med RDF format kan utbytas och vidarenyttjas med bibehållen begreppsförståelse för resurser mellan verksamheter, branscher och länder. Detta är den första artikel i en serie av guider för att komma igång med att beskriva data med semantisk betydelse. Den första artikeln beskriver hur koncept med tillhörande attribut definieras med RDF-Schema.

RDF-Schema (RDFS)

RDF Standarden beskriver hur koncept och klassificering av begrepps kan göras i digital format genom att definiera klasser och attribut. RDF-Schema (RDFS) är ett exempel av flera språk som erbjuder notationsregler för beskrivning av resurser med semantisk innebörd för att skapa vokabulär och taxonomier av närbesläktade koncept. Gemensamt för språken är att de följer RDF standarden som beskriver resurser i form av påstående med subjekt, predikat, objekt vilket utgör en triplett. Alla resurser i RDF identifieras med hjälp av IRI (international resource identifier) vilket är en generalisering av URI. Detta möjliggör att resurser/tripletter kan länkas samman globalt eftersom IRI/URI utgör grunden av HTTP protokollet för att identifiera webbresurser. Det finns andra språk som möjliggöra mer avancerade klassificeringssystem i form av ontologier som kan beskriva regler, temporala och dynamiska förhållanden mellan resurser, som exempelvis OWL 2 (Web Ontology Language).

RDF Format

För att definiera påståenden i RDF finns det ett antal olika format som fyller olika funktioner. Formatet Turtle (.ttl) är en syntax som har förkortningar, prefix och är enklare att läsa för människor och används i artikelserien om inget annat anges. Andra format i Turtle familjen är mer kompakt och optimerade format för maskinell bearbetning, exempelvis N-Triples, Q-Quads.

Klasser och attribut i RDFS

Klasser (rdfs:Class) används för att klassificera resurser. En instans av en rdfs:Class definieras med hjälp av predikatet rdf:type. Exempelvis kan vi definiera att Artist är en klass och att Picasso är en instans av klassen Artist. Notera att ex, rdf och rdfs är IRI prefix och är förkortningar istället för att skriva ut hela sökvägen för till resurser (https://www.clearbyte.org/example/Artist).

ex:Artist rdf:type rdfs:Class . 
ex:Picasso rdf:type ex:Artist .

Attribut (rdfs:Property) används för att tillföra attribut till klasser. I exemplet ovan tillförs attritbuten (predikat) ex:name och ex:created. Namn beskrivs av en textsträng (literal) “Pablo Picasso” och skapare (ex:creatorOf) av ett objekt i form av en instans av klassen ex:Guernica. Notera att både namn och skapare är objekt i påståendet om Picasso, där namn är en textsträng och skapare ett objekt som är ett eget subjekt i ett annat påstående. Detta kan vara i samma modell eller om vi exempelvis vill använda resurser från Wikidata (Wikipedia) för definition av målningen Guernica med hjälp av ett IRI prefix till resursen wd:Q175036 (https://www.wikidata.org/wiki/Q175036). Turtle formatet erbjuder förkortning av rdf:type i form av bokstaven a vilket gör syntaxen kortare och enklare att läsa.

ex:name a rdfs:Property .
ex:creatorOf a rdfs:Property .

ex:Picasso a ex:Artist ;
    ex:name “Pablo Picasso”;
    ex:creatorOf ex:Guernica.

Predikat länkar samman subjektet och objektet i ett påstående vilket formar grunden till en graf. Subjekt och objekt kan ses som noder och predikatet som en meningsfull länk vilket beskriver förhållandet mellan noderna.

Notera att definition av attribut (Property) brukar börja med liten bokstav och klasser med stor. 

Domain & Range

För att semantisk beskriva och härleda förhållanden mellan subjekt och objekt används rdfs:domain och rdfs:range. Predikatet rdfs:domain deklarerar att ett attribut tillhör en eller flera klasser. Exempelvis kan vi definiera att attributet P tillhör klassen D.

P rdfs:domain D .

ex:hasMother rdfs:domain ex:Person ; 
ex:frank ex:hasMother ex:frances .

Exemplet härleder implicit att ex:frank även tillhör klassen ex:Person eftersom ex:hasMother tillhör klassen ex:Person.

Predikatet rdfs:range deklarerar att ett attribut tillhör en eller flera instanser av klasser. Exempelvis kan vi definiera att attributet P tillhör instansen av klassen R.

P rdfs:range R .

Skillnaden mellan domain och range, är att den första deklarerar att ett attribut tillhör ett domän av en eller flera klasser. Och att range deklarerar att ett attribut tillhör en eller flera instanser av klasser. Följande påstående åskådliggöra skillnaden. Exemplet definierar två klasser, bok och person, och attributet författare. Attributet author tillhör domänområdet Book. Vid instansiering av en bok tilldelas objektet ett namn på författaren som tillhör klassen Person. Range översatt till svenska är urval eller räckvidd och syftar till attributets tillhörighet vid instansiering.

ex:Book a rdfs:Class .
ex:Person a rdfs:Class .
ex:author a rdf:Property .

ex:author rdfs:domain ex:Book .
ex:author rdfs:range ex:Person .

Exemplet nedanför deklarerar att instanser av attributet ex:motherTo tillhör både klasserna Female och Person.

ex:motherTo rdfs:range ex:Female . 
ex:motherTo rdfs:range ex:Person .

Följande påstående beskriver att Eva är moder till Pete och implicit även kvinna och person.

ex:Eva ex:motherTo ex:Pete .

Definitioner av attribut med hjälp av rdfs:range kan också användas för att  beskriva datatypen som exempelvis heltal, decimaltal med mera om det inte är textsträng som är normalfallet.

ex:age rdf:type rdf:Property . 
ex:age rdfs:range xsd:integer .

Möjligheten att deklarera attributs tillhörighet till specifik klassa (domain) eller ett urval (range) av instansers av klasser gör att det går att dra slutsatser (inference) tack vare implicita samband mellan resurser. Genom att härleda implicit samband mellan resurser möjliggör logiska resonemang vilket är en central del av RDF ramverket. Nästa RDF grundguide presenterar en semantisk datamodell som beskriver klasser och attribut av målare och tavlor, och länkar in relaterade beskrivningar från Wikidata som också använder RDF standarden för att beskriva resurser. Läsaren rekommenderas även ta del av W3C guide RDF 1.1 Primer för överblick av vad RDF ramverket innehåller.

Semantisk teknologi och integrerade digitala samhällstjänster

Behöver din verksamhet bygga förmågor att skapa integrerade digitala samhällstjänster för att exekvera affärslogisk och sömlös utbyta dataset mellan samhällsviktiga sektorer. Kontakta oss på info[at]clearbyte.org och läs mer om Clear Byte’s fokusområden.