visualisiert.


Making-Of: Die Entwicklung des Parteiengesetzes

von Gregor Aisch. Lesezeit: etwa 4 Minuten.

Letzte Woche habe ich eine Visualisierung der Entwicklung des Parteiengesetzes veröffentlicht. Zu sehen sind die verschiedenen Versionen des Gesetzes seit dessen Verabschiedung im Jahr 1967. Die Spalten repräsentieren je eine Fassung des Gesetzes und sind mit dem Jahr der Verabschiedung überschrieben. Jedes Rechteck stellt einen Gesetzesparagraphen dar, gruppiert zu Abschnitten.

Motivation

Auf dieses Thema aufmerksam geworden war ich während der Recherche zu den Parteispenden in Deutschland, bei der mich vor allem Änderungen der Grenze der Spender-Veröffentlichungspflicht interessiert hatten. Diese wurde etwa in einer Gesetzesänderung vom 1989 von 20.000 auf 40.000 DM angehoben.

In der Antragsbegründung, die dem von der CDU/CSU, SPD und FDP eingebrachten Gesetzesentwurf voran ging, wurde die Änderung der Veröffentlichungsgrenze für Parteispenden im Übrigen mit keinem Wort erwähnt. Stattdessen fand sich lediglich die Anweisung dass im entsprechenden Paragraphen der Betrag “20 000″ durch “40 000″ zu ersetzen sei.

Es gehört nicht viel Phantasie dazu, sich vorzustellen wie viele solcher, komplett aus dem Kontext gerissenen Änderungen vom Bundestag so beschlossen werden. Wer da beim Lesen der Anträge nicht in den bisherigen Gesetzen nachliest, weiß schlichtweg nicht worüber eigentlich abgestimmt wird. Dass solche Änderungsgesetze auch gerne im Paket verabschiedet werden, macht die Sache zusätzlich kompliziert.

Höchste Zeit also für einen benutzerfreundlichen und visualisierten Zugang zu unseren Gesetzestexten. Aufgrund der mangelhaften Datenlage musste ich mich dabei auf ein Gesetz reduzieren. Ich wollte wenigstens einmal zeigen, was möglich ist. So habe ich mich also an die Recherche gewagt.

Mühsame Datenrecherche

Um von der aktuellen Version eines Gesetzes (die man etwa auf juris.de oder inzwischen auch auf Github findet) zur ersten Fassung zu kommen bin ich wie folgt vorgegangen: In jeder Version eines Gesetzes steht vermerkt, wann selbiges zuletzt geändert wurde. So erfährt man zum Beispiel, dass die derzeitige Fassung vom PartG zuletzt am 23. August 2011 geändert wurde, und dass diese Änderung im Bundesgesetzblatt I auf Seite 1748 bekanntgegeben wurde (BGBl. I S. 1748).

Im Online-Archiv des Bundesanzeiger Verlags sucht man sich nun die entsprechende Ausgabe. Leider wird nur die Seitenzahl erwähnt, nicht aber die Nummer der Ausgabe. Da die Seiten pro Jahr fortlaufend nummeriert sind ist dies theoretisch auch nicht nötig; es würde aber die Suche nach dem Änderungsgesetz erleichtern. In diesem Fall wurde das Gesetz in der Ausgabe 48 geändert, die am 26. August 2011 erschienen ist.

Da das Bundesgesetzblatt leider nur im XAV-Format zum Download bereit steht, muss man die Dokumente zunächst ins PDF konvertieren. Möglich ist dies etwa mit dem Kommandozeilen-Tool convert der Bildbearbeitungs-Bibliothek ImageMagick:

convert -density 300 PartG-2011.xav PartG-2011.pdf

Zu Beginn jedes Änderungsgesetzes findet man die Referenz auf die jeweils vorherige Version, die man wiederum im Bundesgesetzblatt findet, ins PDF-Format umwandelt und so weiter. So landet man schließlich bei der ersten Fassung des Gesetzes und kann mit der eigentlichen Arbeit beginnen.

Von den Änderungsgesetzen zu Gesetz-Fassungen

Um die Änderungen in Gesetzen zu visualisieren benötigt man eine genaue Beschreibung der geänderten Stellen. Ich habe mich dazu entschlossen auf bereits vorhandene Techniken aus der Software-Entwicklung zurückzugreifen. So gibt es etwa diverse Werkzeuge, mit denen man zwei Versionen einer Textdatei visuell vergleichen kann (diff view).

Bei den Gesetzesveröffentlichung muss man zwischen zwei grundsätzlichen Arten unterscheiden. Zum einen gibt es die Erst- bzw. Neufassungen, bei denen der komplette Gesetzestext im Bundesgesetzblatt erscheint. Kleinere Änderungen werden in der Regel aber in sogenannten Änderungsgesetzen veröffentlicht.

Zur Speicherung musste zunächst ein geeignetes Datenformat her. Da es sich um Gesetzestexte handelt, lag nahe, auf das einfachste aller Formate zurückzugreifen: die Textdatei. Strukturierte Formate wie JSON oder XML hätten dagegen den Nachteil, dass man die Versionen nicht ohne weiteres miteinander vergleichen kann.

Zur Texterkennung habe ich die Software FineReader verwendet, die PDF-Dokumente mit einem Mausklick in maschinenlesbare Formate wie RTF oder DOC umwandelt, und dabei auch zweispaltige Texte erkennt.

Den Gesetzestext der Erst- bzw. Neufassungen habe ich dann Paragraph für Paragraph in eine Textdatei kopiert. Die Einrückung der Absätze ist dabei entscheidend für die Gliederung des Gesetzes. Zeilen mit einer Einrückung enthalten Paragraphen, zwei Einrückungen markieren die Absätze, drei Einrückungen die Unterpunkte usw.

Bei den Änderungsgesetzen war glücklicherweise etwas weniger zu tun. Man kopiert die alte Version in eine neue Datei, sucht die betreffenden Stellen im Gesetz und ändert den Text. Nach einer gewissen Anzahl von Änderungsgesetzen erscheint dann scheinbar automatisch irgendwann eine Neufassung, anhand der ich gut überprüfen konnte, ob die bisherigen Änderungen korrekt eingetragen wurden.

Visualisierung

Im Vergleich zur Datenrecherche war das Erstellen der Visualisierung ein reines Kinderspiel. Natürlich war es praktisch, dass das Parteiengesetz einen relativ überschaubaren Umfang hat und auch nur relativ selten geändert wurde. Die Idee mit den Kästchen pro Paragraph lag nahe und hat auf Anhieb funktioniert. Für die die Paragraphen verbindenden Linien habe ich RaphaelJS eingesetzt, der Rest ist reines HTML und CSS.

Relativ einfach zu lösen war auch das Problem der Visualisierung der Textunterschiede zwischen verschiedenen Versionen (siehe Bild). John Resig, der Schöpfer von jQuery, hat dazu praktischerweise schon eine JavaScript-Funktion veröffentlicht. Insgesamt dürfte die Visualisierung nicht mehr als ein paar Stunden gedauert haben.

An der mühsamen Datenrecherche saß ich hingegen fast zwei Wochen..

Zum Autor

Gregor Aisch entwirft und programmiert interaktive Visualisierungen und bloggt darüber.

@driven_by_data
driven-by-data.net