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,
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
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.
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.
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
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.
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.
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].
Fig. 3 Uformel graf over ovenstående datasæt.
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
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
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
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.
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
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:
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.
Fig. 5 Resulterende tripler af TriG-eksemplet.
5.1.4 N-Quads
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",
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.
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.
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/"
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
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 .
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
<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]
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/
[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/