Taggad: Tillämpningar

juli != semester

Är juli en semestermånad? Inte för alla. Niklas Eklund på Mogul jobbade på ordentligt och jag hjälpte till på ett hörn. Det blidde en del nyheter i K-samsök som kommer att synas senare i höst. Det viktigaste är hantering av koordinater enligt följande:

Tillämpningar kan söka efter alla objekt inom en rektangel med t ex:
boundingBox=/RT90 ”1628000 6585000 1628490.368 6585865.547”
dvs två koordinatpar som definierar rektangelns motstående hörn

Många koordinatsystem stöds (mha geotools) och då anges de med /EPSG:xxxx. Men det finns också konstanter för vissa vanliga system (”RT90”, ”SWEREF99”, ”WGS84”). Default om man inte anger nåt koordinatsystem med ”/”-modifieraren är SWEREF 99 TM (3006).

Som grädde på moset har vi också infört pointDistance:
pointDistance =”675000 6555000 30″ (punkt + avstånd i km)
Man anger alltså en punkt och en radie i km och får då träff på alla objekt inom den cirkeln.

pointDistance-sökningen använder dock en del minne då den läser upp en massa koordinatvärden för att kunna filtrera på avstånd – det är inga jättemängder men vi får testa hur krävande det blir.

Det är inte bara tillämpningarna som kan använda de olika koordinatsystemen, naturligtvis kan producenterna också göra det. Vi transformerar mellan koordinatsystemen i centralnoden efter behov.

>>Börje Lewin, teknisk projektledare

Gästblogg: K-samsök på 17 rader kod

bashskript_ksamsok

Eftersom K-samsök har ett gränssnitt  mot andra program (ett api) tillgängligt via http är man inte begränsad till att personligen besöka en webbsida för att hämta information därifrån. I stället kan man låta program kommunicera direkt med databasen. Men det behöver inte vara ett stort eller komplicerat program, ett snabbt i hopslängt bashskript duger gott.

Bash är den kommandotolk som används i de flesta GNU/Linuxdistributioner, i Mac OS X och den finns till och med portad till Windows. Bash har ett inbyggt skriptspråk som bland annat kan användas till att ”klistra i hop” olika andra program så att man kan göra nästan vad som helst med resultatet.

K-samsöks api fungerar som de flesta andra och är därför ganska enkelt att arbeta emot, principen är den samma oavsett om man t.ex. vill göra sökningar mot Twitter, Wikipedia eller K-samsök eftersom de alla kommunicerar på samma sätt. På grund av detta behöver man inte heller skriva särskilt mycket kod, det går bra att ta hjälp av redan befintliga program och funktioner, vilket ju är smidigt.

Med hjälp av de två fria programmen cURL och xmlstarlet kan man med några få rader kod komma åt K-samsöks api direkt från den egna kommandotolken.

Så här ser koden ut:

#!/bin/bash

function query()
{
echo ”Which is your query?”
read query
echo ”Number of results (500 max)?”
read number
curl -g ”http://kulturarvsdata.se/ksamsok/sru?operation=searchRetrieve&version=1.1&maximumRecords=$number&api=Test&query=text=$query”  -s \
| xmlstarlet sel -N pres=”http://kulturarvsdata.se/presentation#” -N srw=”http://www.loc.gov/zing/srw/” \
–template –match ”srw:searchRetrieveResponse/srw:records/srw:record/srw:recordData/pres:item” \
–sort A:T:- ”pres:organization” -v ”concat(pres:organization,’            ’,pres:id,’            ’,pres:type,’            ’,pres:entityUri)” –nl \
| sed -e ’s|/object/|/object/html/|g’ -e ’s|/media/|/media/html/|g’ -e ’s|/fmi/|/fmi/html/|g’ \
| grep -v ’^$’
}

query

Koden definierar en funktion som först frågar användaren vad denne vill söka efter och sedan hur många träffar man maximalt vill ha (det verkar finnas ett tak på 500 träffar när man söker mot api:t). Därefter använder cURL de svar som användaren givit till att skicka en förfrågan till api:t. Som svar kommer då en xml-fil från K-samsök som innehåller de träffar sökningen givit.

Med hjälp av programmet xmlstarlet kan man sedan plocka ut det man är intresserad av från xml-filen. I det här exemplet visas den institution som registrerat posten, id-  numret för posten, vilken typ av post det är och därefter URI:n till posten.

Slutligen kommer lite överkurs, länken ändras så att den går till webbsidan i stället för xml-representationen med programmet sed och tomma rader tas bort med programmet grep.

Det här är ett typiskt exempel på unixfilosofin där man anser att det bästa är att ha små program som gör en sak (och den saken skall programmet göra riktigt bra), det är också vanligt att unixprogram kommunicerar med varandra via vanlig text på det här sättet.

Läs mer:
Bash – http://www.gnu.org/software/bash/
cURL – http://curl.haxx.se/
xmlstarlet – http://xmlstar.sourceforge.net/

>> Micke Nordin är arkeolog och internaut anställd vid Sörmlands museum.

Bidrag till K-samsök från studentgrupp

En grupp studenter vid Högskolan på Gotland har utvecklat ett API-skikt och en nedladdningsbar sökruta för K-samsök. API-skiktet innebär att man kan få en sorterad träffbild för sin sökning (observera parametern ”HUR” som gör jobbet). Det finns även en statistikfunktion. All kod är nedladdningsbar och finns för såväl Javamiljö som .NET.

Studenterna har jobbat 10 veckor i sin avslutande projektkurs på det tvååriga utbildningsprogrammet ”Avancerad webbprogrammering”. En mycket bra utbildning eftersom jag har dragit igång den själv för några år sedan:-)

Vår egen demo heter som bekant ”Loppan”. Studenterna kallar sin tillämpning ”Lusen”. Den finns här:

http://www.kulturarvsdata.se/demo/lusen/index.html

Hektisk vecka

Förra veckan var hektisk, först träffade jag arbetsgruppen i Stockholm på onsdagen för att sedan träffa tillämpningsutvecklare (Idevio) och delta i portalnätverksträffen i Göteborg på torsdagen.

Arbetsgruppen diskuterade bl a policy/ToU-dokument som ska tas fram för K-samsök som t ex berör vad man får och vad man inte får göra med informationen. Hittills har jag identifierat tre nivåer:

  • Informationsägare (t ex museer och arkiv)
  • Tillämpningsutvecklare
  • Användare

När jag pratar med inforamtionsägare så säger de ofta att info/bildmaterial är tillåtet att anväda så länge det inte används komersiellt. Vad är då kommersiellt? Gräver man lite i det hela så är det inte helt självklart. Det är en sak att ta material och sedan ta betalt för det… men om jag som tillämpningsutvecklare t ex bygger en tjänst som hämtar data via k-samsök och sedan paketerar/presenterar den på ett attraktivt sätt och tar betalt för detta, vad är det då? Materialet finns ju alltjämt tillgängligt hos informationsägaren och vad jag tar betalt för är egentligen själva presentationen utan att för den skull äga rätten till informationen. Är detta komersiellt bruk? Vad tycker du?

>>Johan Carlström

Gästblogg: Att söka i K-samsök från en annan applikation

För många museer, arkiv och bibliotek och leverantörer av samlingssystem för ABM-sektorn kan det vara av intresse att erbjuda integration mot K-samsöksindexet. Vi på Curalia har ju varit anlitade för att utveckla det centrala K-samsökindexet, dess API och Javanoden för skördning till K-samsök. Internt har vi samtidigt i vårt Projekt Wunderkammer tagit fram en verktygslåda för utveckling av kundanpassade samlingsystem och givetvis har vi då passat på att möjliggöra sökning i K-samsök från denna vertygslåda som det nu också finns ett demo av.

Rent tekniskt har vi valt den allra enklaste vägen att söka i K-samsök: Fritextsökning via SRU mot hela K-samsökindexet med svar i XML-format. Wunderkammer i sig får också svar från sin egen lokala databas så K-samsökXML:en blev bara en lite annorlunda variant att styla om till det HTML-svar som användaren ser. Att pusha ett K-samsöksvar som (Media-)RSS för att titta på resultatet fick vi ”automagiskt” eftersom Wunderkammer skapar RSS för alla söksvar.

Vidare har vi valt att inte visa upp K-samsökobjektens detaljdata i Wunderkammer utan om användaren klickar på ett objekt i träfflistan så kommer de till dess objektpresentation i sitt ursprungssystem. Det skulle gå att från K-samsök begära ut ett objekts RDF-data och styla det till ett HTML-svar men vi ville få upp en K-samsökning på banan snabbt så det har vi prioriterat ner i dagsläget. Givetvis går det också att sätta en Javanod som skördar data från en Wunderkammerinstans till K-samsök men Wunderkammers nuvarande testdata hör förstås inte hemma i K-samsökindexet!

Så, har vi stött på några problem? Har allt gått som på räls? Huvudsakligen ja, men ett litet detaljproblem är att Västarvet har tolkat K-samsökspecarna för mappning av data på ett sätt och Historiska museet och RAÄ på ett annat. Det innebär att i Wunderkammer mallstyrda presentation visas objektens klassifikation olika – helt enkelt för att de har mappats olika. Andra tillämpningsutvecklare skulle stöta på samma problem så här är det viktigt att K-samsöksprojektet förtydligar sina specar och ensar mappningen.

>>David Haskiya är verksamhetsutvecklare och projektledare på Curalia.

Gästblogg: Fornlämningar i mobilen

serie

Nu kan alla få information om svenska fornlämningar i mobilen. Vi på Idevio har en mobil gratis karttillämpning som heter Locago där har vi lagt till ett kartskikt för att söka efter fornlämningar. Sökningarna hämtar information från K-samsök och FMIS och presenterar resultatet som symboler på en kartbild. Till varje symbol finns mer information och i vissa fall en bild. Ladda ner i telefonen från get.locago.com eller prova web-demon. I telefonen lägger man till fornminnesskiktet genom att i menyn välja ”Lägg till Lager” -> ”Nyaste” och därefter väljer ”Fornminnen”.

Sökningarna hämtar information direkt från K-samsök och FMIS via de webservices som finns tillgängliga. Tillsvidare används FMIS-tjänsten för att söka efter vad som finns inom aktuellt kartområde. Sedan används K-samsök för att hämta mer information om varje objekt. När K-samsök får möjligheten att söka på koordinater kan vi gå direkt på denna tjänst och få med fler möjliga svar.

Vi som sysslar med kartor tycker naturligtvis att koordinaterna är viktiga och hoppas på att så många objekt som möjligt blir koordinatsatta samt att det går att söka på dessa. Självklart önskar vi mer text och bilder för de objekt som saknar detta. Det går smidigt att komma åt informationen eftersom den är XML-baserad. Vi använder här jsp för att omforma frågan som kommer från Locago till en fråga på FMIS eller K-samsök och för att omforma svaret till Locagos XML-format. Sökfrågan går till KML-tjänsten i FMIS vilket är en liten omväg vi tvingats till för att kunna ställa geografiska frågor. Svaret där är inte lika strukturerat utan det mesta ligger i ett beskrivnings-element utformat för Google Earth. Då vi inte får tillräckligt många träffar på ett område gör vi ytterligare försök med större områden.

Största delen av jobbet att få in fornlämningarna i tjänsten var att transformera koordinater mellan RT90 och WGS84 samt att tolka KML-svaret. Annars handlade det mest om att förstå vilka fält som var intressanta i vår tillämpning. Det är inte självklart vilka element som skall utnyttjas och detta är säkert något vi kan fintrimma allteftersom.

>>Johan Persson, CTO på Idevio