Konsten att bläddra bland fem miljoner bilder

Sverige

Appen Platsminnen i bruk vid Löjtnantsgården i Stockholm. Foto: Viktor Lindbäck.

 

När arkeologen och fotografen Viktor Lindbäck fick i uppdrag att göra en hembygdsbok för det lilla samhället Gyljen en bit utanför Överkalix, ledde det till oväntade följder. Idag är han projektledare för appen Platsminnen som är en digital minneslåda för personer med demensdiagnos.

I arbetet med hembygdsboken fick Viktor Lindbäck ett stort antal gamla fotografier i sin hand. I bästa fall hade de någon anteckning på baksidan, noteringar om vem och var. Men många av bilderna saknade information, varför Viktor fick uppsöka det närliggande äldreboendet i Överkalix för att med hjälp av de äldre fylla i det som saknades.

Han upptäckte då att de vårdtagare med demensdiagnos som annars var omöjliga att kommunicera med, blev helt annorlunda när de fick titta på bilderna.
– En människa som man knappt kan prata med, och inte får ögonkontakt med, kan plötsligt vara helt glasklar när hon ser ett äldre foto. Personen blir helt närvarande och kommunicerbar, och börjar berätta om händelser och människor kanske ända tillbaka till trettiotalet.

Viktor Lindbäck, projektledare för Platsminnen. Foto: Staffan Cederborg.

 

Fem olika bildkällor
Appen, som är en del av projektet Platsminnen, är resultatet av dessa erfarenheter. Viktor Lindbäck ville skapa en sökbar bildbank som kunde hämta bilder kopplade till platser, men också till intressen eller yrken. Han tog kontakt med OnSpotStory som är ett företag som utvecklar appar med fokus på kulturarvet. Efter två års arbete kan appen Platsminnen skörda bilder från fem bildkällor: Europeana collections, Stockholmskällan, det finska Finna, samt Riksantikvarieämbetets två databaser K-samsök och Platsr.

I dagsläget har Platsminnen fem miljoner bilder att bläddra i. Mängden spelar inte någon större roll vid en sökning. En sökmotor med hög prestanda kan utan svårighet bläddra igenom betydligt större datamängder än så utan problem.

De bildkällor som Platsminnen använder sig av är fria att ansluta till. Alltså kan vem som helst bygga en app eller en webbsida som hämtar material från dessa kulturarvssamlingar. Den tekniska beskrivningen som följer nedan är inte någon standardlösning för alla de öppna datakällor som finns på internet. Den bygger allmänt på hur applikationen Platsminnen anropar de bildkällor som nämnts ovan. Principen är dock densamma.

Prata med API:et
Det man först bör göra är att noga läsa och förstå hur det så kallade API:et för varje enskild bildkälla fungerar. API är en akronym för Application Programming Interface och är kortfattat en uppsättning funktioner som ligger på en webbserver. Detta program pratar med en annan mjukvara, i det här fallet en datakälla, och beroende på vad API:et tillåter och vilka kommandon användaren skickar in, kan API:et skicka kommandon till en databas att hämta, uppdatera eller ta bort data.

API:et är också ett regelverk som reglerar hur anrop ska se ut för att önskad respons ska uppnås. Anropet sker via http och svaret kommer i XML- eller JSON-format (JavaScript Object Notation) som utvecklaren kan hämta datat ur. Som ett enkelt exempel, med en enda datakälla, kan vi tänka oss en användare som i klartext vill göra följande:

”Visa alla bilder som har med traktor att göra”

API:et förstår inte klartext utan vill ha kommandon som kan omvandlas till en databasfråga. Användaren skriver in sökordet "traktor” i sökfältet och klickar på sökknappen. Formuläret skapar då ett http-anrop med en söksträng som innehåller nyckelordet "traktor”, och som adresserar API:et.

Resultatet i Platsminnen efter en sökning på ordet "Traktor". När användaren sedan klickar på en bild kommer mer information om bilden fram samt en möjlighet att gilla-markera den och att lägga den till en egen samling som man kan återvända till senare.

 

Förutbestämda parametrar
Tillsammans med sökordet skickas också förutbestämda parametrar med. Uppgifter om metod (i exemplet med K-samsök nedan, "search"), hur många svar per sida som önskas (10), samt API-nyckeln som kan identifiera vilken applikation som anropar, i det här fallet "test". Dessa förutbestämda parametrar anges som formulärfält av typen "hidden”.

Ta en titt på nedanstående väldigt förenklade, men fungerande, exempel:

http://kulturarvsdata.se/ksamsok/api?method=search&hitsPerPage=10&x-api=test&query=traktor

Som du ser ligger de medskickade parametrarna i själva URL:en. När man använder get-metoden i stället för post-metoden i ett formulär, läggs alla formulärfält som parametrar i URL:en enligt modellen namn=värde där namnet är formulärfältets namn och värdet det användaren skrivit in. Frågetecknet anger var adressen slutar och parametrarna börjar. Ampersandtecknet (&) skiljer de olika parametrarna från varandra.

Ropar på en lagrad procedur
När ditt anrop når API:et, aktiveras den utvalda metoden (search) som ropar på en lagrad procedur i en databas som utför den inskickade dataoperationen. På så sätt fungerar API:et inte bara som ett hanterbart gränssnitt mellan appen och datat, utan också som grindvakt för eventuell skadlig kod.

När du klickar på länken ovan får du upp svaret från databasen, upptaggat i en XML-fil som du genom egen kodning kan hämta dina data från. XML-filen är ett slags förenklad datauppställning där fälten är ordnade hierarkiskt så att de är lätta att läsa och hämta data från. Du kan också använda dig av en stilmall för att få ett snyggare utseende.

XML-filen kan se förvirrande ut för en oinvigd, men datat är snyggt och hierarkiskt ordnat så att det både ska vara lätt att läsa och hämta data ur filen.

 

Fem resultat måste sammanföras
Men vi lämnar det som händer bakom API:et åt sitt öde, och koncentrerar oss på det vi på andra sidan behöver göra för att ansluta till datakällorna. Eftersom Platsminnen skördar material från fem olika källor måste resultatet sammanföras, sorteras och viktas för att åstadkomma en relevant och överskådlig presentation.

Inget av de fem API:erna ser ju likadana ut och varje datakälla behöver därför anropas enskilt. Lösningen är att på den egna servern, i det här fallet Platsminnens server, bygga ett API som kommunicerar med bildkällornas API:er.

I Platsminnens egen databas sparas resultat från hämtningarna för att snabbare kunna returnera resultaten till användaren. Lucas Fredsson (bilden, foto: Dennis Fredsson), utvecklare på OnSpotStory, berättar:
– När en användare gör en sökning i Platsminnen tar vårt egna API söktexten och gör samma sökning i samtliga källor och sparar endast nya resultat samt ändringar i de befintliga resultaten till vår egna databas. 

Med fem bildkällor måste det väl bli en del dubbletter?
– De allra flesta dubbletterna har samma URL även om de kommer från olika källor, säger Lucas Fredsson, och fortsätter:
– När vårt API analyserar resultaten så tar det informationen från dubbletten och kompletterar informationen i vår databas ifall något saknas. Om det finns bättre data i dubbletten kan den ersätta befintlig data i vår databas.

Tydligt syfte
Appen Platsminnen, som än så länge endast finns tillgänglig på iPad, är ett exempel på hur det digitala kulturarvet kan användas i ett väldigt tydligt syfte. Vilka användningsområden som väntar runt hörnet får framtiden utvisa. Antalet öppna datakällor växer och det finns möjligheter att kombinera olika källor till oväntade applikationer.

På webbsidan Svenska API-katalogen finns fler än 300 API:er och över 30 applikationer som använder sig av dessa. Här finns massor att hämta för den som vill gräva djupare, både inspiration och hårda fakta.

Anlita en programmerare
Att skriva kod, i det här fallet ett eget API som i sin tur kommunicerar med fem andra API:n, görs inte i en handvändning. Därtill kommer arbetet med gränssnittet mot slutanvändaren. En god idé, om man själv inte är en driven programmerare, är att anlita någon som kan koda och hantera data på ett relevant och ändamålsenligt sätt.

Appen Platsminnen har bidragit till minskad medicinering av personer med demensdiagnos. Här en bild från Sandelska huset i Uppsala. Foto: Viktor Lindbäck.

 

Staffan Cederborg
Redaktör

Uppdaterad: 26 Apr 2017 15:38 Print