Alle Parlis data

We stellen nieuwe scripts ter beschikking (zie download-pagina) waarmee je snel een hoop PARLIS data in een MySql server kan inladen. Een deel van de data die we daar beschikbaar stellen wordt ook na 8 september bijgewerkt, zodat je App niet blijft hangen met oude informatie. Hieronder leggen we uit welke data duurzaam beschikbaar gesteld wordt, en hoe deze is verkregen.

Waar komt de data vandaan?

Eerder (link) hebben we een voorbeeld gegeven hoe je de data kan importeren die beschikbaar is op data.appsvoordemocratie.nl. De API van Parlis is nog in een testfase, waarbij deze niet publiek toegankelijk is. We hebben deze API gebruikt om zo veel mogelijk data op te halen.

We hopen dat we inmiddels 95% van de data te pakken hebben. Er zijn inmiddels minstens 10 miljoen API Calls uitgevoerd en de servers hebben de afgelopen weken vrijwel continue staan werken. Enerzijds hebben we nu data die we up-to-date kunnen houden en als downloads ter beschikking kunnen stellen. Anderzijds is de API uitvoerig getest en deze ervaringen zullen met de Dienst Informatievoorziening van de Tweede Kamer gedeeld worden. Op basis hiervan kan de API verbeterd worden zodat deze perfect aansluit bij de behoeften van diverse App-bouwers, datajournalisten en wetenschappers.

Als je de scripts gebruikt, komen er 27 tabellen beschikbaar, die je kan gebruiken voor het ontwikkelen van je App. In de tabellen staat een exact kopie van de informatie die de API gaf.

Structuur en het proces

Als eerste is er een inspectie gedaan van een aantal basis entiteiten zoals Activiteiten, Agendapunten, Zaken, Besluiten, Statussen, Documenten,  KamerstukDossiers en Stemmingen. Om de onderlinge relaties van deze entiteiten weer te geven, zie het artikel “Parlis als model”. Een voorbeeld van een API Call is:

https://api.tweedekamer.nl/APIDataService/v1/Zaken

Via de basis ingangen zijn de volgende tabellen samengesteld:

  • Activiteiten.tsv.7z
  • Agendapunten.tsv.7z
  • Besluiten.tsv.7z
  • Documenten.tsv.7z
  • Stemmingen.tsv.7z
  • Zaken.tsv.7z

Merk op dat er geen Statussen, Kamerstukken bij zitten. Omdat deze data gerelateerd is aan een Zaak, kunnen we deze informatie pas ophalen bij het doorlichten van alle Zaken.

Hieruit kwam naar voren dat het niet enkel een kwestie is van al deze informatie de lijsten op te halen van 250 items per pagina. In het geval van de lijst met Zaken krijg je een Zaak-iD. Als we vervolgens een individuele Zaak ophalen via [ https://api.tweedekamer.nl/APIDataService/v1/Zaken(guid'A0EE78E6-FA4E-4E95-B663-09C5AB8CDFD5')/ ] dan krijg je enkel de zaak-velden, maar deze data legt op veld niveau geen relatie met andere informatie in de database, zoals bijvoorbeeld een KamerstukDossier. Deze is bijvoorbeeld op te vragen via:[ https://api.tweedekamer.nl/APIDataService/v1/Zaken(guid'A0EE78E6-FA4E-4E95-B663-09C5AB8CDFD5')/KamerstukDossier ]. Hiermee komt het Kamerstukdossier-ID “KamerstukDossiers(guid’c3b5fe0e-e259-43c7-9f1f-ec020e98fd47′)” tevoorschijn. Nu is een Zaak altijd aan maximaal 1 KamerstukDossier gerelateerd. Maar je kan je voorstellen dat bij complexere M:N relaties het aantal API Calls al snel een vlucht neemt.

Zaken als ingang voor alle zaak gerelateerde data

Door alle Zaken te bezoeken en vervolgens allerlei relaties te volgen met aanvullende API Calls, hebben we tevens (hopelijk) alle Kamerstukdossiers, Agendapunten en Documenten opgehaald. Bij deze informatie hebben we de Zaak-ID toegevoegd , zodat deze relaties later weer terug te vinden zijn. Deze tabellen zijn in het zip-bestand ‘Zaken.7z’ terug te vinden (zie download-pagina). Als je nu de import scripts gebruikt worden al deze bestanden geïmporteerd.

Zo is er een tabel Zaken, maar ook een tabel Zaken-Zaken die uit de Zaken crawl komt.  Deze lijken identiek, maar komen dus voort uit verschillende series van API Calls. Het nadeel is dat er een hoop informatie dubbel in tabellen staat. Het voordeel is dat je geen complexe SQL queries hoeft te schrijven.

Afsluitend hebben we dit ook voor alle Activiteiten gedaan en het resultaat hiervan is te vinden in het bestand ‘ActiviteitRelaties.7z’ (zie download-pagina).

Let op: Om Activiteiten te relateren aan Zaken, kan je een directe relatie, maar dus ook een indirecte relatie via Agendapunten en Besluiten volgen.