27
Introduktion til RDF 1.1 Notat fra W3C-arbejdsgruppe, 24. juni 2014 Denne version: http://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ Senest publicerede version: http://www.w3.org/TR/rdf11-primer/ Tidligere version: http://www.w3.org/TR/2014/NOTE-rdf11-primer-20140225/ Seneste anbefaling: http://www.w3.org/TR/rdf-primer Redaktører: Guus Schreiber, VU University Amsterdam Yves Raimond, BBC Tidligere redaktører: Frank Manola Eric Miller Brian McBride Tjek trykfejlslisten for evt. fejl eller registrerede problemer siden publiceringen. Dokumentet er også tilgængeligt i følgende non-normative format: japansk oversættelse Copyright © 2003-2014 W3C ® (MIT, ERCIM, Keio, Beihang). Alle rettigheder forbeholdt. W3C’s regler for hæftelse, varemærke og dokumentanvendelse er gældende. Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er nødvendigt for at bruge RDF effektivt. Den præsenterer de grundlæggende begreber i RDF og giver konkrete eksempler på brugen af RDF. Afsnit 3-5 kan bruges som en minimumsintroduktion til nøgleelementerne i RDF. Forskelle mellem RDF 1.1 og RDF 1.0 (2004-versionen) er sammenfattet i et særskilt dokument: ”What's New in RDF 1.1” [RDF11-NEW]. Aktuel dokumentstatus Dette afsnit beskriver den aktuelle dokumentstatus på tidspunktet for publiceringen. Andre dokumenter vil muligvis gøre dette dokument overflødigt. En liste over aktuelle W3C-publikationer,

Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

Introduktion til RDF 1.1

Notat fra W3C-arbejdsgruppe, 24. juni 2014

Denne version:

http://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/

Senest publicerede version:

http://www.w3.org/TR/rdf11-primer/

Tidligere version:

http://www.w3.org/TR/2014/NOTE-rdf11-primer-20140225/

Seneste anbefaling:

http://www.w3.org/TR/rdf-primer

Redaktører:

Guus Schreiber, VU University Amsterdam

Yves Raimond, BBC

Tidligere redaktører:

Frank Manola

Eric Miller

Brian McBride

Tjek trykfejlslisten for evt. fejl eller registrerede problemer siden publiceringen.

Dokumentet er også tilgængeligt i følgende non-normative format: japansk oversættelse

Copyright © 2003-2014 W3C® (MIT, ERCIM, Keio, Beihang). Alle rettigheder forbeholdt. W3C’s

regler for hæftelse, varemærke og dokumentanvendelse er gældende.

Resume

Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

nødvendigt for at bruge RDF effektivt. Den præsenterer de grundlæggende begreber i RDF og giver

konkrete eksempler på brugen af RDF. Afsnit 3-5 kan bruges som en minimumsintroduktion til

nøgleelementerne i RDF. Forskelle mellem RDF 1.1 og RDF 1.0 (2004-versionen) er sammenfattet

i et særskilt dokument: ”What's New in RDF 1.1” [RDF11-NEW].

Aktuel dokumentstatus

Dette afsnit beskriver den aktuelle dokumentstatus på tidspunktet for publiceringen. Andre

dokumenter vil muligvis gøre dette dokument overflødigt. En liste over aktuelle W3C-publikationer,

Page 2: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

samt den seneste revision af denne tekniske rapport, kan findes i W3C technical reports index på

http://www.w3.org/TR/.

Dokumentet her er en del af RDF 1.1-dokumentationen. Det er en informativ fortegnelse over

nøglebegreber i RDF. En normativ beskrivelse af RDF 1.1 findes i dokumentet RDF 1.1. Concepts

and Abstract Syntax document [RDF11-CONCEPTS]. Dette dokument indeholder mindre

redaktionelle rettelser af versionen fra februar 2014.

Dokumentet her blev publiceret af RDF Working Group som et arbejdsgruppenotat. Kommentarer

og bemærkninger til dette dokument kan sendes til [email protected] (subscribe,

archives). Alle kommentarer er velkomne.

Offentliggørelse af et arbejdsgruppenotat forudsætter ikke godkendelse af W3C-medlemskabet.

Dokumentet er et udkast og kan til hver en tid opdateres, udskiftes eller overflødiggøres af andre

dokumenter. Det er uhensigtsmæssigt at omtale dette dokument som andet end et igangværende

projekt.

Dokumentet her blev fremlagt af en gruppe, der arbejder under 5 February 2004 W3C Patent

Policy. W3C fører en offentlig liste over enhver patentanmeldelse, der er foretaget i forbindelse

med gruppens publikationer. Siden omfatter også vejledning i at anmelde et patent. Enkeltpersoner

med konkret viden om et patent, som vedkommende mener indeholder væsentlige fordringer, skal

fremlægge oplysningerne i henhold til afsnit 6 i W3C Patent Policy.

Indholdsfortegnelse

1. Indledning

2. Hvorfor bruge RDF?

3. RDF-datamodellen

o 3.1 Tripler

o 3.2 IRI’er

o 3.3 Literaler

o 3.4 Tomme knuder

o 3.5 Sammensatte grafer

4. RDF-vokabularier

5. Skrive RDF-grafer

o 5.1 RDF-sprog af Turtle-typen

5.1.1 N-triples

5.1.2 Turtle

5.1.3 TriG

5.1.4 N-Quads

o 5.2 JSON-LD

o 5.3 RDFa

o 5.4 RDF/XML

6. Semantik for RDF-grafer

7. RDF-data

8. Yderligere oplysninger

A. Tak

B. Ændringer siden forrige udgave

Page 3: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

C. Litteraturhenvisninger

o C.1 Informative henvisninger

1. Indledning

RDF (Resource Description Framework) er en ramme beregnet til at udtrykke informationer om

ressourcer. Ressourcer kan være hvad som helst, f.eks. dokumenter, personer, fysiske genstande og

abstrakte begreber.

RDF er beregnet på situationer, hvor informationer på internettet skal behandles af programmer

frem for blot at blive vist for mennesker. RDF er en fælles struktur, der kan udtrykke disse

informationer, så de kan udveksles mellem programmer uden at miste deres betydning. Eftersom

det er en fælles struktur, kan programudviklere drage nytte af de tilgængelige, fælles RDF-parsere

og databehandlingsværktøjer. Muligheden for at udveksle information mellem forskellige

programmer betyder, at informationerne kan gøres tilgængelige for andre end de programmer,

informationerne oprindeligt var beregnet på.

RDF kan især bruges til at publicere og sammenkæde data på internettet. Adressen

http://www.example.org/bob#me kan f.eks. indeholde data om Bob, herunder at han kender

Alice, der kan identificeres af sin IRI (en IRI er en ”international ressourceidentifikator”. Yderligere

oplysninger se afsnit. 3.2). Ved at åbne Alices IRI kan man så finde flere data om hende, herunder

links til andre datasæt om hendes venner, interesser mv. En person eller en automatiseret proces kan

derpå følge sådanne forbindelser og indsamle data om disse forskellige ting. Den slags brug af RDF

kan ofte kvalificeres som Linked Data [LINKED-DATA].

Dokumentet her er ikke normativt og indeholder derfor ikke en komplet beskrivelse af RDF 1.1.

RDF’s normative specifikationer kan findes i følgende dokumenter:

Et dokument, der beskriver de grundlæggende begreber bag RDF, tillige med en abstrakt

syntaks ("RDF Concepts and Abstract Syntax") [RDF11-CONCEPTS]

Et dokument, der beskriver RDF’s formelle modelteoretiske semantik ("RDF Semantics")

[RDF11-MT]

Beskrivelse af RDF’s serialiseringsformater:

o Turtle [TURTLE] og TriG [TRIG]

o JSON-LD [JSON-LD] (JSON-baseret)

o RDFa [RDFA-PRIMER] (til HTML-indlejring)

o N-Triples [N-TRIPLES] og N-Quads [N-QUADS] (linjebaserede

udvekslingsformater)

o RDF/XML [RDF11-XML] (den originale 2004-syntaks, opdateret til RDF 1.1)

Et dokument, der beskriver RDF Schema [RDF11-SCHEMA], der er et vokabularium til

datamodellering af RDF-data.

2. Hvorfor bruge RDF?

Det følgende belyser forskellige anvendelser af RDF og er rettet mod forskellige

praksisfællesskaber.

Page 4: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

Føje maskinlæsbar information til websider, f.eks. ved hjælp af det udbredte vokabularium

schema.org, så oplysningerne kan vises i et fremhævet format i søgemaskiner eller blive

behandlet automatisk af tredjepartsprogrammer.

Udvide et datasæt ved at sammenkæde det med udefrakommende datasæt. Et datasæt om

malerier kan f.eks. udvides ved sammenkæde det med deres respektive kunstnere i Wikidata

og derigennem give adgang til en lang række informationer om dem og beslægtede

ressourcer.

Sammenkæde API feeds, så kunder nemt kan se, hvordan de skal finde flere oplysninger.

Udnytte de datasæt, der aktuelt er publiceret som Linked Data [LINKED-DATA], ved f.eks.

at opbygge datasamlinger om bestemte emner.

Opbygge distribuerede sociale netværk ved at sammenkæde folks RDF-beskrivelser på

tværs af flere websites.

Tilvejebringe en metode baseret på standarder til at udveksle data mellem databaser.

Sammenkæde forskellige datasæt inden for en organisation og aktivere forespørgsler på

tværs af datasæt ved hjælp af SPARQL [SPARQL11-OVERVIEW].

3. RDF-datamodellen

3.1 Tripler

Med RDF kan man fremsætte udsagn om ressourcer. Disse udsagn har et simpelt format. Et udsagn

har altid følgende opbygning:

<subjekt> <prædikat> <objekt>

Et RDF-udsagn udtrykker forholdet mellem to ressourcer. Subjektet og objektet repræsenterer to

ressourcer, der bliver knyttet til hinanden. Prædikat repræsenter forholdets beskaffenhed.

Forholdet er formuleret på en retningsbestemt måde (fra subjekt til objekt) og kaldes en egenskab i

RDF. Eftersom RDF-udsagn består af tre elementer, kaldes de tripler.

Følgende er eksempler på RDF-tripler (uformelt udtrykt i pseudokode):

Eksempel 1: tripel (uformel) <Bob> <er en> <person>.

<Bob> <er ven med> <Alice>.

<Bob> <er født> < 4. juli 1990>.

<Bob> <er interesseret i> <Mona Lisa>.

<Mona Lisa> <blev malet af> <Leonardo da Vinci>.

<Videoen 'La Joconde à Washington'> <handler om> <Mona Lisa>

Flere tripler henviser ofte til samme ressource. I ovenstående eksempel er Bob subjekt i fire tripler,

mens Mona Lisa er subjekt i én og objekt i to tripler. Fordi ressourcer kan stå som subjekt i én tripel

og objekt i en anden, er det muligt at finde forbindelser mellem tripler, hvilket er en vigtig styrke i

RDF.

Man kan forestille sig tripler som en forbundet graf. Grafer består af knuder og kanter. En tripels

subjekter og objekter udgør grafens knuder. Prædikaterne udgør kanterne. Fig. 1 viser den graf, der

kan tegnes ud fra de ovenstående tripler.

Page 5: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

Fig. 1 Uformel graf for tripeleksemplet

Når man først har sådan en graf, kan man bruge SPARQL [SPARQL11-OVERVIEW] til f.eks. at

søge efter personer, der er interesseret i Leonardo da Vincis malerier.

RDF-datamodellen er i dette afsnit beskrevet med en ”abstrakt syntaks”, dvs. en datamodel, der er

uafhængig af en bestemt konkret syntaks (den syntaks, som er brugt til at beskrive tripler gemt i

tekstfiler). Forskellige konkrete syntakser kan resultere i præcis den samme graf fra den abstrakte

syntaks’ perspektiv. RDF-grafers semantik [RDF11-MT] defineres af denne abstrakte syntaks.

Konkret RDF-syntaks præsenteres i afsnit 5.

I de følgende tre underafsnit omtales de tre typer RDF-data, der findes i tripler: IRI’er, literaler og

tomme knuder.

3.2 IRI’er

Page 6: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

Forkortelsen IRI står for ”International Resource Identifier” – international ressourceidentifikator.

En IRI identificerer en ressource. De URL’er (Uniform Resource Locators eller

enhedsressourcefindere), man bruger som web-adresser, er en slags IRI’er. En anden type IRI

identificerer en ressource uden at vise dens placering, og hvordan man kan tilgå den. Begrebet IRI

er en generalisering af begrebet URI (Uniform Resource Identifier), så tegn uden ASCII-kode kan

bruges i en IRI-tekststreng. IRI’er specificeret i RFC 3987 [RFC3987].

IRI’er kan stå på alle triplens tre positioner.

Som nævnt bruges IRI’er til at identificere ressourcer som dokumenter, personer, fysiske genstande

og abstrakte begreber. I DBpedia er IRI’en for Leonardo da Vinci f.eks.:

http://dbpedia.org/resource/Leonardo_da_Vinci

I Europeana er IRI’en for en INA-video om Mona Lisa med titlen ”La Joconde à Washington”:

http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619

IRI’er er globale identifikatorer, så andre kan genbruge en bestemt IRI til at identificere den samme

ting. Den følgende IRI bruges f.eks. af mange som RDF-egenskab til at udtrykke

bekendtskabsforhold mellem folk:

http://xmlns.com/foaf/0.1/knows

RDF har intet kendskab til det, som IRI’erne repræsenterer. Men IRI’er kan få en betydning ved

hjælp af særlige vokabularier eller konventioner. DBpedia bruger f.eks. IRI’er med formen

http://dbpedia.org/resource/Name til at angive det, som er beskrevet af den tilsvarende artikel

i Wikipedia.

3.3 Literaler

Literaler er grundværdier, som ikke er IRI’er. Eksempler på literaler kan være tekststrenge som ”La

Joconde”, datoer som ”4. juli 1990” og tal som ”3.14159”. Literaler er knyttet til en datatype,

hvorved sådanne værdier kan analyseres og fortolkes korrekt. Man kan vælge at knytte et

sprogmærke til en tekststrengsliteral. ”Léonard de Vinci” kan f.eks. tilknyttes sprogmærket ”fr” og

”李奥纳多·达·文西” sprogmærket ”zh”.

Literaler kan kun findes på en tripels objektposition.

Dokumentet RDF Concepts indeholder en (ikke udtømmende) liste over datatyper. Dette omfatter

mange datatyper, der er defineret af XML Schema, f.eks. string, boolean, integer, decimal og date.

3.4 Tomme knuder

IRI’er og literaler udgør tilsammen de grundlæggende elementer til at skrive RDF-udsagn.

Indimellem er det desuden praktisk at kunne tale om ressourcer uden at bekymre sig om at bruge en

global identifikator. Vi vil måske udtrykke, at der i baggrunden af Mona Lisa-maleriet er et

uidentificeret træ, som vi ved er en cypres. En ressource uden en global identifikator, f.eks.

Page 7: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

maleriets cypres, kan i RDF repræsenteres af en tom knude. Tomme knuder er som simple variable i

algebra; de repræsenterer noget uden at angive en værdi.

Tomme knuder kan findes både på en tripels subjekt- og objektposition. De kan bruges til at

betegne ressourcer uden eksplicit at navngive dem med en IRI.

Fig. 2

Uformelt eksempel på tom knude: Baggrunden på Mona Lisa-maleriet viser en unavngiven

ressource, der hører til klassen cypresser.

3.5 Sammensatte grafer

RDF indeholder en mekanisme, så man kan kombinere RDF-udsagn i flere grafer og tilknytte en

IRI til sådanne grafer. Sammensatte grafer er en nyere ekstension af RDF-datamodellen. I praksis

havde RDF-udviklere og -arkitekter brug for en mekanisme, så de kunne tale om delmængder af en

samling tripler. Sammensatte grafer blev først præsenteret i RDF-søgesproget SPARQL. RDF-

datamodellen blev derfor udvidet med begrebet sammensatte grafer, det er tæt knyttet til SPARQL.

Sammensatte grafer i et RDF-dokument udgør et RDF-datasæt. Et RDF-datasæt kan have flere

navngivne grafer og mindst én unavngiven (”standard-”) graf.

Page 8: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

Udsagnene i eksempel 1 kunne f.eks. grupperes i to navngivne grafer. En første graf kunne komme

fra et socialt netværk og identificeres af http://example.org/bob:

Eksempel 2: Første graf i ovenstående datasæt <Bob> <er en> <person>.

<Bob> <er venner med> <Alice>.

<Bob> <er født> <den 4. juli 1990>.

<Bob> <er interesseret i> <Mona Lisa>.

Den IRI, der er knyttet til grafen, kaldes grafnavnet.

En anden graf kunne komme fra Wikidata og være identificeret af

https://www.wikidata.org/wiki/Special:EntityData/Q12418:

Eksempel 3: Anden graf i ovenstående datasæt <Leonardo da Vinci> <er skaber af> <Mona Lisa>.<Videon 'La Joconde à

Washington'> <handler om> <Mona Lisa>

Herunder findes et eksempel på en unavngivet graf. Den indeholder to tripler med grafnavnet

<http://example.org/bob> som subjekt. Triplerne knytter udgiver og licensinformation til denne

grafs IRI:

Eksempel 4: Unavngiven graf i ovenstående datasæt <http://example.org/bob> <er publiceret af> <http://example.org>.

<http://example.org/bob> <har licens>

<http://creativecommons.org/licenses/by/3.0/>.

I dette eksempel antages det, at grafnavnene repræsenterer kilden til de RDF-data, der er indeholdt i

den tilsvarende graf, dvs. ved at hente <http://example.org/bob> frem ville der opnås adgang til

de fire tripler i den graf.

Bemærk.

RDF har ingen standardmetode, der kan udtrykke denne semantiske formodning (dvs. at grafnavne

repræsenterer kilden til RDF-dataene) for andre af datasættets læsere. Disse læsere må støtte sig til

ekstern viden for at fortolke datasættet på den tilsigtede måde. Datasæts mulige semantik er

beskrevet i en særskilt note [RDF11-DATASETS].

Page 9: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

Fig. 3 Uformel graf over ovenstående datasæt.

Page 10: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

Fig. 3 skildrer ovenstående datasæt. Afsnit. 5.1.3 indeholder et eksempel på dette datasæts konkrete

syntaks.

4. RDF-vokabularier

Med RDF-datamodellen kan man fremsætte udsagn om ressourcer. Som nævnt indeholder

datamodellen ingen formodninger om, hvilken ressource IRI’erne står for. I praksis bruges RDF

typisk i kombination med vokabularier eller andre konventioner, der indeholder semantisk

information om disse ressourcer.

Til støtte for definitionen af vokabularier bruger RDF sproget RDF Schema [RDF11-SCHEMA].

Dette sprog gør det muligt at definere RDF-datas semantiske beskaffenhed. Man kan f.eks. angive,

at IRI’en http://www.example.org/friendOf kan bruges som en egenskab, og at subjekterne og

objekterne i triplen http://www.example.org/friendOf skal være ressourcer af klassen

http://www.example.org/Person.

RDF Schema bruger betegnelsen klasse for bestemte kategorier, som kan bruges til at klassificere

ressourcer. Relationen mellem en forekomst og dens klasse udtrykkes gennem egenskaben type.

Med RDF Schema kan man oprette hierarkier bestående af klasser og underklasser samt egenskaber

og underegenskaber. Typerestriktioner på bestemte triplers subjekter og objekter kan defineres

gennem restriktionerne domæne og rækkevidde. Ovenstående er et eksempel på en

domænerestriktion: subjekter i”friendOf”-tripler bør tilhøre klassen ”Person”.

De væsentligste modelleringsbegreber i RDF Schema er sammenfattet i nedenstående tabel:

Tabel 1: Modelleringsbegreber i RDF Schema

Modelleringsbegreb Syntaks Beskrivelse

Klasse (en klasse) C rdf:type rdfs:Class C (en ressource) er en RDF-klasse

Egenskab (en klasse) P rdf:type rdf:Property

P (en ressource) er en RDF-egenskab

type (en egenskab) I rdf:type C I (en ressource) er en forekomst af C (en

klasse)

underklasse af (en

egenskab) C1 rdfs:subClassOf C2

C1 (en klasse) er en underklasse af C2 (en

klasse)

underegenskab af (en

egenskab) P1 rdfs:subPropertyOf

P2

P1 (en egenskab) er en underegenskab af

P2 (en egenskab)

domæne (en egenskab) P rdfs:domain C Domæne af P (en egenskab) er C (en

klasse)

rækkevidde (en egenskab) P rdfs:range C Rækkevidde af P (en egenskab) er C (en

klasse)

Bemærk

Page 11: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

Syntaksen (anden kolonne) er skrevet i en præfiksnotation, der omtales yderligere i afsnit. 5. At

modelleringsbegreberne har to forskellige præfikser (rdf: og rdfs:) er et noget irriterende

historisk levn, som er bibeholdt af hensyn til den bagudrettede kompatibilitet.

Ved hjælp af RDF Schema kan man bygge en model af RDF-data. Et simpelt, uformelt eksempel:

Eksempel 5: RDF Schema-tripler (uformelle) <person> <type> <klasse>

<er ven med> <type> <egenskab>

<er ven med> <domæne> <person>

<er ven med> <rækkevidde> <person>

<er gode venner med> <underegenskab af> <er ven af>

Bemærk, at selv om <er ven med> er en egenskab, der typisk bruges som prædikat til en tripel

(som i eksempel 1), er egenskaber som disse i sig selv ressourcer, der kan beskrives af tripler eller

føje værdier til beskrivelser af andre ressourcer. I dette eksempel <er ven med> subjekt i tripler,

der føjer type-, domæne- og rækkeviddeværdier til det, og det er objekt i en tripel, der beskriver

noget om egenskaben <er gode venner med>.

Et af de første RDF-vokabularier, der blev brugt på verdensplan, var vokabulariet ”Friend of a

Friend” (FOAF) til at beskrive sociale netværk. Andre eksempler på RDF-vokabularier er:

Dublin Core

The Dublin Core Metadata Initiative er et sæt elementer til at beskrive en lang række

ressourcer. Vokabulariet omfatter egenskaber som ”forfatter”, ”udgiver” og ”titel”.

schema.org

Schema.org er et vokabularium, der er udviklet af en gruppe større leverandører af

søgemaskiner. Tanken er, at webmastere kan bruge disse begreber til at markere websider,

så søgemaskiner forstår, hvad siderne drejer sig om.

SKOS

SKOS er et vokabularium beregnet til at publicere klassifikationssystemer, f.eks.

terminologier og stikordslister på internettet. SKOS har haft en W3C-anbefaling siden 2009

og er udbredt i biblioteksverdenen. Kongresbiblioteket i Washington D.C. publicerede deres

emneregister som et SKOS-vokabularium.

Værdien af vokabularier øges af genbrug. Jo mere disse IRI-vokabularier genbruges af andre, jo

mere værdifuldt bliver det at bruge IRI’erne (den såkaldte netværkseffekt). Dette betyder, at man

bør foretrække at genbruge andres IRI’er frem for at opfinde en ny.

Yderligere formel beskrivelse af modelleringsbegreberne i RDF Schema kan findes i ”RDF

Semantics document” [RDF11-MT]. Ønsker man en mere omfattende semantisk modellering af

RDF-data, kan man overveje at bruge OWL [OWL2-OVERVIEW]. OWL er et RDF-vokabularium,

så det kan bruges sammen med RDF Schema.

5. Skrive RDF-grafer

Page 12: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

Der findes et antal forskellige serialiseringsformater til at nedskrive RDF-grafer med. Men

forskellige måder at nedskrive den samme graf fører til nøjagtig de samme tripler, og de er derfor

logisk ækvivalente.

I dette afsnit præsenteres – med kommenterede eksempler – følgende formater:

1. RDF-sprog af Turtle-typen (N-triples, Turtle, TriG og N-Quads)

2. JSON-LD (JSON-baseret RDF-syntaks)

3. RDFa (til indlejring i HTML og XML)

4. RDF/XML (XML-syntaks til RDF)

Bemærk

Tip til læseren: Afsnit 5.1 (Turtle et al.) diskuterer alle grundlæggende begreber til serialisering af

RDF. Det anbefales kun at læse afsnittene om JSON-LD, RDFa og RDF/XML, hvis der er interesse

for denne særlige brug af RDF.

5.1 RDF-sprog af Turtle-typen

I dette underafsnit præsenterer vi fire RDF-sprog, som er nært beslægtede. Vi begynder med N-

triples, som udgør den grundlæggende syntaks til at nedskrive RDF-tripler. Turtle-syntaksen

udbygger denne grundlæggende syntaks med forskellige former for syntaktiske forbedringer, der

øger læsbarheden. Derefter diskuterer vi TriG og N-Quads, der er ekstensioner af henholdsvis

Turtle og N-triples og beregnet til at indkode sammensatte grafer. Tilsammen omtales disse fire

som ” RDF-sprog af Turtle-typen”.

5.1.1 N-triples

N-triples [N-TRIPLES] er en simpel, linjebaseret måde at serialisere RDF-grafer med almindelig

tekst. Den uformelle graf i fig. 1 kan beskrives i N-triples på følgende måde:

Eksempel 6: N-triples 01 <http://example.org/bob#me> <http://www.w3.org/1999/02/22-rdf-syntax-

ns#type> <http://xmlns.com/foaf/0.1/Person> .

02 <http://example.org/bob#me> <http://xmlns.com/foaf/0.1/knows>

<http://example.org/alice#me> .

03 <http://example.org/bob#me> <http://schema.org/birthDate> "1990-07-

04"^^<http://www.w3.org/2001/XMLSchema#date> .

04 <http://example.org/bob#me> <http://xmlns.com/foaf/0.1/topic_interest>

<http://www.wikidata.org/entity/Q12418> .

05 <http://www.wikidata.org/entity/Q12418> <http://purl.org/dc/terms/title>

"Mona Lisa" .

06 <http://www.wikidata.org/entity/Q12418> <http://purl.org/dc/terms/creator>

<http://dbpedia.org/resource/Leonardo_da_Vinci> .

07

<http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619>

<http://purl.org/dc/terms/subject> <http://www.wikidata.org/entity/Q12418>.

Hver linje repræsenterer en tripel. Komplette IRI’er er omgivet af vinkler (<>). Mellemrummet for

enden af linjen signalerer afslutningen på triplen. I linje 3 er der et eksempel på en literal – i dette

Page 13: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

tilfælde en dato. Datatypen er vedhæftet literalen ved hjælp af skilletegnet ^^. Datoformatet følger

konventionerne for datatypen date i XML Schema.

Strengliteraler findes overalt, og derfor tillader N-triples, at brugeren udelader datatypen, når der

skrives en strengliteral. Derfor svarer "Mona Lisa" i linje 5 til "Mona Lisa"^^xsd:string. I

tilfælde af strenge med sprogmærke vises mærket direkte efter strengen, adskilt af @-symbolet.

F.eks "La Joconde"@fr (det franske navn for Mona Lisa).

Bemærk

Af tekniske årsager er datatypen for strenge med sprogmærke ikke xsd:string, men

rdf:langString. Datatypen for strenge med sprogmærke angives aldrig eksplicit.

Nedenstående figur viser de tripler, der er resultatet af eksemplet:

Fig. 4 Den resulterende RDF-graf fra eksemplet med N-triples.

Page 14: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

Bemærk, at de syv linjer i eksemplet med N-triples svarer til de syv kanter i diagrammet overfor.

N-triples bruges ofte til at udveksle store mængder RDF’er og til at behandle store RDF-grafer med

linjeorienterede tekstbehandlingsværktøjer.

5.1.2 Turtle

Turtle [TURTLE] er en ekstension til N-triples. I tillæg til N-triples’ grundlæggende syntaks

introducerer Turtle et antal syntaktiske genveje, f.eks. understøttelse af præfikser til navneområder,

lister og forkortelser for datatypedefinerede literaler. Turtle leverer et kompromis mellem nemheden

ved at skrive, nemheden ved at parse og læsbarheden. Grafen i fig. 4 kan repræsenteres i Turtle på

følgende måde:

Eksempel 7: Turtle 01 BASE <http://example.org/>

02 PREFIX foaf: <http://xmlns.com/foaf/0.1/>

03 PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

04 PREFIX schema: <http://schema.org/>

05 PREFIX dcterms: <http://purl.org/dc/terms/>

06 PREFIX wd: <http://www.wikidata.org/entity/>

07

08 <bob#me>

09 a foaf:Person ;

10 foaf:knows <alice#me> ;

11 schema:birthDate "1990-07-04"^^xsd:date ;

12 foaf:topic_interest wd:Q12418 .

13

14 wd:Q12418

15 dcterms:title "Mona Lisa" ;

16 dcterms:creator <http://dbpedia.org/resource/Leonardo_da_Vinci> .

17

18

<http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619>

19 dcterms:subject wd:Q12418 .

Turtle-eksemplet er en logisk ækvivalent til eksemplet med N-triples. Linje 1-6 indeholder et antal

erklæringer, som er en slags forkortelser til at nedskrive IRI’er. Relative IRI’er (f.eks. bob#me i linje

8) bestemmes mod en basis-IRI, her angivet i linje 1. Line 2-6 definerer IRI-præfikser (f.eks.

foaf:), som kan bruges til navne med præfikser (f.eks. foaf:Person) i stedet for hele IRI’er. Den

tilsvarende IRI konstrueres ved at erstatte præfikset med dets tilsvarende IRI (i dette eksempel står

foaf:Person for <http://xmlns.com/foaf/0.1/Person>).

Linje 8-12 viser, hvordan man med Turtle kan bruge forkortelser til et sæt tripler med samme

subjekt. Linje 9-12 angiver prædikat-objekt-delen af tripler, der har

<http://example.org/bob#me> som subjekt. Semikolonerne i slutningen af linje 9-11 angiver, at

det efterfølgende prædikat-objekt-par er del af en ny tripel, der bruger det nyeste subjekt, der er vist

i dataene— i dette tilfælde bob#me.

Linje 9 giver et eksempel på en særlig slags syntaktisk forbedring. Triplen bør uformelt læses som

”Bob (er) en person”. Prædikatet a er en forkortelse for egenskaben rdf:type, som modellerer

Page 15: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

forekomstrelationen (se tabel 1). Hensigten med forkortelsen a er, at det skal passe til et menneskes

intuitive forståelse af rdf:type.

Repræsentation af tomme knuder

Herunder ses to variationer af nedskrevne tomme knuder, baseret på eksemplet med cypressen

tidligere.

Eksempel 8: Tom knude PREFIX lio: <http://purl.org/net/lio#>

<http://dbpedia.org/resource/Mona_Lisa> lio:shows _:x .

_:x a <http://dbpedia.org/resource/Cypress> .

Udtrykket _:x er en tom knude. Den beskriver en unavngivet ressource i maleriet af Mona Lisa.

Den unavngivne ressource er en forekomst af klassen Cypress. Ovenstående eksempel viser den

konkrete syntaks for den uformelle graf i fig. 2.

Turtle har også en alternativ notation for tomme knuder, som ikke kræver brug af en syntaks som

_:x:

Eksempel 9: Tomme knuder (alternativ notation) @prefix foaf: <http://xmlns.com/foaf/0.1/> .

# en ressource (tom knude) er interesseret i en anden ressource

# kaldet "Mona Lisa" malet af Leonardo da Vinci.

[] foaf:topic_interest [

dcterms:title "Mona Lisa" ;

dcterms:creator <http://dbpedia.org/resource/Leonardo_da_Vinci> ] .

Kantede parenteser udtrykker her en tom knude. Prædikat-objekt-parrene mellem de kantede

parenteser fortolkes som tripler med den tomme knude som subjekt. Linjer, der begynder med ”#”

er kommentarer.

Yderligere oplysninger om syntaksen i Turtle, se [TURTLE].

5.1.3 TriG

Syntaksen i Turtle understøtter kun beskrivelse af enkeltgrafer uden mulighed for at ”navngive”

dem. TriG [TRIG] er en ekstension af Turtle, der muliggør beskrivelse af sammensatte grafer i

form af et RDF-datasæt.

Bemærk

I RDF 1.1 er ethvert legalt Turtle-dokument et legalt TriG-dokument. Det kan opfattes som ét

sprog. Navnene Turtle og TriG bruges stadig af historiske årsager.

En version af vores eksempel med sammesatte grafer kan beskrives på følgende måde i TriG:

Page 16: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

Eksempel 10: TriG 01 BASE <http://example.org/>

02 PREFIX foaf: <http://xmlns.com/foaf/0.1/>

03 PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

04 PREFIX schema: <http://schema.org/>

05 PREFIX dcterms: <http://purl.org/dc/terms/>

06 PREFIX wd: <http://www.wikidata.org/entity/>

07

08 GRAPH <http://example.org/bob>

09 {

10 <bob#me>

11 a foaf:Person ;

12 foaf:knows <alice#me> ;

13 schema:birthDate "1990-07-04"^^xsd:date ;

14 foaf:topic_interest wd:Q12418 .

15 }

16

17 GRAPH <https://www.wikidata.org/wiki/Special:EntityData/Q12418>

18 {

19 wd:Q12418

20 dcterms:title "Mona Lisa" ;

21 dcterms:creator <http://dbpedia.org/resource/Leonardo_da_Vinci> .

22

23

<http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619>

24 dcterms:subject wd:Q12418 .

25 }

26

27 <http://example.org/bob>

28 dcterms:publisher <http://example.org> ;

29 dcterms:rights <http://creativecommons.org/licenses/by/3.0/> .

Dette RDF-datasæt indeholder to navngivne grafer. Linje 8 og 17 angiver navnene på disse to

grafer. Triplerne i den navngivne graf er placeret mellem et par krøllede parenteser (linje 9-15 og

18-25). Man kan alternativt angive nøgleordet GRAPH foran grafens navn. Det kan gøre det nemmere

at læse, men er hovedsageligt indført som en tilpasning til SPARQL Update [SPARQL11-

UPDATE].

Den syntaks, der anvendes til triplerne og til erklæringerne øverst, er tilpasset Turtle-syntaksen.

De to tripler, der er beskrevet i linje 27-29, tilhører ikke nogen navngivet graf. De danner tilsammen

RDF-datasættets unavngivne ”standardgraf”.

Nedenstående figur viser de tripler, der fremkommer af dette eksempel.

Page 17: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

Fig. 5 Resulterende tripler af TriG-eksemplet.

5.1.4 N-Quads

Page 18: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

N-Quads [N-QUADS] er en simpel ekstension af N-triples, der gør det muligt at udveksle RDF-

datasæt. Med N-Quads kan man føje et fjerde element til en linje og registrere triplens graf-IRI, som

er beskrevet i den linje. Nedenstående er N-Quads-versionen af TriG-eksemplet:

Eksempel 11: N-Quads 01 <http://example.org/bob#me> <http://www.w3.org/1999/02/22-rdf-syntax-

ns#type> <http://xmlns.com/foaf/0.1/Person> <http://example.org/bob> .

02 <http://example.org/bob#me> <http://xmlns.com/foaf/0.1/knows>

<http://example.org/alice#me> <http://example.org/bob> .

03 <http://example.org/bob#me> <http://schema.org/birthDate> "1990-07-

04"^^<http://www.w3.org/2001/XMLSchema#date> <http://example.org/bob> .

04 <http://example.org/bob#me> <http://xmlns.com/foaf/0.1/topic_interest>

<http://www.wikidata.org/entity/Q12418> <http://example.org/bob> .

05 <http://www.wikidata.org/entity/Q12418> <http://purl.org/dc/terms/title>

"Mona Lisa" <https://www.wikidata.org/wiki/Special:EntityData/Q12418> .

06 <http://www.wikidata.org/entity/Q12418> <http://purl.org/dc/terms/creator>

<http://dbpedia.org/resource/Leonardo_da_Vinci>

<https://www.wikidata.org/wiki/Special:EntityData/Q12418> .

07

<http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619>

<http://purl.org/dc/terms/subject> <http://www.wikidata.org/entity/Q12418>

<https://www.wikidata.org/wiki/Special:EntityData/Q12418> .

08 <http://example.org/bob> <http://purl.org/dc/terms/publisher>

<http://example.org> .

09 <http://example.org/bob> <http://purl.org/dc/terms/rights>

<http://creativecommons.org/licenses/by/3.0/> .

De ni linjer i N-Quads-eksemplet svarer til de ni kanter i fig. 5. Linje 1-7 repræsenterer quads, hvor

det første element udgør graf-IRI’en. Den del af quad’en, der efterfølger graf-IRI’en, angiver

udsagnets subjekt, prædikat og objekt. Syntaksen følger konventionerne for N-triples. Linje 8 og 9

repræsenterer udsagnene i den unavngivne (standard-) graf, som mangler et fjerde element og derfor

udgør almindelige tripler.

Ligesom N-triples, bruges N-Quads typisk til udveksling af store RDF-datasæt og til at behandle

RDF med linjebaserede tekstbehandlingsværktøjer.

5.2 JSON-LD

JSON-LD [JSON-LD] føjer JSON-syntaks til RDF-grafer og -datasæt. JSON-LD kan bruges til at

omdanne JSON-dokumenter til RDF med et minimum af ændringer. JSON-LD giver mulighed for

universel identifikation af JSON-objekter, hvorved et JSON-dokument kan henvise til et objekt, der

er beskrevet i et andet JSON-dokument et andet sted på internettet. Syntaksen kan ligeledes

håndtere datatype og sprog. JSON-LD giver også mulighed for at serialisere RDF-datasæt ved at

bruge nøgleordet @graph.

Følgende JSON-LD-eksempel indkoder grafen i fig. 4:

Eksempel 12: JSON-LD 01 {

02 "@context": "example-context.json",

03 "@id": "http://example.org/bob#me",

04 "@type": "Person",

05 "birthdate": "1990-07-04",

Page 19: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

06 "knows": "http://example.org/alice#me",

07 "interest": {

08 "@id": "http://www.wikidata.org/entity/Q12418",

09 "title": "Mona Lisa",

10 "subject_of":

"http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D619",

11 "creator": "http://dbpedia.org/resource/Leonardo_da_Vinci"

12 }

13 }

Nøgleordet @context i linje 2 peger på et JSON-dokument, der beskriver, hvordan dokumentet kan

mappes til en RDF-graf (se nedenunder). Hvert JSON-objekt svarer til en RDF-ressource. I dette

eksempel er hovedressourcen http://example.org/bob#me, som det fremgår af linje 3 ved brugen

af nøgleordet @id. Når nøgleordet @id bruges som nøgle i et JSON-LD-dokument, peger det på en

IRI, der identificerer den ressource, der svarer til det aktuelle JSON-objekt. Ressourcens type

beskrives i linje 4, dens fødselsdato i linje 5 og en af dens venner i linje 6. Linje 7-12 beskriver en

af dens interesser, maleriet af Mona Lisa.

Der oprettes et nyt JSON-objekt i linje 7 til at beskrive dette maleri, og i linje 8 forbindes det med

Mona Lisa-IRI’en i Wikidata. Derpå beskrives forskellige egenskaber ved maleriet i linje 9-11.

Den anvendte JSON-LD-kontekst i eksemplet er vist nedenfor.

Eksempel 13: Angivelse af JSON-LD-kontekst 01 {

02 "@context": {

03 "foaf": "http://xmlns.com/foaf/0.1/",

04 "Person": "foaf:Person",

05 "interest": "foaf:topic_interest",

06 "knows": {

07 "@id": "foaf:knows",

08 "@type": "@id"

09 },

10 "birthdate": {

11 "@id": "http://schema.org/birthDate",

12 "@type": "http://www.w3.org/2001/XMLSchema#date"

13 },

14 "dcterms": "http://purl.org/dc/terms/",

15 "title": "dcterms:title",

16 "creator": {

17 "@id": "dcterms:creator",

18 "@type": "@id"

19 },

20 "subject_of": {

21 "@reverse": "dcterms:subject",

22 "@type": "@id"

23 }

24 }

25 }

Denne kontekst beskriver, hvordan et JSON-LD-dokument kan mappes som en RDF-graf. Linje 4-9

angiver, hvordan man forbinder Person, interest og knows til typer og egenskaber i

navneområdet FOAF, der er defineret i linje 3. I linje 8 angives der, at nøgleordet knows har en

værdi, der vil blive tolket som en IRI ved brug af nøgleordene @type og @id.

Page 20: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

I linje 10-12 forbindes birthdate til en egenskabs-IRI i schema.org og angiver, at dens værdi kan

forbindes med datatypen xsd:date.

Linje 14-23 beskriver, hvordan title, creator og subject_of mappes til egenskabs-IRI’er i

Dublin Core. Når man støder på "subject_of": "x" i et JSON-LD-dokument, der bruger denne

kontekst, bruges nøgleordet @reverse (linje 21) til at angive, at det bør mappes til en RDF-tripel,

der har subjektet x IRI, egenskaben dcterms:subject, og hvis objekt er den ressource, der svarer

til det oprindelige JSON-objekt.

5.3 RDFa

RDFa [RDFA-PRIMER] er en RDF-syntaks, der kan brugs til at indlejre RDF-data i HTML- og

XML-dokumenter. Dette muliggør, at f.eks. søgemaskiner kan indsamle disse data, når de søger på

internettet, og bruge dem til at berige resultaterne (se f.eks. schema.org og Rich Snippets).

Nedenstående HTML-eksempel indkoder RDF-grafen i fig. 4:

Eksempel14: RDFa 01 <body prefix="foaf: http://xmlns.com/foaf/0.1/

02 schema: http://schema.org/

03 dcterms: http://purl.org/dc/terms/">

04 <div resource="http://example.org/bob#me" typeof="foaf:Person">

05 <p>

06 Bob knows <a property="foaf:knows"

href="http://example.org/alice#me">Alice</a>

07 and was born on the <time property="schema:birthDate"

datatype="xsd:date">1990-07-04</time>.

08 </p>

09 <p>

10 Bob is interested in <span property="foaf:topic_interest"

11 resource="http://www.wikidata.org/entity/Q12418">the Mona Lisa</span>.

12 </p>

13 </div>

14 <div resource="http://www.wikidata.org/entity/Q12418">

15 <p>

16 The <span property="dcterms:title">Mona Lisa</span> was painted by

17 <a property="dcterms:creator"

href="http://dbpedia.org/resource/Leonardo_da_Vinci">Leonardo da Vinci</a>

18 and is the subject of the video

19 <a

href="http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9AA4D6

19">'La Joconde à Washington'</a>.

20 </p>

21 </div>

22 <div

resource="http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9A

A4D619">

23 <link property="dcterms:subject"

href="http://www.wikidata.org/entity/Q12418"/>

24 </div>

25 </body>

Ovenstående eksempel indeholder fire specielle RDFa-attributter, der gør det muligt at specificere

RDF-tripler i HTML: resource, property, typeof og prefix.

Page 21: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

Atributten prefix i linje 1 angiver IRI-forkortelsen på samme måde som præfikser i Turtle. Lige

disse præfikser kunne strengt taget have været udeladt, eftersom RDFa indeholder en liste over

fordefinerede præfikser, der omfatter dem, som bruges i dette eksempel.

Elementet div i linje 4 og 14 har attributten ressource, der angiver den IRI, om hvilken der kan

indlejres RDF-udsagn i dette HTML-element. Meningen med attributten typeof i linje 4 svarer til

forkortelsen (is) a i Turtle: subjektet http://example.org/bob#me er en forekomst (rdf:type)

af klassen foaf:Person.

I linje 6 ses attributten property. Værdien af denne attribut (foaf:knows) tolkes som en RDF-

egenskab i en IRI. Værdien af attributten href (http://example.org/alice#me) tolkes her som

triplens objekt. Derfor er følgende RDF-udsagn resultatet af linje 6:

<http://example.org/bob#me> <http://xmlns.com/foaf/0.1/knows>

<http://example.org/alice#me> .

I linje 7 er der en tripel med en literal værdi som objekt. Attributten property angives her som

HTML-elementet time. HTML kræver, at indholdet af dette element skal være et gyldigt

tidsformat. Ved at udnytte HTML’s indbyggede semantik for elementet time, kan RDFa fortolke

værdien som xsd:date uden at angive en eksplicit datatype.

I linjerne 10-11 kan det ses, at attributten resource også bruges til at angive en tripels objekt.

Denne metode bruges, når objektet er en IRI, og når IRI’en selv ikke er en del af HTML-indholdet

(f.eks. attributten href). Linje 16 viser et andet eksempel på en literal ("Mona Lisa"), der her er

defineret som indhold i attributten span. Hvis RDFa ikke kan udlede literalens datatype, antages

det, at datatypen er xsd:string.

Det er ikke altid muligt at definere RDF-udsagn som del af dokumentets HTML-indhold. I det

tilfælde er det muligt at bruge HTML-begreber, der ikke specificerer en tripel ud fra indholdet. Et

eksempel kan være linjerne 22-23. HTML-elementet link i linje 23 bruges her til at angive, hvad

subjektet er i Europeana-videoen (line 22).

Brugen af RDFa i dette eksempel er begrænset til RDFa Lite [RDFA-LITE]. Yderligere oplysninger

om RDFa findes i RDFa Primer [RDFA-PRIMER].

5.4 RDF/XML

RDF/XML [RDF-SYNTAX-GRAMMAR] gør det muligt at bruge XML-syntaks til RDF-grafer. Da

RDF oprindeligt blev udviklet sidst i 1990’erne, var dette den eneste syntaks, og nogen kalder

stadig denne syntaks ”RDF”. I 2001 blev der udviklet en forløber til Turtle kaldet ”N3”, og gradvist

er de øvrige sprog, der er anført her, taget i brug og er blevet standardiserede.

RDF/XML-eksemplet nedenfor indkoder den RDF-graf, der er afbildet i fig. 4:

Eksempel 15: RDF/XML 01 <?xml version="1.0" encoding="utf-8"?>

02 <rdf:RDF

03 xmlns:dcterms="http://purl.org/dc/terms/"

04 xmlns:foaf="http://xmlns.com/foaf/0.1/"

Page 22: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

05 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

06 xmlns:schema="http://schema.org/">

07 <rdf:Description rdf:about="http://example.org/bob#me">

08 <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/>

09 <schema:birthDate

rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1990-07-

04</schema:birthDate>

10 <foaf:knows rdf:resource="http://example.org/alice#me"/>

11 <foaf:topic_interest

rdf:resource="http://www.wikidata.org/entity/Q12418"/>

12 </rdf:Description>

13 <rdf:Description rdf:about="http://www.wikidata.org/entity/Q12418">

14 <dcterms:title>Mona Lisa</dcterms:title>

15 <dcterms:creator

rdf:resource="http://dbpedia.org/resource/Leonardo_da_Vinci"/>

16 </rdf:Description>

17 <rdf:Description

rdf:about="http://data.europeana.eu/item/04802/243FA8618938F4117025F17A8B813C5F9

AA4D619">

18 <dcterms:subject

rdf:resource="http://www.wikidata.org/entity/Q12418"/>

19 </rdf:Description>

20 </rdf:RDF>

I RDF/XML RDF angives tripler i XML-elementet rdf:RDF (linje 2 og 20). Attributterne for

elementets startmærke (linje 3-6) er en forkortet måde at skrive navne på XML-elementer og

attributter. XML-elementet rdf:Description (kort for http://www.w3.org/1999/02/22-rdf-

syntax-ns#Description) bruges til at definere tripelsæt, hvis subjekt er den IRI, som er angivet af

attributten about. Den første beskrivelsesblok (linje 7-12) har fire underelementer. Navnet på

underelementet er en IRI, der repræsenterer en RDF-egenskab, f.eks. rdf:type (linje 8). Her

repræsenterer hvert underelement én tripel. I tilfælde, hvor en tripels objekt også er en IRI, er der

intet indhold i egenskabs-underelementet, og objekt-IRI’en angives ved hjælp af attributten

rdf:resource (linje 8, 10-11, 15 og 18). Linje 10 svarer f.eks. til triplen:

<http://example.org/bob#me> <http://xmlns.com/foaf/0.1/knows>

<http://example.org/alice#me> .

Når en tripels objekt er en literal, angives literalens værdi som indhold af egenskabselementet (linje

9 og 14). Datatypen angives som attribut til egenskabselementet (linje 9). Hvis datatypen er udeladt

(linje 14), og der ikke er noget sprogmærke, antages det, at literalen har datatypen xsd:string.

Eksemplet viser den grundlæggende syntaks. En mere indgående omtale af syntaksen findes i

RDF/XML-dokumentet [RDF11-XML]. Det kan virke sært, at attributternes værdier indeholder

komplette IRI’er, på trods af at der er defineret præfikser til nogle af disse navneområder. Det

skyldes, at disse præfikser kun kan bruges til navne på XML-elementer og attributter.

6. Semantik for RDF-grafer

Det overordnede formål med RDF er at kunne flette meningsfulde informationer fra flere kilder

sammen automatisk og danne en større brugbar samling, der stadig giver mening. Som

udgangspunkt for denne sammenfletning udtrykkes alle informationer i den samme simple stil som

beskrevet ovenfor – i tripler med subjekt-prædikat-objekt. Men der er brug for mere end

Page 23: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

standardsyntaks, hvis informationerne skal vedblive med at være sammenhængende. Der skal også

være enighed om semantikken for disse tripler.

På nuværende tidspunkt i denne introduktion har læseren sandsynligvis opnået en intuitiv forståelse

for semantikken i RDF:

1. De IRI’er, der bruges til at navngive subjekt, prædikat og objekt, har en ”global” funktion og

navngiver de samme ting, hver gang de bliver brugt.

2. Enhver tripel er ”sand”, netop når den påståede relation faktisk findes mellem subjektet og

objektet.

3. En RDF-graf er ”sand”, netop når alle tripler i den er ”sande”.

Disse og andre begreber er angivet med matematisk præcision i dokumentet om RDF-semantik

[RDF11-MT].

En af fordelene ved RDF’s erklærende semantik er, at systemer kan drage logiske følgeslutninger.

Hvis systemerne accepterer, at et bestemt sæt tripler i inputtet er sandt, kan de under visse

omstændigheder udlede, at også andre tripler må være sande i en logisk forstand. Man siger, at det

første sæt tripler er en ”følgerelation” for de følgende tripler. Disse systemer, kaldet

”ræsonneringsprogrammer”, kan indimellem også udlede, at de givne tripler i inputtet modsiger

hinanden.

Med RDF’s fleksibilitet, hvor nye vokabularier kan oprettes, når man ønsker at bruge nye begreber,

kan man ræsonnere på mange forskellige måder. Når en bestemt slags ræsonnement forekommer

nyttig til mange forskellige formål, kan den dokumenteres som et bevissystem. Der er specificeret

adskillige bevissystemer i RDF-semantikken. En teknisk beskrivelse af andre bevissystemer, og

hvordan man bruger dem sammen med SPARQL, findes i [SPARQL11-ENTAILMENT]. Bemærk,

at visse følgerelationer er ret nemme at implementere, og ræsonnementet kan foretages hurtigt,

mens andre kræver avancerede teknikker, hvis de skal implementeres effektivt.

Følgende to udsagn kan tjene som eksempel på en følgerelation:

ex:bob foaf:knows ex:alice .

foaf:knows rdfs:domain foaf:Person .

Ifølge RDF-semantikken er det logisk at udlede følgende tripel fra denne graf:

ex:bob rdf:type foaf:Person .

Ovenstående udledning er et eksempel på en følgerelation i RDF Schema[RDF11-MT].

RDF-semantikken angiver også, at triplen:

ex:bob ex:age "forty"^^xsd:integer .

Page 24: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

fører til en logisk uoverensstemmelse, fordi literalen ikke kan acceptere de begrænsninger, der er

defineret for datatypen integer i XML Schema.

Bemærk, at værktøjer i RDF måske ikke genkender alle datatyper. Det kræves af værktøjer at de

som minimum understøtter datatyperne for strengliteraler og literaler med sprogmærke.

I modsætning til mange andre datamodelleringssprog giver RDF Schema en betydelig frihed. Den

samme enhed kan f.eks. bruges både som en klasse og en egenskab. Der sondres heller ikke skarpt

mellem begreberne ”klasser” og "forekomster". Derfor er følgende graf gyldig ifølge RDF’s

semantik:

ex:Jumbo rdf:type ex:Elephant .

ex:Elephant rdf:type ex:Species .

En elefant kan altså både være en klasse (med Jumbo som et eksempel på en forekomst) og en

forekomst (nemlig klassen af dyrearter).

Eksemplerne i dette afsnit er kun tænkt til at give læseren en vis forståelse for, hvad man kan

udrette med RDF-semantikken. Se [RDF11-MT] for en komplet beskrivelse.

7. RDF-data

Med RDF kan man kombinere tripler fra enhver kilde med en graf og behandle den som en lovlig

RDF. En stor mængde RDF-data er tilgængelig som Linked Data [LINKED-DATA]. Datasæt bliver

publiceret og knyttet til internettet med RDF, og mange af dem kan der søges i med SPARQL

[SPARQL11-OVERVIEW]. Eksempler på sådanne datasæt, der har været brugt i ovenstående

eksempler, omfatter:

Wikidata, en gratis, samarbejdede og flersproglig database, der drives af Wikimedia

Foundation.

DBpedia publicerer dataudtræk fra Wikipedia infoboxes.

WordNet, en leksikal database med engelske termer, der er grupperet i sæt af synonymer

med en række indbyrdes semantiske relationer. Der findes tilsvarende databaser for andre

sprog.

Europeana publicerer data om kulturelle emner fra et stort antal europæiske institutioner.

VIAF publicerer data om folk, værker og geografiske steder fra et antal statsbiblioteker og

andre kilder.

En opdateret liste over datasæt, der er tilgængelige som Linked Data, findes på datahub.io.

En række termer er blevet populære til at registrere sammenkædning mellem RDF-datakilder. Et

eksempel er egenskaben sameAs fra OWL-vokabulariet. Denne egenskab kan bruges til at angive,

at to IRI’er i realiteten peger på den samme ressource. Det er nyttigt, fordi forskellige udgivere kan

bruge forskellige identifikatorer til at betegne den samme ting. VIAF (se ovenfor) har f.eks. også en

IRI, der angiver Leonardo da Vinci. Vi kan registrere denne oplysning ved hjælp af owl:sameAs:

Eksempel 16: Sammenkædning mellem datasæt

Page 25: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

<http://dbpedia.org/resource/Leonardo_da_Vinci>

owl:sameAs <http://viaf.org/viaf/24604287/> .

Sådanne sammenkædninger kan udbredes af RDF-baseret databehandlingssoftware ved f.eks. at

flette eller sammenligne RDF-data i IRI’er, der peger på den samme ressource.

8. Yderligere oplysninger

Dette afslutter denne korte introduktion til RDF. Yderligere oplysninger kan findes i

henvisningerne. Følgende side er også værd at kigge på: W3C Linked Data page.

A. Tak

Antoine Isaac leverede mange eksempler, herunder de forskellige syntaktiske former. Pierre-

Antoine Champin leverede et af JSON-LD-eksemplerne. Andrew Wood tegnede diagrammer.

Sandro Hawke skrev første del af afsnittet om RDF-semantikken.

Vi er taknemmelige over kommentarerne fra (i alfabetisk rækkefølge) Gareth Adams, Thomas

Baker, Dan Brickley, Pierre-Antoine Champin, Bob DuCharme, Sandro Hawke, Patrick Hayes,

Ivan Herman, Kingsley Idehen, Antoine Isaac, Markus Lanthaler og David Wood.

Indledningen af dette dokument indeholder en række sætninger fra 2004-introduktionen [RDF-

PRIMER]. Resten af Introduktion til RDF 1.1 er et helt nyt dokument.

B. Ændringer siden forudgående publikation

Små redaktionelle problemer er rettet (herunder tre trykfejl i trykfejlslisten).

Link til den japanske oversættelse er tilføjet.

C. Litteraturhenvisninger

C.1 Informative henvisninger

[JSON-LD]

Manu Sporny, Gregg Kellogg, Markus Lanthaler, redaktører. JSON-LD 1.0. 16. januar 2014.

W3C-anbefaling. URL: http://www.w3.org/TR/json-ld/

[LINKED-DATA]

Tim Berners-Lee. Linked Data. Personlig holdning, ufuldstændig, men publiceret. URL:

http://www.w3.org/DesignIssues/LinkedData.html

[N-QUADS]

Gavin Carothers. RDF 1.1 N-Quads. W3C-anbefaling, 25. februar 2014. URL:

http://www.w3.org/TR/2014/REC-n-quads-20140225/. Seneste udgave findes på

http://www.w3.org/TR/n-quads/

[N-TRIPLES]

Page 26: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

Gavin Carothers, Andy Seabourne. RDF 1.1 N-Triples. W3C-anbefaling, 25. februar 2014.

URL: http://www.w3.org/TR/2014/REC-n-triples-20140225/. Seneste udgave findes på

http://www.w3.org/TR/n-triples/

[OWL2-OVERVIEW]

W3C OWL Working Group. OWL 2 Web Ontology Language Document Overview (Second

Edition). 11. december 2012. W3C-anbefaling. URL: http://www.w3.org/TR/owl2-

overview/

[RDF-PRIMER]

Frank Manola; Eric Miller. RDF Primer. 10. februar 2004. W3C-anbefaling. URL:

http://www.w3.org/TR/rdf-primer/

[RDF-SYNTAX-GRAMMAR]

Fabien Gandon; Guus Schreiber. RDF 1.1 XML Syntax. 25. februar 2014. W3C-anbefaling.

URL: http://www.w3.org/TR/rdf-syntax-grammar/

[RDF11-CONCEPTS]

Richard Cyganiak, David Wood, Markus Lanthaler. RDF 1.1 Concepts and Abstract Syntax.

W3C-anbefaling, 25. februar 2014. URL: http://www.w3.org/TR/2014/REC-rdf11-

concepts-20140225/. Seneste udgave findes på http://www.w3.org/TR/rdf11-concepts/

[RDF11-DATASETS]

Antoine Zimmermann. RDF 1.1: On Semantics of RDF Datasets. Notat fra W3C Working

Group, 25. februar 2014. Den seneste version findes på http://www.w3.org/TR/rdf11-

datasets/.

[RDF11-MT]

Patrick J. Hayes, Peter F. Patel-Schneider. RDF 1.1 Semantics. W3C-anbefaling, 25. februar

2014. URL: http://www.w3.org/TR/2014/REC-rdf11-mt-20140225/. Seneste udgave findes

på http://www.w3.org/TR/rdf11-mt/

[RDF11-NEW]

David Wood. What’s New in RDF 1.1. Notat fra W3C Working Group, 25. februar 2014.

Den seneste version findes på http://www.w3.org/TR/rdf11-new/.

[RDF11-SCHEMA]

Dan Brickley, R. V. Guha. RDF Schema 1.1. W3C-anbefaling, 25. februar 2014. URL:

http://www.w3.org/TR/2014/REC-rdf-schema-20140225/. Den senest publicerede version

findes på http://www.w3.org/TR/rdf-schema/.

[RDF11-XML]

Fabien Gandon, Guus Schreiber. RDF 1.1 XML Syntax. W3C-anbefaling, 25. februar 2014.

URL: http://www.w3.org/TR/2014/REC-rdf-syntax-grammar-20140225/. Den senest

publicerede version findes på http://www.w3.org/TR/rdf-syntax-grammar/

[RDFA-LITE]

Manu Sporny. RDFa Lite 1.1. 7. juni 2012. W3C-anbefaling. URL:

http://www.w3.org/TR/rdfa-lite/

[RDFA-PRIMER]

Ivan Herman; Ben Adida; Manu Sporny; Mark Birbeck. RDFa 1.1 Primer - Second Edition.

22. august 2013. W3C-notat. URL: http://www.w3.org/TR/rdfa-primer/

[RFC3987]

M. Dürst; M. Suignard. Internationalized Resource Identifiers (IRIs). Januar 2005. RFC.

URL: http://www.ietf.org/rfc/rfc3987.txt

[SPARQL11-ENTAILMENT]

Birte Glimm; Chimezie Ogbuji. SPARQL 1.1 Entailment Regimes. 21. marts 2013. W3C-

anbefaling. URL: http://www.w3.org/TR/sparql11-entailment/

Page 27: Introduktion til RDF 1 · 2018-01-15 · Brian McBride Tjek trykfejlslisten ... Resume Hensigten med denne introduktion er at give læseren det grundlæggende kendskab, der er

[SPARQL11-OVERVIEW]

The W3C SPARQL Working Group. SPARQL 1.1 Overview. 21. marts 2013. W3C-

anbefaling. URL: http://www.w3.org/TR/sparql11-overview/

[SPARQL11-UPDATE]

Paul Gearon; Alexandre Passant; Axel Polleres. SPARQL 1.1 Update. 21. marts 2013. W3C-

anbefaling. URL: http://www.w3.org/TR/sparql11-update/

[TRIG]

Gavin Carothers, Andy Seaborne. TriG: RDF Dataset Language. W3C-anbefaling, 25.

februar 2014. URL: http://www.w3.org/TR/2014/REC-trig-20140225/. Seneste udgave

findes på http://www.w3.org/TR/trig/

[TURTLE]

Eric Prud'hommeaux, Gavin Carothers. RDF 1.1 Turtle: Terse RDF Triple Language. W3C-

anbefaling, 25. februar 2014. URL: http://www.w3.org/TR/2014/REC-turtle-20140225/.

Seneste udgave findes på http://www.w3.org/TR/turtle/