Min Ledamot - teknisk information
Här kommer en uppföljning på min tidigare postning om webbtjänsten Min Ledamot, med lite mer teknisk information om vad som ligger bakom tjänsten och vilken data jag har samlat in för den. Som tidigare nämnts så kommer mycket av informationen från Riksdagens syndikeringstjänst, och de ska ha sin beskärda del beröm för att ha gjort information tillgänglig på ett sätt som är automatiskt behandlingsbart (jag ogillar att säga det, men automatisk databehandling (ADB), är ett äldre uttryck som faktiskt är fullt relevant för det här och mycket annat vi gör idag, kanske mer så än under de senaste tio åren).
Ingången för syndikeringstjänsten är dokumentlistan som ger ett sökformulär där man kan söka ut specifik information. Den här bilden från Riksdagen förklarar mer i detalj hur informationen hänger ihop och vad som finns tillgängligt i syndikeringstjänsten, och är till stor hjälp när man ska hantera den och bygga tjänster på den:

Om inte annat anges så är informationen i dessa databaser oftast kodat med iso-8859-1. En del information är dock lagrad med utf8, och de här förekommer dessvärre om varandra, och det finns ingen i XML-filerna som man erhåller från tjänsten angiven kodning. Jag misstänker att det här har sin bakgrund i var informationen kommer ifrån, speciellt när det gäller ledamöter som har suttit länge i Riksdagen eller historisk information om ledamöter som troligen kommer från äldre databaser.
För Min Ledamot så har jag varit intresserad av utskottsförslagen, betänkandena. Med väldigt få undantag så fattar kammaren i Riksdagen beslut som överenstämmer med utskottens beredning, och voteringarna är som synes av figuren ovan även kopplade datamässigt till individuella betänkanden. För att få ut relevant information så hämtar jag således först via dokumentlistan en grundläggande lista över alla betänkanden. Här har jag fokuserat på att få ut id-nummret för varje enskilt betänkande. Dessa id-nummer kan exempelvis vara GX01SkU44, där SkU anger att det här är ett betänkande från Skatteutskottet och 44 är dess löpnummer i ordningen. Just GX01SkU44 är ett informationsutbytesavtal med Anguilla.
En varning måste här utfärdas: id-nummer kan även innehålla svenska tecken, som i fallet GV01FöU15, den förnyade behandlingen av lagen om signalspaning som kommer från Försvarsutskottet med löpnummer 15. Det gäller att hålla tungan rätt i mun här, för när vi ska gå vidare och hämta information om varje utskottsförslag individuellt så gör vi det via en URL som innehåller id-nummret. Denna URL måste vara i iso-8859-1 och kan se ut såhär:
http://data.riksdagen.se/utskottsforslag/GV01FöU15
När vi väl kommit till utskottsförslaget så kan vi i detta se ett antal beslutspunkter, numrerade från 1 och uppåt. En del av dessa innehåller voteringar, andra inte. I taggen beslutstyp kan vi se om beslut fattades med acklamation eller röstning. Vilket beslut som fattades ser vi i förslag-taggen, och här finns även en del annan information som dock inte för Min Ledamots syfte är intressant, bland annat om det ligger motförslag (dessa inkluderas precis som alla förslag i Min Ledamot och att något är ett motförslag till ett annat tas ingen hänsyn till).
Endast i de fallen det sker en röstning så finns det i votering_id ett id-nummer till voteringen. Detta id-nummer innehåller dock krullparenteser, {}, runt sig, som måste tas bort innan vi använder det. Det finns även en sammanfattning av voteringen i html-form, men denna används inte heller av Min Ledamot, men kan vara aktuell i andra tjänster för att få en överblick på voteringen utan att gå in på detaljer. Voteringen kring utskottsförslag GV01FöU15, punkt 1, återfinns på följande URL:
http://data.riksdagen.se/votering/0E3EEB46-2D55-4810-A44C-58DD7F4E9606
Här finns varje person i omröstningen inklusive information om hur de röstat. Den här vyn innehåller även en hel del redundant information, något som är återkommande för syndikeringstjänsten. Exempelvis återkommer den individuella ledamotens namn inte mindre än två gånger i varje votering, likväl som ledamotens parti och valkrets. Det kan till exempel se ut såhär:
<votering>
<votering_id>0E3EEB46-2D55-4810-A44C-58DD7F4E9606</votering_id>
<punkt>1</punkt>
<namn>Alice Åström</namn>
<intressent_id>042839539117</intressent_id>
<parti>v</parti>
<valkrets>Jönköpings län</valkrets>
<valkretsnummer>6</valkretsnummer>
<iort/>
<rost>Nej</rost>
<avser>sakfrågan</avser>
<votering>huvud</votering>
<banknummer>181</banknummer>
<fornamn>Alice</fornamn>
<efternamn>Åström</efternamn>
<kon>kvinna</kon>
<fodd>1959</fodd>
<rm>2007/08</rm>
<beteckning>FöU15</beteckning>
</votering>
Det intressanta här är intressent_id som anger ledamotens individuella id-nummer i Riksdagens databas. Med den informationen kan vi senare hitta personens namn, parti, valkrets och annat intressant, och behöver inte ha med oss detta från den här vyn. Hur ledamoten röstade anges i rost, och kan vara ett av Ja, Nej, Avstår eller Frånvarande. Detta kodas som text.
Den här informationen skapade jag ett program i Perl som extraherar och lägger in i en databas som är enklare sökbar och inte innehåller redundant information. Jag utgår ifrån dokumentlistan, går vidare till utskottsförslagen och därefter till voteringarna. I skrivandets stund finns det i min databas 1369 voteringar från 2006 och framåt. Det här är en bråkdel av alla beslut som fattas och en stor del av dem sker som tidigare nämnts med acklamation.
En vy har vi inte nämnt än dock: personvyn. Den här får man genom följande URL:
http://data.riksdagen.se/person/048970816012
Här är 048970816012 id-nummret för en individuell ledamot. I skrivande stund är just denna vy ur funktion, men jag hoppas att den återkommer inom kort. Kortfattat så innehåller den vyn namn (tilltalsnamn och efternamn), parti, bostadsort, telefonnummer (till riksdagstelefonen), epost och valkrets, information som jag hämtar ut och lägger lokalt i min databas för Min Ledamot. Här kommer dock nästa varning: valkretsen lagras i textformat här. I voteringsexemplet ovan synes även ett valkretsnummer. Detta återfinns dock inte på den individuella personen, så här måste man göra en fulltextmatchning för att få något vettigt, vilket försvåras av tidigare nämnda problem med blandad utf8 och iso-8859-1-kodning, samt en del historiska ledamöter som inte har någon valkrets angiven.
Allt som allt så måste jag dock ge Riksdagen en eloge för att göra den här informationen tillgänglig. Informationen som publiceras är idag långt från perfekt och det krävs nog en del manglande för att få den i ett format som är lämpligt, och jag skulle nog titta lite närmare på datastrukturen och försöka undvika att information återfinns på flera olika ställen där den inte hör hemma.
Det här får bli del 1. I nästa postning kommer jag att skriva lite närmare om postnummer, Valmyndigheten och GIS.









