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:
| Uttrekk | Innhald | ID |
|---|---|---|
| Transportportal Datasets | Datasett i Transportportalen | d097da12-e13b-4696-be30-4165b45a8374 |
| EU-OpenData | Opne datasett som blir hausta av dataportalen til EU | ea654341-b155-423f-97e6-e64946187d34 |
| EU-Non-OpenData | Verna data (datasett som ikkje er opne) som blir hausta av dataportalen til EU | 3658f833-1ddf-4efc-85a0-844b53f64f3a |
| All concepts | Alle omgrep, oppdaterte kvar 24. time | 834ebf4d-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=ListIdentifiersi staden forverb=ListRecordsi steg 2. Då blir sidene mykje mindre, og framgangsmåten er den same.