måndag 27 oktober 2014

Utskottsförslag saknas i Riksdagens SQL-data

Hur hänger datan ihop?

Vid en votering i Riksdagens kammare röstas om en förslagspunkt ur ett betänkande från ett utskott. I den föreslagna databasstrukturen från Riksdagen (som vi korrigerat enligt tidigare inlägg) motsvarar en sådan punkt en rad i tabellen dokutskottsforslag. Denna rad innehåller exempelvis förslagets titel, vad utskottet föreslagit (avslag/bifall) samt huruvida beslutet tagits genom röstning eller acklamation.

Varje votering identifieras unikt av en sträng betecknad votering_id och alla förslagspunkter som beslutats genom omröstning (och inte acklamation) ska därför ha ett votering_id som kopplar till rätt röstningsdata i tabellen votering.


Vad är problemet?

Vid en snabb sökning av voteringsdata och förslagspunkter från riksmötet 2013/14 (nedladdade här och här) visar det sig att data om förslagspunkten saknas för många voteringar. Om vi räknar ser vi att antalet voteringar (antalet unika votering_id) är mycket större än antalet förslagspunkter beslutade med röstning:

SELECT COUNT(*) FROM dokutskottsforslag WHERE beslutstyp!='acklamation' AND rm='2013/14'
-> 68

SELECT COUNT(DISTINCT votering_id) FROM votering WHERE rm='2013/14'
-> 713

Motsvarande kopplingar går dock (åtminstone i vissa fall) att hitta på Riksdagens egen webbplats.

Exempel

Betänkande 2013/14:MJU21 "Livsmedelspolitik" som behandlats i Miljö- och jordbruksutskottet går enkelt att hitta på riksdagen.se, med inklusive information om alla 18 förslagspunkter och röstningsdata för de fyra punkter som beslutats genom votering. 

De fyra omröstningarna kan vi hitta i vår tabell votering genom att söka på riksmöte och beteckning. Tyvärr finns inga rader i tabellen dokutskottsforslag motsvarande 2013/14:MJU21, varken vid sökning på riksmöte/beteckning eller på votering_id. 

Slutsatsen blir alltså att data angående kopplade förslagspunkter och voteringar existerar, eftersom Riksdagen själva använder den, men att den saknas i SQL-exporten.

onsdag 22 oktober 2014

Länkar till bilder på riksdagsledamöter

Länkar till bilder på ledamöter går att hitta exempelvis genom att ladda ned ledamotsdatan i JSON-format:
http://data.riksdagen.se/dataset/person/person.json.zip
eller genom att använda sökfunktionen/APIet.

Tyvärr saknas information om bilder i SQL-versionen av datan. Det går dock att rekonstruera URLerna med hjälp av den unika sifferkod som identifierar varje ledamot i datan. Koden kallas i Riksdagens data för intressent_id. 

Bilderna kan hämtas genom att sätta in intressent-id för en specifik ledamot i:
http://data.riksdagen.se/filarkiv/bilder/ledamot/<intressent_id>_80.jpg 
(80 pixlar bred)
http://data.riksdagen.se/filarkiv/bilder/ledamot/<intressent_id>_192.jpg 
(192 pixlar)
http://data.riksdagen.se/filarkiv/bilder/ledamot/<intressent_id>_max.jpg 
(Maximal tillgänglig upplösning)

tisdag 21 oktober 2014

PostgreSQL databasschema för data.riksdagen

För tillfället är det databasschema som publiceras på http://data.riksdagen.se/Dokumentation/Databasmodell/ inte kompatibelt med de .sql-filer som publiceras på Riksdagens sida för öppna data.

Vi har gjort några smärre förändringar i schemat som gör att det går att skapa en PostgreSQL-databas där åtminstonde ledamöter och voteringar slinker in.

Riksdagen känner till och jobbar på att åtgärda felen men tills vidare kan man använda schemat på http://bror.einarsson.net/riksdagen/create_tables.sql.txt

Angående fel i data rörande kammaruppdrag

Vad är felet?

I filen person.sql från http://data.riksdagen.se/Data/Ledamoter/  finns information om nuvarande och tidigare ledamöter i Riksdagen. I datan har vi identifierat några olika felaktigheter som beskrivs här.

Vi hittar följande typer av fel:
  • Luckor då ingen sitter på en viss stol i kammaren, se empty_slots.txt
  • Perioder då två personer sitter på samma stol i kammaren
    • Ibland är felet 'trivialt': exempelvis Under en dag 2014-09-29 sitter både Eberstein, Susanne (S) och Billström, Tobias (M) på stol #1. Detta för att Tobias sitter _till och med_ och Susanne sitter _från och med_. Denna typ av fel uppträder ofta, men inte alltid (data är lite inkonsekvent) och det är inte så allvarligt. Se trivial_overlaps.txt
    • I 41 fall är felet allvarligt i meningen att flera ledamöter är tilldelade samma stol under en längre tid. Exempelvis sitter på stol #96 från och med 2010-10-04 till och med 2012-09-30 Riksdagsledamot Brodén, Anne Marie (M) och Riksdagsledamot Ertsborn, Jan (FP). Se bad_overlaps.txt

Visualisering

Vi har visualiserat felen per stol och figurerna nås på http://bror.einarsson.net/riksdagen/stol/096.pdf , där 096 är numret på stolen från 001 till 349. Alla 349 figurerna finns i en .zip-fil här (7MB).
I figurerna indikerar röd ordinarie ledamot, gul indikerar ersättare. Kryssmönster indikerar status ledig.

Hur kollar vi?

Vi läser in

SELECT intressent_id,ordningsnummer,"from",tom,status,roll_kod FROM personuppdrag WHERE typ='kammaruppdrag' AND ordningsnummer!=0

Vi tittar på
  • role = "Ersättare" eller "Riksdagsledamot" (från 'roll_kod')
  • status = "Ledig" eller "Tjänstgörande" (från 'status')
  • chair = 'ordningsnummer'

På så vis ser vi vem som suttit när och på vilken stol i kammaren.