API för (admin.)dataportal.se¶
All information om datamängder som syns på dataportal.se finns tillgängliga via API:et på admin.dataportal.se. Det innebär att om man har andra behov som inte täcks av vad som finns på dataportal.se eller api.dataportal.se så kan man ladda ner informationen och vidareutnyttja utifrån eget tycke.
Admin.dataportal.se använder sig av EntryScape Registry och lagringslösningen EntryStore för att hantera metadata. Generell dokumentation om det underliggande API:et finner du här:
- Swagger för hela API:et https://entrystore.org/api/
- Samt mer detaljerad information om hur sökning fungerar https://entrystore.org/kb/search/
Utöver denna generella dokumentation följer nedan mer specifik och förenklad dokumentation om hur API:et används på admin.dataportal.se.
Uppdateringsfrekvens¶
Varje natt försöker registrera uppdatera infomrationen om datamängderna genom att skörda om från alla registrerade organisationer. Det innebär att informationen kan som mest vara 24 timmar gammal förutsatt att skördningen från källan fungerar som den ska.
Nattlig dump¶
Varje natt efter att informationen om datamängder uppdaterats skapas en dump där all information samlats i formatet RDF/XML enligt den svenska profilen DCAT-AP-SE2.0.0:
Datamängdssök¶
Datamängderna beskrivs med hjälp av DCAT-AP-SE2.0.0 och formatet som används är RDF. API:et tillåter anrop för att få ut enskilda metadata om enskilda datamängder såväl som ett sökAPI där man kan filtrera fram vilka datamängder man vill ha i en lista. Man kan naturligtvis också välja att inte ha något filter och få en paginerad lista med alla datamängder, följande API anrop gör just det:
Här används offset
för paginering, parametern limit
kan ökas till max 100 för att få fler svar i ett anrop. Parametern rdfType
indikerar vilken typ av entiteter vi söker efter, i detta fall är det datamängder då typen är http://www.w3.org/ns/dcat#Dataset
, observera att först har tecknet :
escapats då det har en särskild betydelse i frågespråket som används (Solr) och därefter har uttrycket urlenkodats.
Svaren man får tillbaka är en JSON struktur som ser ut som:
{
"offset": 0,
"limit": 10,
"results": 7038,
"resource" {
"children": [
{
"contextId": "574",
"entryId": "2700",
"metadata": {
// Dataset metadata
},
...
},
...
]
}
}
Datamängdernas metadata uttrycks i formatet rdf/json.
Om man har koll på vilken identitet en datamängd har, dvs dess URI kan man göra följande anrop för att nå dess metadata:
https://admin.dataportal.se/store/search?type=solr&query=public:true+AND+(resource:URI)
Där du ersätter URI med datamängdens adress (eller någon annan entitet som en utgivare, kontakt, distribution osv.), glöm inte att först escapa :
och sen urlenkoda.
Notera att i sökresultat får man bara med metadata för precis det man söker efter t.ex. datamängdens egen metadata. Man får inte med refererade entiteter, t.ex. distributioner, utgivare, kontakter osv. Dessa är bara angivna via deras identifierare (URI:er). Detta skiljer sig från dumpen ovan där alla relaterade entiteter finns med.
Det går att be om att få ut all metadata för en viss datamängd om man känner till dess identitet i API:et. I resultatlistan anges varje träffs identitet via en kombinationen avcontextId
och entryId
. Med hjälp av dessa id:n kan vi få ut all metadata för en datamängd:
https://admin.dataportal.se/store/{contextId}/entry/{entryId}?recursive=dcat
Du kan välja mellan lite olika format, antingen via content negotiation eller genom att sätta den explicita format parametern &format=text/turtle
. Om man inte anger ett format får man application/rdf+xml
.
Skördningsstatus¶
Den som är nyfiken över hur många datamängder det finns per organisation kan göra följande anrop:
För att få information om exakt vilken organisation som skördades senaste dygnet och hur många av dessa datamängder som kommer från offentlig sektor kan man göra följande anrop:
I det sistnämnda anropet kan man ändra limit och se historiska data flera år tillbaka. Formatet i det svaret kräver dock lite mer bearbetning då organisationsnamn inte står i klartext utan istället anges indirekt via ett contextId
som motsvarar en skördad datakatalog. Man kan se contextId
insprängt i en speciell property, som i följande exempel där contextId är 170
, värdet som pekas ut är antalet datamängder som skördats för den organisationen:
http://entrystore.org/terms/statistics#datasets_in_context_170: 2
För att förstå resultatet bättre är det rekommenderat att man kombinerar med följande anrop som ger alla senaste skördningsrapporter per organisation. Utöver detaljerad skördningsstatus ser man nämligen också kopplingen mellan contextId
och namn på organisationen (via propertyn dcterms:title
):
Om man bara vill få ut skördninstrapporter för offentliga organisationer kan man lägga till filtret psi
: