Resource Description Framework

**Resource Description Framework** (**RDF**) er en gruppe av W3C-spesifikasjoner som beskriver en modell for å representere metadata, data om data. Spesifikasjonene brukes i mange ulike sammenhenger for å beskrive informasjon og er et viktig element i visjonen om den semantiske webben.

RDF er basert på idéen om å uttrykke informasjon i *tripler*: subjekt, predikat og objekt. Et eksempel på et trippel kan være setningen "Per er glad i Anne", der "Per" er subjektet, "er glad i" er predikatet og "Anne" er objektet. Til sammen vil triplene danne en graf, som kan beskrives ut fra sine kanter. Ut fra denne modellen beskrives både data og metadata. 

RDF er i utgangspunktet en datamodell og fastsetter ikke hvordan triplene skal noteres eller hvilket format de skal lagres i. Det viktigste formatet for RDF-informasjon er den XML-baserte RDF/XML. Når informasjonen skal skrives og leses av mennesker brukes blant annet den mye enklere Turtle-notasjonen, som så kan oversettes til XML-format av et dataprogram.

## Funksjonalitet
RDF kan entydig identifisere objekter og begreper ved hjelp av samlinger med beskrivelser av klasser og egenskaper. Dette gir store muligheter for utveksling av informasjon på tvers av systemer og teknologier. RDF er derfor egnet til å kommunisere og samordne data som kan lagres i ulike systemer, for eksempel i relasjonsdatabaser. I tillegg kan RDF beskrive og sette regler for data. Ved hjelp av RDF Schema eller et annet ontologispråk kan man sette data inn i klasser og beskrive forholdet mellom klasser og restriksjoner for samhandling mellom dem.

## Ressursidentifisering
Et sentralt mål for standarden er at datamaskiner skal kunne hente informasjon fra ulike kilder, og forstå når det er snakk om samme begrep eller samme objekt. 

For å oppnå dette må man for det første kunne gi unike objekter og begreper entydige navn. Hvis for eksempel to personer har samme navn må man finne en betegnelse som entydig identifiserer dem. Dette gjøres ved å tilordne en URI for hvert begrep, ofte kan dette være en webadresse der det ligger informasjon om objektet eller begrepet.

De store mulighetene i det semantiske nettet ligger imidlertid i at ulike aktører bruker samme URI når det er snakk om det samme begrepet. Det eksisterer allerede flere større samlinger av begreper som kan brukes når man publiserer semantisk informasjon.

## Blanke noder
For å uttrykke en-til-mange-relasjoner og situasjoner der man kjenner forholdet mellom to objekter via et ukjent objekt brukes blanke noder, objekter uten egne navn/URIer. 

## RDF Schema
RDF Schema er et formelt språk beregnet for å beskrive metadata. Standarden er fastsatt av World Wide Web Consortium. Språket gir enkel funksjonalitet for å beskrive ontologier, som brukes til å gi informasjon om RDF-ressurser. En mer ekspressiv standard som fyller samme funksjoner er Web Ontology Language (OWL).

RDFs opererer med klasser, som kan brukes til å beskrive objekter. Man kan fastsette forhold mellom klasser og legge enkelte restriksjoner for mulige kombinasjoner av klasser.


```
folk:Knut rdf:type folk:Knutsens .
folk:Knutsens rdfs:subClassOf foaf:Person .
```

Eksemplet øverst (i Turtle-notasjon) forteller at Knut er en instans av klassen "Knutsens", som igjen er en underklasse av "Person". Ut fra dette kan datamaskinen forstå at Knut er en person.


```
foaf:knows rdfs:domain foaf:Person .
foaf:knows rdfs:range foaf:Person .
folk:Per foaf:knows folk:Anne .
```

Den første linjen i dette eksempelet sier at subjektet for "knows" er en person. Den andre sier at objektet er en person. Ut fra siste linje (Per kjenner Anne) vil leseren konkludere at Per og Anne er personer.

## Turtle
Turtle er en enkel syntaks for å notere RDF-data, som er utviklet av Dave Beckett. Turtle utgjør en del av den mer omfattende Notasjon3-syntaksen. Turtle tar bare for seg RDF-grafer. Språket har ingen offisiell status, men er et populært verktøy for enkel koding av RDF.


```
<http://www.nordhus.no/folk#Knut> <http://xmlns.com/foaf/0.1/knows> <http://www.ander.no/folk#Kjell> .
```

I eksemplet ovenfor vises et enkelt trippel uttrykt i Turtle/Notasjon3. Utsagnet sier at personen som er representert ved den første URL-en kjenner personen som er representert ved den andre URL-en.


```
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix folk: <http://www.nordhus.no/folk#> .
# Kommentarer skrives på denne måten

folk:Knut
    foaf:knows folk:Kjell, folk:Per, folk:Anne;
    foaf:name "Knut Knutsen" .
folk:Per foaf:hasSister folk:Anne .
```

Dette lengre eksemplet forteller at Knut kjenner de tre personene og heter "Knut Knutsen", og at Anne er søsteren til Per.

## RDF/XML
RDF/XML er den ordinære syntaksen for RDF-grafer. Et forenklet eksempel:

```
<rdf:Description rdf:about="http://www.nordhus.no/folk#Knut">
   <http://xmlns.com/foaf/0.1/knows>
      <rdf:Description rdf:about="http://www.nordhus.no/folk#Kjell" />
   </http://xmlns.com/foaf/0.1/knows>
</rdf:Description>
```


Et fullstendig eksempel med fildeklarasjoner:

```
<?xml version="1.0" encoding="utf-8"> 

<rdf:RDF 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:foaf="http://xmlns.com/foaf/0.1/"
   xml:base="http://www.nordhus.no/folk#">

   <rdf:Description rdf:about="Knut" foaf:name="Knut Knutsen">
      <foaf:knows>
         <rdf:Description rdf:about="Kjell" />
         <rdf:Description rdf:about="Per" />
         <rdf:Description rdf:about="Anne" />
      </foaf:knows>
   </rdf:Description>

   <rdf:Description rdf:about="Per">
      <foaf:hasSister resource="Anne" />
   </rdf:Description>

</rdf:RDF>
```


## Datatyper
RDF har støtte for å merke opplysninger med datatype og språk. En mye brukt datatype-samling er XML Schema. Dette eksempelet viser dette, først i Turtle-syntaks og deretter i RDF/XML (enkelte deklarasjoner er utelatt):

```
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
folk:Knut foaf:name "Knut Knutsen"^^xsd:string .

<rdf:Description rdf:about="Knut">
   <foaf:name datatype="http://www.w3.org/2001/XMLSchema#string">
      Knut Knutsen
   </foaf:name>
</rdf:Description>
```

## Se også
* FOAF
* Semantisk web

## Referanser


## Eksterne lenker
* En introduksjon til RDF i D-Lib Magazine, skrevet av Eric Miller i 1998
* RDF-spesifikasjonen fra 1999