Hopp til hovudinnhald

Hente data via OAI-PMH

Om OAI-PMH

OAI-PMH (Open Archives Initiative Protocol for Metadata Harvesting) er ein internasjonal standard for å hente ut skildringar av ressursar frå ein katalog. Han blir mykje brukt til hausting mellom katalogar og dataportalar. Standarden er beskriven i OAI-PMH versjon 2.0.

Kva du får ut

Kvar post i uttrekket er skildra i RDF og vert levert i formatet RDF/XML (valt med metadataPrefix=rdfxml i steg 2). Skildringane følgjer ein standard for kvar ressurstype, til dømes DCAT-AP-NO for datasett og SKOS-AP-NO-Begrep for omgrep.

Slik verkar det

OAI-PMH-endepunktet leverer uttrekket som ei liste med postar. Kvar post skildrar éin ressurs, til dømes eitt datasett eller eitt omgrep, avhengig av kva uttrekk du hentar. Store lister blir delte opp i fleire sider. Kvar gong du opnar ei adresse får du ei side med inntil 50 postar. Neste side hentar du ved å endre adressa. Kvar side, bortsett frå den siste, sluttar med ein fortsetjingsnøkkel (resumptionToken) som du brukar for å hente neste side.

Steg 1: Vel uttrekk

Finn ID-en for uttrekket du vil hente. Desse uttrekka er tilgjengelege i dag:

UttrekkInnhaldID
Transportportal DatasetsDatasett i Transportportalend097da12-e13b-4696-be30-4165b45a8374
EU-OpenDataOpne datasett som blir hausta av dataportalen til EUea654341-b155-423f-97e6-e64946187d34
EU-Non-OpenDataVerna data (datasett som ikkje er opne) som blir hausta av dataportalen til EU3658f833-1ddf-4efc-85a0-844b53f64f3a
All conceptsAlle omgrep, oppdaterte kvar 24. time834ebf4d-0e40-4645-8e4a-9f1a087f5e96

Ei oppdatert oversikt med talet på postar i kvart uttrekk finn du i API-dokumentasjonen.

Steg 2: Hent første side

Lim inn denne adressa i adressefeltet. Byt ut <ID> med ID-en for uttrekket du valde i steg 1:

https://resource.api.fellesdatakatalog.digdir.no/v1/union-graphs/<ID>/oai-pmh?verb=ListRecords&metadataPrefix=rdfxml

Du får opp XML med dei første 50 postane. Lagre sida med Ctrl+S (Mac: Cmd+S) dersom du vil ta vare på ho.

Steg 3: Finn fortsetjingsnøkkelen

Trykk Ctrl+F (Mac: Cmd+F) og søk etter resumptionToken. Nedst på sida finn du ei linje som liknar på denne. Døme for eit uttrekk med 81 postar:

<resumptionToken completeListSize="81" cursor="0"><ID>:rdfxml:50</resumptionToken>

completeListSize viser kor mange postar uttrekket inneheld totalt. cursor viser kor mange postar som kom før denne sida. På første side er den 0. Står det cursor="50", startar sida på post nummer 51. Teksten mellom taggane er nøkkelen til neste side.

Finn du ikkje resumptionToken, fekk heile uttrekket plass på éi side, og du er ferdig. Talet på postar finn du då ved å søkje etter <record> med Ctrl+F (Mac: Cmd+F). Talet på treff er talet på postar på sida.

Steg 4: Hent neste side

Byt ut alt etter ? i adressa med verb=ListRecords&resumptionToken= etterfølgd av nøkkelen du fant:

https://resource.api.fellesdatakatalog.digdir.no/v1/union-graphs/<ID>/oai-pmh?verb=ListRecords&resumptionToken=<ID>:rdfxml:50

Merk: metadataPrefix=rdfxml skal ikkje vere med på denne og dei neste sidene. Tek du den med, får du feilmeldinga badArgument. Nøkkelen hugsar kva format du valde i steg 2.

Steg 5: Gjenta til du er ferdig

Gjenta steg 3 og 4 for kvar ny side. Nøkkelen endrar seg berre i talet på slutten, som aukar med 50 for kvar side (:50, :100, :150 osv.). Du kan derfor også hente neste side ved å auke talet sjølv.

Når resumptionToken er tomt, har du henta alle postane. Døme for eit uttrekk med 81 postar:

<resumptionToken completeListSize="81" cursor="50"/>

I dømet er 50 postar leverte tidlegare, så siste side viser post 51 til 81 av 81.

Aukar du talet forbi slutten av lista, får du feilmeldinga badResumptionToken. Då har du også henta alt.

Tips

  • Firefox og Chrome viser XML som eit lesbart tre. Dersom sida ser tom ut eller berre viser tekst, prøv Ctrl+U (Mac: Cmd+Option+U) for å sjå kjeldekoden.
  • Kolona i nøkkelen fungerer vanlegvis utan endring. Får du feil, prøv å byte : med %3A.
  • Vil du berre sjå kva postar som finst, kan du bruke verb=ListIdentifiers i staden for verb=ListRecords i steg 2. Då blir sidene mykje mindre, og framgangsmåten er den same.