Hej!
På senare tid har det uppkommit bättre förutsättningar för att nyttja Öppna Data:
- Dataportal - för att hitta data
- Specifikationer - för att ensa datamodellerna som beskriver samma sak
- APIer - för maskininläsning av data
Av den anledningen var jag intresserad av att titta på hur upplevelsen för en datakonsument ser ut idag. Det vill säga, hur enkelt är det för en part att integrera och konsumera datat; vilka eventuella hinder och svårigheter möter den utvecklare som avser att bygga en samhällsnyttig tjänst baserat på Öppna Data?
Studien är inte akademisk på något sätt utan enbart en enklare analys.
För studien behövdes ett lämpligt användningsfall och valet föll på datamängden Badplatser då:
- Den har en öppen specifikation
- Ett flertal dataproducenter har valt att publicera data enligt specifikationen
- Ett relativt stort antal olika publiceringar finns att finna via Dataportal.se
- Många av datakällorna är APIer som publicerar datat enligt JSON
I och med detta finns alltså förutsättningar för att hitta och samla in enhetligt data.
I Dataportalen hittade jag 20 publiceringar av Badplatser som kan hämtas via API på JSON-format och som enligt metadatat uppfyller specifikationen https://www.dataportal.se/specifications/badplatser/1.0
Nedan presenteras resultatet av integration mot dessa ovan nämnda resurser.
Den initiala upplevelsen var minst sagt nedslående då ingen av resurserna tillhandahöll data enligt utlovad specifikation.
Majoriteten av API-resurserna är baserade på något som benämns RowStore och verkar vara en del av produkten EntryScape från företaget MetaSolutions AB. All JSON-data från dessa resurser returneras som helt otypat data i konflikt med specifikationen.
Förklaring:
I specifikationen har varje datafält en typ definierad; t.ex. att ett namn är en sträng, en koordinat är ett decimaltal, ett tillstånd som är sant eller falskt är en boolean (true|false) o.s.v.
{
"place_id": "1477-Hattarevik", //sträng
"latitude": 58.787, //decimaltal
"toilet": true //boolean
}
Med otypat data så returneras samtliga datafält som godtyckliga strängar, ex:
{
"place_id": "1477-Hattarevik", //sträng
"latitude": "58.787", //sträng
"toilet": "true", //sträng
}
Det är fortfarande läsbart för en människa men JSON-formaterat data är avsett för maskin och nu är datat fullkomligt oanvändbart eftersom samtliga datafält bara innehåller fritexter.
Det vore ju dock tråkigt att avbryta denna analys så här tidigt på grund av APIernas begränsningar. Därför bearbetade jag allt data och konverterade typerna för alla datafält enligt definitionerna i specifikationen för att komma vidare. Härmed kan vi nu titta på datakvaliteten för varje enskild datapost.
Av 156 insamlade och typkonverterade dataposter (badplatser) så visade det sig nu att endast 31 stycken av dessa innehöll korrekt data.
Med andra ord så är det 125 av 156 dataposter vars data inte kan tolkas, det kan t.ex. vara:
- Icke kompletta dataposter som förmodligen inte ens avser att beskriva en faktisk badplats, det är bara skräp.
- Datafält innehåller text-värden som inte går att typkonvertera till aktuell typ.
- Dataposter innehåller datafält med felaktiga namn, d.v.s. som inte matchar specifikationens obligatoriska datafält.
- O.s.v.
Även detta resultat är nedslående, att merparten av allt data har så dålig kvalitet att det inte alls är användbart.
För att sammanfatta denna analys och svara på dess frågeställning:
- Att hitta alla datakällor var relativt enkelt tack vare Dataportal.se. Det hade dock varit önskvärt om det gick att filtrera dataset på metadatafältet “Uppfyller” (ConformsTo) (om det redan går så hittade jag i alla fall inget stöd för det i sökfunktionen och inte heller någon dokumentation om hur det eventuellt kan göras).
- Att integrera mot ett stort antal olika datakällor är förstås något krångligt och tidsödande, men görbart.
- Att datakällorna inte returnerar korrekt formaterat data är katastrofalt ur ett integrationsperspektiv och förtar hela syftet med ett API.
- Att dataposterna har så extremt dålig datakvalitet gör att användningen av detta Öppna Data är omöjlig.
Upplevelsen för mig som integratör mot dessa resurser var onekligen mycket dålig. Hindren var många och ofta oöverstigliga. Möjligheterna att samla in enhetligt data för vidare förädling och eventuell utveckling av nya tjänster är dessvärre obefintliga.
Metadatakatalog och specifikationer i alla ära, men med undermåliga gränssnitt och ingen kontroll på datakvalitet så innebär dessa publiceringar av Öppna Data tyvärr enbart kostnader och tillför inget som helst, eller högst begränsat, faktiskt värde.
Med vänlig hälsning, Magnus