Community på Sveriges dataportal
API-användning: Hämta alla dataset kopplade till en specifik organisation
-
Hej, jag har haft lite svårigheter med att förstå hur man använder API:et på dataportalen. Jag har läst igenom dokumentationen och granskat swagger för EntryStore, men jag skulle uppskatta om det fanns fler praktiska exempel. Speciellt är jag intresserad av hur man kan utföra funktioner som filtrering efter specifika organisationer eller ämnen, likt det som är möjligt via dataportalens hemsida.
Till exempel, hur går man tillväga för att få fram alla dataset för en given organisation? När jag ser på svaret från ett anrop till: https://admin.dataportal.se/charts/orgData.json, så verkar URI för SCB vara: http://id.kb.se/organisations/SE2021000837. Men när jag använder denna URI enligt instruktionerna i dokumentationen:
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.), kom ihåg att först escapa ':' och sedan urlenkoda.
vilket resulterar i: https://admin.dataportal.se/store/search?type=solr&query=public:true+AND+(resource:http%253A%2F%2Fdataportal.se%2Forganisation%2FSE2220000315), får jag inga träffar.
Är idén kanske att man ska använda en sökning liknande denna och lägga till ett filter för specifika organisationer?
https://admin.dataportal.se/store/search?type=solr&query=rdfType:http\%3A%2F%2Fwww.w3.org%2Fns%2Fdcat%23Dataset+AND+public:true&limit=10&offset=0&sort=modified+descTacksam för alla svar och hjälp!
-
"vilket resulterar i: https://admin.dataportal.se/store/search?type=solr&query=public:true+AND+(resource:http%253A%2F%2Fdataportal.se%2Forganisation%2FSE2220000315), får jag inga träffar."
Här verkar du ha använt ett annat organisationsnummer. Används SCB organisationsnummer får du metadata om organisationen:
https://admin.dataportal.se/store/search?type=solr&query=public:true+AND+(resource:http%5C%3A%2F%2Fid.kb.se%2Forganisations%2FSE2021000837)
"Är idén kanske att man ska använda en sökning liknande denna och lägga till ett filter för specifika organisationer?
https://admin.dataportal.se/store/search?type=solr&query=rdfType:http%3A%2F%2Fwww.w3.org%2Fns%2Fdcat%23Dataset+AND+public:true&limit=10&offset=0&sort=modified+desc"Det funkar, men då skulle du behöva paginera igenom alla 17368 datamänder för att filtrera ut de datamängder som har SCB som utgivare. Det går istället att begränsa sökningen direkt för att enbart få dessa datamängder genom:
https://admin.dataportal.se/store/search?type=solr&query=(rdfType:http%5C%3A%2F%2Fwww.w3.org%2Fns%2Fdcat%23Dataset)+AND+public:true+AND+(metadata.predicate.uri.9259d4c1:http%5C%3A%2F%2Fid.kb.se%2Forganisations%2FSE2021000837)&offset=0
Observera att du fortfarande behöver paginera för att få alla 4650 datamängderna, då endast 50 st returneras per default. Du paginerar via offset parametern.
Jag lade till facetten metadata.predicate.uri.<md5> för att söka datamängdens utgivare. I det här fallet är predikatet 'http://purl.org/dc/terms/publisher', men en behöver skapa MD5 hash (och trunkera till 8 chars pga begränsningar i Solr). 'http://purl.org/dc/terms/publisher' blir då 9259d4c1. För mer info om indexeringen som sker via Solr, se: https://entrystore.org/kb/search/ . Där finns också mer info om alla möjliga sätt att söka mot lagringslösningen för admin.dataportal.se