Hjälp Wikitravel att blir en bättre reseguide! Läs här

Wikitravel:Turtle RDF

Från Wikitravel, den fria resehandboken.
Hoppa till: navigering, sök

Turtle är en variant av RDF som baserats på NotationThree där man tagit bort allt utom det som berör RDF. Eftersom det innebär att man tagit bort allt det som rör RDF/XML är det ett enklare sätt att lära sig RDF och att skapa RDF-dokument. Turtle stöds bl.a. av verktyg som Raptor och RAP (RDF API för PHP).

Den här sidan förklarara hur man gör ett FOAF (Friend Of A Friend)-dokument med hjälp av Turtle.

Snabbguide till Turtle[Redigera]

Ett Turtle-dokument består av en samling RDF-trior. Varje trio har formatet:

subjekt predikat objekt.

Varje beskrivning slutar med en punkt, och varje del i trion (förutom objekt) är en URI, en Uniform Resource Identifier vilket är ungefär samma sak som URL, och som kan vara ett ord, t.ex. "snöre" eller en siffra, t.ex. "134". Om någon är intresserad av FOAF kan man beskriva detta genom att använda trion:

<mailto:person@example.net> <http://xmlns.com/foaf/0.1/interest> <http://www.foaf-project.org/> .

Här får FOAF:s hemsidas URL (Uniform Resource Locator) ersätta idén "FOAF" och personens e-postadress får stå för personen ifråga. Detta är mycket vanligt inom RDF, nämligen att låta URL stå för abstrakta begrepp. Man använder FOAF-termer för att beskriva ett intresse av något. Den största delen arbete läggs ner på att skapa URL:er som har en gemensamt överenskommen betydelse i stil med "Den här URI:n betyder "är intresserad av". Om personen ifråga också är intresserad av Turtle kan det beskrivas så här:

<mailto:person@example.net> <http://xmlns.com/foaf/0.1/interest> <http://www.ilrt.bris.ac.uk/discovery/2004/01/turtle/> .

Detta är egentligen allt man behöver veta för att skriva Turtle, men det finns ett antal genvägar som gör dett dokument kortare och enklare att läsa.

Prefix[Redigera]

Att skriva ut hela URI:n blir lätt en svårläst röra. Med Turtle kan kan man skapa ett namnrymdsprefix så att man inte behöver skriva ut den fullständiga URI:n hela tiden. Defionitionen av ett namnrymdsprefix ser ut så här:

@prefix pref: <uri prefix> .

För FOAF-dokument kan man alltså använda ett namnrymdsprefix som ser ut så här:

@prefix foaf: <http://xmlns.com/foaf/0.1/> .

Därefter kan man använda de data som beskrevs ovan:

@prefix foaf: <http://xmlns.com/foaf/0.1/> .
<mailto:person@example.net> foaf:interest <http://www.foaf-project.org/> .
<mailto:person@example.net> foaf:interest <http://www.ilrt.bris.ac.uk/discovery/2004/01/turtle/> .

Man kan också definiera ett gemensamt namnrymdsindex om man ofta använder samma namnrymndsindex. För att göra detta använder man samma format utan ersättningsordet "pref":

@prefix : <uri prefix> .

Ofta får den huvudsakliga namnrymden på ett Turtledokument utgöra det gemensamma namnrymdsindexet. Om man t.ex. arbetar på ett FOAF-dokument kan man göra FOAF-namnrymden till gemensamt namnrymdsindex:

@prefix : <http://xmlns.com/foaf/0.1/> .

<mailto:person@example.net> :interest <http://www.foaf-project.org/> .
<mailto:person@example.net> :interest <http://www.ilrt.bris.ac.uk/discovery/2004/01/turtle/> .

Kommatecken[Redigera]

När man gör två eller flera beskrivningar med samma subjekt och släktskap kan dokumentet göras kortare och mer lättläst genom att slå ihop beskrivningarna och dela på objekten genom att använda ett eller flera kommatecken. Exemplet ovan kan alltså skrivas sä här:

@prefix : <http://xmlns.com/foaf/0.1/> .

<mailto:person@example.net> :interest <http://www.foaf-project.org/> , <http://www.ilrt.bris.ac.uk/discovery/2004/01/turtle/> .

Observera att betydelsen är densamma, det är bara antalet använda tecken som skiljer sig åt.

Semikolon[Redigera]

Om man har samma subjekt i mer än en beskrivning, men med olika släktskap, kan dessa kombineras men avskilja släktskaps- och objektdelarna med hjälp av ett semikolon. Till exempel: om man vill säga att personens namn är "Sven Exempelsson" så skriver man:

@prefix : <http://xmlns.com/foaf/0.1/> .
<mailto:person@example.net> :name "Sven Exempelsson" .

Detta kan sedan kombineras med Svens intressen:

@prefix : <http://xmlns.com/foaf/0.1/> .

<mailto:person@example.net>
  :name "Sven Exempelsson" ;
  :interest <http://www.foaf-project.org/> , <http://www.ilrt.bris.ac.uk/discovery/2004/01/turtle/> .

Observera att det fortfarande är en punkt i slutet av meningen. Den nya raden är inte nödvändig, men det gör dokumentet mer lättläst.

Typer[Redigera]

Det råder ett särskilt släktskap mellan en sak och en kategori av saker. Detta kallas för typ (http://www.w3.org/1999/02/22-rdf-syntax-ns#type). Om man vill beskriva att Sven är en person kan det skrivas så här:

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

<mailto:person@example.net> rdf:type :Person .

Eftersom detta i sig är ett grundläggande släktskap har Turtle en särskild nyckelbokstav, a, för att ersätta släktskaps-typen:

@prefix : <http://xmlns.com/foaf/0.1/> .

<mailto:person@example.net> a :Person .

Svens fullständiga FOAF-dokument blir då:

@prefix : <http://xmlns.com/foaf/0.1/> .

<mailto:person@example.net>
  a :Person ;
  :name "Sven Exempelsson" ;
  :interest <http://www.foaf-project.org/> , <http://www.ilrt.bris.ac.uk/discovery/2004/01/turtle/> .

Fördelen här att man i princip kan läsa högt för sig själv och det finns någon form av logik i det hela (i alla fall på engelska!).

Denna URI representerar en person; hans namn är Sven Exempelsson och hans intressen är FOAF och Turtle.

Anonyma objekt[Redigera]

En bra egenskap hos Turtle är att man kan beskriva släktskap mellan personer. Sven har kanske en vän som heter Sofia Svensson och som har e-postadressen <alf@example.org> . Detta kan skrivas så här:

@prefix : <http://xmlns.com/foaf/0.1/> .

<mailto:person@example.net> :knows <mailto:sofia@example.org> .

<mailto:sofia@example.org> a :Person; :name "Sofia Svensson" .

När man inte vill definiera en URL för en person kan man använda ett anonymt objekt på objektsplatsen. Anonyma objekt definieras med hakar "[]" på båda sidor om ett eller flera besläktade objektspar, vilket definierar objekten som i sin tur delas med semikolon. Man kan definiera alla slags släktskap som detta objekt är släkt med. Om man inte vill visa Sofias e-postadress (eller om man inte känner till den) skriver man bara:

@prefix : <http://xmlns.com/foaf/0.1/> .

<mailto:person@example.net> :knows [ a :Person ; :name "Sofia Svensson" ] .

Detta fungerar också bra om man läser ut det: Sven känner en person som heter "Sofia Svensson".

Andra scheman[Redigera]

En stor del av FOAF är att skapa och använda andra, utökade scheman. Med Turtle definierar man först ett prefix för det andra schemat och använder de andra termerna med detta prefix. Om man till exempel vill använda "släktskapsschemat" för att visa att inte bara Sven känner Alf, utan rentav är gift med henne, skriver man:

@prefix : <http://xmlns.com/foaf/0.1/> .
@prefix rel: <http://www.perceive.net/schemas/relationship/> .

<mailto:person@example.net> rel:spouseOf [ a :Person ; :name "Sofia Svensson" ] .

Man kan alltså blanda termer från olika scheman så länge som man ger dem en namnrymd. Dessvärre måste man hoppa över namnrymderna när man läser Turtle FOAF-dokument högt.

Externa länkar[Redigera]

  • Turtle -- Formatdefinition
  • Notation3 -- en föregångare till Turtle
  • N3 Primer -- en handledning till idéerna bakom Notation3 (och därmed till Turtle)


Varianter

Åtgärder

Guider

På andra språk