Startsiden har en velholdt katalog med flere tusen kategorier, og vi har nå bestemt oss for å åpne denne katalogstrukturen for utviklere og andre interesserte.
Tagging har utviklet seg til å bli en god måte å klassifisere informasjon på, men den har sine begrensninger når det kommer til å dele informasjon med andre. En ting som typisk er vanskelig med tagger er å skille når noen bruker ordet “ski”, mener man da ski til å gå på, eller tettstedet eller kommunen Ski? En mulig løsning på dette er å koble sine tagger til et felles begrepsapparat som kan deles av flere. Startsidens mange kategorier gir et omfattende begrepsapparat som vil gjøre det mulig for utviklere å bygge løsninger som løser slike problemer. Videre kan man ved å bruke dette la en maskin finne ut at ski er sportsutstyr og at Ski er i Norge. Mulighetene er store.
Løsningen består av to deler: Den ene biten er en formulering av kategoriene med Simple Knowledge Organization System (SKOS), som er en mye brukt web-standard for katalogstrukturer. Denne er sluppet under en Creative Commons-lisens, nærmere bestemt “by-sa”.
Den andre biten er er JSON-API som kan brukes til autocomplete i søkefelt, altså, man kan lage en applikasjon som gir brukeren forslag om kategorier å bruke når man begynner å skrive. Denne er beskrevet i en egen artikkel.
SKOS-eksport
Hva er SKOS?
SKOS er en Semantic Web-standard, noe som betyr at dataene kommer som RDF, og er publisert etter Linked Data-prinsipper på flere forskjellige formater, først og fremst RDF/XML, N-Triples, RDF/JSON og Turtle. Sistnevnte er foretrukket.
Et SKOS-eksempel fra Startsiden
Hvis vi tar pop-kategorien som eksempel, finner vi på http://sw.startsiden.no/katalog/v1/pop-7003/data bl.a. dette:
<http://sw.startsiden.no/katalog/v1/pop-7003> a skos:Concept ;
skos:prefLabel "Pop"@no ;
skos:definition "<div xml:lang=\"no\">Pop er musikk ...</div>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> ;
skos:related </katalog/v1/festivaler-217280> ;
skos:narrower </katalog/v1/musikere-206609> ;
skos:broader </katalog/v1/musikksjangere-4728> ;
<http://xmlns.com/foaf/0.1/page> <http://www.startsiden.no/musikk/musikksjangere/pop/> .
Allerede i URIen (adressen) ser vi en forskjell fra hvordan vi er vant til å tenke: Det er forskjell mellom http://sw.startsiden.no/katalog/v1/pop-7003 som identifiserer det abstrakte konseptet “pop” og
http://sw.startsiden.no/katalog/v1/pop-7003/data som identifiserer en informasjon om konseptet. Den store praktiske forskjellen er det ikke, siden du får en “redirect” fra den uten /data til den med.
Så hva er det utdraget betyr? Aller først sier vi hva vi snakker om,
nemlig http://sw.startsiden.no/katalog/v1/pop-7003. Alt som
følger handler om denne ressursen, og det den første linja sier er at den er av typen skos:Concept, altså et konsept i Startsidens begrepsapparat. Den neste linja sier at det foretrukne navnet på dette konseptet er “Pop” og at navnet er på norsk. Deretter kommer en definisjon i HTML-format.
De tre neste linjene forteller om hvilke relasjoner denne kategorien har til andre kategorier: skos:broader forteller at kategorien over i hierarkiet er “Musikksjanger”-kategorien, som er identifisert ved sin URI. Underkategorien(e) vises i skos:narrower og skos:related brukes til @-linkene i katalogen. Til slutt linker vi til Startsiden-siden som hører til dette konseptet.
For topp-kategoriene er det enkelte forskjeller, fordi de ikke har noen bredere kategori får de istedet en skos:topConceptOf til et skos:ConceptScheme som gir en beskrivelse av begrepsapparatet som helhet. Her ligger også lisensen.
Bruke det i egne sider
Hvis du vil komme igang å tagge dine ting med katalogen, kan du bruke RDFa. RDFa er en standard som er på full fart oppover, det er denne standarden som også Facebook’s Open Graph Protocol er bygd på. Vi anbefaler et vokabular som heter Common Tag.
Det aller enkleste er å bare legge inn noe i head i toppen av fila. Hvis du skal tagge en artikkel med sport, vil du kunne tagge artikkelen som helhet slik:
<link xmlns:ctag="http://commontag.org/ns#" rel="ctag:tagged" href="http://sw.startsiden.no/katalog/v1/sport-7679"/>
La oss ta et litt mer avansert eksempel. Si at du idag har en liste med tagger, som hver linker til en side med artiklene som er tagget med akkurat det tagget. La oss si at vi skal tagge med “ski” og “feriesentre”. Da kan det lages som følger:
<ul xmlns:ctag="http://commontag.org/ns#">
<li property="ctag:tagged" resource="http://sw.startsiden.no/katalog/v1/ski-12935">
<a href="http://example.org/myoldtags/ski">Sport</a>
</li>
<li property="ctag:tagged" resource="http://sw.startsiden.no/katalog/v1/feriesentre-4214">
<a href="http://example.org/myoldtags/feriesentre">Feriesentre</a>
</li>
</ul>
Hvis du har flere artikler på samme siden, vil du trenge en ID på hver artikkel, men forøvrig kan du gjøre det på samme måte, men du vil trenge et about-attributt for hver artikkel, f.eks hvis ski-ferien bare er en av mange blogg-poster, gjør du:
<ul about="#ski-ferien" xmlns:ctag="http://commontag.org/ns#">
<li property="ctag:tagged" resource="http://sw.startsiden.no/katalog/v1/ski-12935">
<a href="http://example.org/myoldtags/ski">Sport</a>
</li>
<li property="ctag:tagged" resource="http://sw.startsiden.no/katalog/v1/feriesentre-4214">
<a href="http://example.org/myoldtags/feriesentre">Feriesentre</a>
</li>
</ul>
Verktøystøtte
For dem som skriver HTML-kode kan man bare følge eksemplene over. Ellers kan man se etter RDFa og CommonTag-støtte i verktøyene man benytter. Det populære CMS-systemet Drupal, som brukes av ABC Nyheter har støtte for dette.
Denne Wikien har også en lang liste over verktøy.
Veien videre
Siden vi bruker SKOS er man ikke begrenset til Startsiden selv om man tar vår struktur i bruk. Alle Wikipedia-kategorier finnes også som SKOS, New York Times bruker SKOS my på samme måte som oss. Videre har vi den amerikanske Library of Congress Subject Headings, og Google-eide Freebase er også relevant, og mange flere. På sikt vil det være aktuelt å linke vårt begrepsapparat til andres, slik at disse kan brukes om hverandre og dermed videreføre Linked Data-prinsippene.
Videre er ikke Startsidens katalog tilstrekkelig til å klassifisere alle situasjoner, men da kan man også bruke SKOS til å formulere sitt eget begrepsapparat, og koble det til Startsiden der det er riktig å gjøre. Dermed er Startsiden også en god startside for den semantiske webben!