Author Archives: %s

Der OParl Update-Mechanismus: schnelles Aktualisieren eines lokalen Bestandes

05 Sep 17
Ernesto Ruge
6 comments

Der Fokus von OParl 1.0 liegt auf einem schnellen und effizienten Abruf von Daten. Dies beinhaltet auch das schnelle und effiziente Aktualisieren eines lokalen Bestandes. Bei einer täglichen Synchronisation kann so mit einer geringen Anzahl an Anfragen an den OParl-Server ein Update durchgeführt werden. Diese Funktionsweise und die Nutzung dieses Mechanismus soll in diesem Artikel genauer beleuchtet werden.

UPDATE: entstanden durch diese Diskussion auf Github wurden Teile des Artikels verändert, da wir dank der Weiterentwicklung der Ratsinformationssysteme nun einen besseren Update-Mechanismus nutzen können. Dadurch wird der Absatz „Modified-Handling bei eingebetteten Objekten“ obsolet.

Dies bedeutet auch, dass der Update-Mechanismus erst ab OParl 1.1 funktionieren wird. Mit OParl 1.1 werden wir Objektlisten aller Objekte von Body aus einführen, und alle Objekte erhalten die Attribute created und modified.

Erstabruf von Daten

Möchte man den gesamten Bestand aktualisieren, so muss man lediglich die von Body ausgehenden URLs aufrufen. Beginnt man also mit dem Abruf des Bodys:

$ curl -s https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/body/1 | json_pp

so erhält man die gewünschten Links:

{
    id: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/body/1",
    type: "https://schema.oparl.org/1.0/Body",
    system: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/system",
    name: "Gemeinde Vettweiß",
    ags: "05358060",
    contactEmail: "sdnetrim@kdvz-frechen.de",
    contactName: "Gemeinde Vettweiß",
    organization: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/body/1/organization",
    person: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/body/1/person",
    meeting: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/body/1/meeting",
    paper: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/body/1/paper",
    legislativeTerm: [ ],
    location: {
        id: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/location/0-1",
        streetAddress: "Gereonstraße 14",
        postalCode: "52391"
    }
}

Um nun also für die erste Synchronisation alle Paper eines OParl Bodies abzurufen, ruft man die Paper-URL ohne Parameter auf:

$ curl -s https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/body/1/paper | json_pp

Als Antwort erhält man eine externe Objektliste (vgl. Kapitel 2.5.3), in der sämtliche Daten der Paper enthalten sind:

{
    data: [
        {
            id: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/paper/13",
            type: "https://schema.oparl.org/1.0/Paper",
            body: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/body/1",
            name: "Unterschutzstellung des Bildstockes Ecke Triftstraße/Antoniusstraße in der Ortschaft Ginnick",
            reference: "V-4/2007",
            date: "2007-06-14",
            paperType: "Vorlage",
            mainFile: {
                id: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/file/1-127",
                type: "https://schema.oparl.org/1.0/File",
                body: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/body/1",
                name: "Vorlage (Unterschutzstellung des Bildstockes Ecke Triftstraße/Antoniusstraße in der Ortschaft Ginnick)",
                mimeType: "application/pdf",
                accessUrl: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/body/1/files/rim4992/UGhVM0hpd2NXNFdFcExjZZLUWrBty0zU28z_p4UFrKwU9pu0Gz_iPO0hlnPSFDZ8/Vorlage_V-4-2007.pdf",
                downloadUrl: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/body/1/files/rim4992/UGhVM0hpd2NXNFdFcExjZZLUWrBty0zU28z_p4UFrKwU9pu0Gz_iPO0hlnPSFDZ8/Vorlage_V-4-2007.pdf",
                created: "2010-01-20T17:32:45+01:00",
                modified: "2010-01-20T17:32:45+01:00"
            },
            consultation: [
                {
                    id: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/consultation/8",
                    type: "https://schema.oparl.org/1.0/Consultation",
                    agendaItem: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/body/1/agendaitem/373",
                    meeting: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/body/1/meeting/257",
                    organization: [
                        "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/body/1/organization/184"
                    ]
                },
                {
                    id: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/consultation/10",
                    type: "https://schema.oparl.org/1.0/Consultation",
                    agendaItem: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/body/1/agendaitem/396",
                    meeting: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/body/1/meeting/249",
                    organization: [
                        "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/body/1/organization/183"
                    ]
                }
            ],
            created: "2010-01-20T17:32:45+01:00",
            modified: "2010-01-20T17:32:45+01:00"
        },
        [...]
    ],
    pagination: {
        totalElements: 977,
        elementsPerPage: 25,
        currentPage: 1,
        totalPages: 40
    },
    links: {
        first: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/body/1/paper?page=1",
        self: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/body/1/paper?page=1",
        last: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/body/1/paper?page=40",
        next: "https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/body/1/paper?page=2"
    }
}

Mit den Links in dem pagination-Block können dann die weiteren Seiten aufgerufen werden, so dass man Seite für Seite den kompletten Datenbestand herunterladen kann. Mit der stabilen Sortierung (vgl. Kapitel 2.5.4) wird sichergestellt, dass keine Elemente verloren gehen.

Update eines Datenbestandes

Da ein Ratsinformationssystem üblicherweise aus sehr vielen Objekten besteht, dauert eine Synchronisation wie die oben beschriebene doch etwas Zeit. Hat man also ein mal einen Bestand heruntergeladen, so möchte man nur noch die Änderungen Abfragen, die mit weit weniger Anfragen auskommen. Dies wird über die Filter (vgl. Kapitel 2.5.5) realisiert.

Hierzu speichert man Datum und Uhrzeit der letzten Synchronisation ab und nutzt dieses für die nächste Synchronisation als URL-Parameter. Da man alle Änderungen seit der letzten Synchronisation haben möchte, nutzt man den Parameter modified_since:

$ curl -s https://sdnetrim.kdvz-frechen.de/rim4992/webservice/oparl/v1/body/1/paper?modified_since=2017-09-01T00%3A00%3A00%2B01%3A00 | json_pp

Als Antwort erhält man die oben beschriebene externe Objektliste, lediglich gefiltert um alle Objekte nach dem übergebenen Zeitpunkt, was für viel weniger Objekte und damit in vielen Fällen nur eine einzige Seite sorgt. Bei einem regelmäßigen Update sind so lediglich der Aufruf des Bodys und der davon abgehenden Objektlisten notwendig. Die so deutlich reduzierten Anfragen gegenüber einer vollen Synchronisation sparen Zeit und Ressourcen.

 

Empfehlungen für stabile Sortierung

Ein sauberes Update kann nur dann funktionieren, wenn die Paginierung stabil ist und sich so die Liste nicht zwischen zwei Abrufen verändert. Dies klingt einfacher, als es tatsächlich ist. Unsere Behandlung gelöschter Objekte vereinfacht dies jedoch erheblich. In der Praxis haben sich je nach Datenbank-System zwei Konzepte als sinnvoll herausgestellt:

  1. Sortierung nach ID: im Fall einer SQL-Datenbank mit Auto-Increment-Index (z.B. MySql und Postgres) eignet sich dieser Index für eine Sortierung, da neue Datensätze dann immer am Ende eingefügt werden.
  2. Sortierung nach createdWenn wie zum Beispiel in der NoSQL-Datenbank MongoDB kein Auto-Increment-Index zur Verfügung steht, eignet sich dascreated-Attribut für eine Sortierung. Wenn created sauber implementiert wird, so ist ein neuer Wert in der Datenbank zwangsweise nach allen anderen, da created nach der Erstellung des Objekts nicht mehr verändert werden darf.

Beachtet man die Regeln für gelöschte Werte nicht, so rutscht die gesamte Liste bei einem Löschvorgang zwischen zwei Client-Requests die gesamte Liste nach Vorne, und der Client bekommt Objekte nicht mit. Deswegen ist es absolut elementar, die gelöschten Objekte wie in der Spezifikation beschrieben einzusortieren.

Weitere Fragen und Antworten

Wenn bei dem Update-Mechanismus oder anderen Details der Spezifikation Fragen auftreten, so kommentieren Sie gerne diesen Blogbeitrag oder schreiben Sie eine Mail!

Erste Finanzierung für OParl-Projekte

30 Jun 17
Ernesto Ruge
No Comments

Der Industriestandard OParl wurde bislang rein ehrenamtlich entwickelt und ist als freier, offener und wohldokumentiert Standard für jeden einsehbar und nutzbar. Diese Offenheit werden wir auch weiterhin behalten, denn sie das, was für uns OParl ausmacht. Nichtsdestotrotz macht OParl und die damit verbundenen Werkzeuge und Infrastruktur viel Arbeit, so dass wir uns nun sehr freuen, dass für gleich zwei Projekte im OParl-Umfeld Förderungen genehmigt wurden.

OParl @ Prototype Fund

Das erste Projekt wird vom „Prototype Fund“ gefördert und ist ein Offenes Ratsinformationssystem, welches von OParl-Core-Team-Mitglied Konstantin Schütze und von München-Transparent-Initiator Tobias Hößl eingereicht wurde. Ziel ist es, ein offenes Ratsinformationssystem zu entwickeln, welches leicht an beliebige Kommunen angepasst werden kann. Dabei soll kein vollständiges Ratsinformationssystem mit der oft komplexen internen Prozessverwaltung geschaffen werden, sondern hauptsächlich eine moderne, leicht bedienbare Oberfläche, in die die öffentlichen Daten einer Kommune importiert werden können.

Das Projekt wird sechs Monate lang vom Bundesministerium für Bildung und Forschung gefördert. Der Prototype Fund ist eine Initiative der Open Knowledge Foundation, um innovative OpenSource-Projekte im Bereich Civic Tech, Data Literacy und Datensicherheit zu unterstützen. Zielgruppe sind Einzelpersonen und kleine Teams aus Softwareentwickler*innen, Hacker*innen und Kreativen.

OParl @ OpenNRW

Das zweite geförderte Projekt wird als „Pilotprojekt Kommunales Open Government in NRW“ gefördert und besteht aus der Einführung von OParl in 24 Kommunen von zwei verschiedenen Ratsinformationssystem-Herstellern sowie der Neuentwicklung von Politik bei Uns. Eingereicht wurde es vom KDVZ Rhein-Erft-Rur, Kooperationspartner sind die Open Knowledge Foundation sowie OParl-Core-Team-Mitglied Ernesto Ruge. Der Fokus soll darauf liegen, die Daten der 24 Kommunen (21 Verbandsmitglieder des KDVZ, Bochum, Rees und Wuppertal) bürgerfreundlich in ein einziges Portal zusammenzubringen und die Daten aufzubereiten.

Das Projekt wird sieben Monate lang vom Land NRW gefördert. „Pilotprojekt Kommunales Open Government in NRW“ ist eine Förderung kommunaler OpenData- und OpenGovernment-Anwendungen und ist der Beitrag des Landes NRW, nicht nur selbst Daten zu veröffentlichen, sondern auch die meist klammen Kommunen darin zu unterstützen. Wichtiger Bestandteil der Förderung ist, dass die geförderten Projekte übertragbar sind, was der Grundidee von Politik bei Uns entspricht.

Einordnung und weitere Schritte

Auf dem ersten Blick wirken beide Projekte zunächst recht ähnlich. Jedoch gibt es einen zentralen Unterschied, der auch schon in den bestehenden Systemen München Transparent und Politik bei Uns sichtbar ist: während das Prototype Fund einen Fokus auf eine möglichst detailreiche Verarbeitung der Informationen legt, legt Politik bei Uns seinen Fokus auf eine Vereinheitlichung und eine kommunenübergreifende Suche. Dies sind zwei wichtige Aspekte, welche jeweils viel Zeit in Anspruch nehmen. Gemeinsam wird jedoch ein Schuh draus, da beide Aspekte zusammen erst recht die Tool-Umgebung von OParl und den Standard selbst verbessern können.

Die Förderungen beziehen sich allerdings „nur“ auf die Entwicklung im Umfeld von OParl 1.0 und nicht auf die Weiterentwicklung des OParl-Standards selbst. Es ist unserer Ansicht nach auch noch zu früh, OParl 2.0 anzugehen, da wir zunächst einen Überblick über die vorhandenen Daten benötigen. Dafür ist aber wiederum eine gute Verbreitung von OParl 1.0 notwendig. Am Horizont ist damit noch ein viel größeres Projekt erkennbar, welches ohne finanzielle Unterstützung nicht machbar sein wird: die Vereinheitlichung der Daten in OParl 2.0. Dieses wird viel Arbeit erzeugen und Teil aktueller Forschung werden.

Zunächst gilt es jedoch, die Potentiale von OParl 1.0 zu heben: Wie man an dem Wikipedia-Wahldaten-Workshop vergangenes Wochenende erkennen konnte, auf welchem in zwei Tagen eine SPARQL-Abfragelogik für OParl implementiert wurde, dann bietet schon OParl 1.0 durch seine Flexibilität mehr Möglichkeiten, als wir es uns selbst zu Träumen gewagt haben.

OParl als Angebot der RIS-Hersteller & OParl 1.1

27 Feb 17
Ernesto Ruge
2 comments

Die Hersteller der Ratsinformationssysteme (RIS) waren bei unseren Workshops zur Entwicklung von OParl von Anfang an dabei und haben mit ihrer Erfahrung wichtige Ergänzungen hinzugefügt. Ein großflächiges Unterstützung war eines der Hauptziele, und so freut es uns sehr, dass drei RIS-Hersteller OParl als Modul fertiggestellt haben:

  • cc-eGov AllRis: OParl fertiggestellt
  • Somacos SessionNet: OParl fertiggestellt
  • Sternberg SD.NET: OParl fertiggestellt
  • more!software more!rubin: Oparl fertiggestellt

[UPDATE: alle RIS-Hersteller haben ihre Module fertiggestellt]

Weitere RIS-Hersteller hat nach eigenen Angaben noch nicht mit der Implementierung begonnen, aber grundlegend Interesse:

  • Provox PV-RAT.NET

Wir freuen uns sehr, dass OParl so gut bei den Herstellern angenommen wird und freuen uns auf die ersten Städte, welche dann OParl auch aktivieren: Melden Sie sich bei uns!

OParl 1.1 kurz vor Veröffentlichung

OParl wird aktiv betreut: in den vergangenen Monaten gab es kleinere Updates, welche einige Texte präzisiert und offensichtliche Schreibfehler korrigiert haben. OParl liegt daher zur Zeit in Version 1.0.5 vor.

In Kürze wird das Bugfix-Release OParl 1.1 veröffentlicht werden. Es ist kompatibel zu OParl 1.0 und liefert einige kleinere Ergänzungen.

Bei den Veröffentlichungen halten wir uns an das Semantic Versioning, d.h., Updates in der letzten Ziffer sind reine Fehlerbehebungen, Updates in der mittleren Stelle („Minor Updates“) sind Funktions-Ergänzungen, die im Rahmen der Hauptversion sinnvoll sind. Große strukturelle und damit inkompatible Änderungen finden in der ersten Ziffer statt („Major Updates“). So können Sie immer einschätzen, was für ein Grad der Änderung stattfindet. In absehbarer Zeit wird es aber keine Major Updates geben, da wir OParl 2.0 auf Basis der via 1.x abgegriffenen Daten entwickeln wollen, wofür 1.x erst eine gewisse Verbreitung finden muss.

Veröffentlichung von OParl 1.0

11 Jul 16
Ernesto Ruge
2 comments

Berlin, 11.07.2016. Nach drei Jahren intensiver Entwicklungszeit wurde die OpenData-Schnittstelle für Ratsinformationssysteme OParl in der Version 1.0 fertiggestellt. Mit OParl v1.0 kann die öffentliche Dokumentation kommunaler Politik von Anwendungsentwicklern abgerufen und zu spannenden, hilfreichen Anwendungen verarbeitet werden. Ziel ist, mit den Daten mehr kommunale Transparenz und Mitbestimmung zu ermöglichen.

„Nach drei Jahren Entwicklungszeit mit unzähligen Tests haben wir ein in der breiten Praxis nutzbares Ergebnis erreicht. Wir freuen uns sehr, dass die ehrenamtlich arbeitenden Entwickler nun die Version 1.0 unter dem Dach der Open Knowledge Foundation veröffentlichen!“, freut sich Kristina Klein, Geschäftsführerin der Open Knowledge Foundation. Die Spezifikation kann ab sofort auf oparl.org abgerufen werden.

Die Schnittstelle wurde maßgeblich von Aktivisten in den OK Labs, den regionalen Gruppen der Open Knowledge Foundation, entwickelt. Zahlreiche andere Organisationen wie die Hersteller der Ratsinformationssysteme, eine Reihe von Städten und verschiedene Nichtregierungsorganisationen haben ebenfalls Informationen und Code beigesteuert.

Schon jetzt gibt es Praxisbeispiele für die Schnittstelle. Die beiden kommunalen Transparenz-Projekte Politik bei Uns und München Transparent bieten schon heute OParl an und dienten als Datengrundlage für die Entwicklung der Schnittstelle. Außerdem geben sie einen kleinen Eindruck, was mit OParl-Schnittstellen in Zukunft möglich sein wird.

Nun hoffen die Entwickler, dass möglichst viele Hersteller und Kommunen die Schnittstelle einführen. In den nächsten Wochen wird eine zentrale OParl-Datenbank eingerichtet, deren API dann unter api.oparl.org erreichbar sein wird. Das alternative, bürgerfreundliche Ratsinformationssystem Politik bei Uns wird in diesem Zuge auch mit der neuen Datenbasis wachsen.

„Wir finden es fantastisch, dass es mit OParl einen ersten Open Data-Standard in Deutschland gibt. Das ist ein wichtiges Signal nicht nur für die Hersteller der Ratsinformationssysteme, sondern alle Anbieter von Fachanwendungen für die öffentliche Verwaltung.“, kommentiert Claus Arndt, Leiter der Stabsstelle Zentrales Government der Stadt Moers, die Veröffentlichung.

Für das Entwickler-Team stellt sich nun die Frage, wie die Weiterentwicklung und der Betrieb des OParl-Ökosystems und anderer OpenData-Standardisierungsprojekte finanzierbar bleibt. Die Offenheit der geschaffenen Spezifikation kann nur gewährleistet werden, wenn die Entwicklung weiterhin unabhängig stattfinden kann. Eckpunkte dazu sind in der Governancerichtlinie des Projektes festgehalten.

Das OParl-Entwicklerteam, momentan bestehend aus Stefan Graupner, Ernesto Ruge und Konstantin Schütze, freut sich auf die weitere Zusammenarbeit mit allen Beteiligten und hofft, mit der Fertigstellung der OParl-Spezifikation einen Beitrag zu mehr Transparenz in Politik und Verwaltung geleistet zu haben.

Website: https://oparl.org/
Presse-Ansprechpartner: Ernesto Ruge | OKF Deutschland | 0173 166 21 74 | ernesto.ruge@okfn.de

Letzte Schritte vor der Veröffentlichung

18 Feb 16
Ernesto Ruge
No Comments

Nach viel Arbeit ist OParl nun nahe der Fertigstellung. In den letzten Wochen wurden die Texte noch einmal komplett überarbeitet, um die Lesbarkeit und Verständlichkeit zu erhöhen und so eine Realisierung zu vereinfachen. Hierzu eine Reihe an Fragen und Informationen:

1) Anbei finden Sie das Spezifikationsdokument, welches (abseits der noch zu korrigierenden Rechtschreibfehler) aus unserer Sicht so veröffentlich werden kann. Die Onine-Ansicht finden Sie hier: https://oparl.org/spezifikation/online-ansicht/ . Wenn Sie noch kritische Änderungswünsche haben, so teilen Sie diese bitte bis zum 28.02.2016 mit. Herzlichen Dank!

2) Wir haben wie bei Spezifikationsdokumenten üblich eine reine Personenliste als Autorenliste in das Dokument aufgenommen: https://oparl.org/spezifikation/online-ansicht/#oparl-autoren . Wer sich nicht in dieser Personliste wiederfindet und aufgenommen werden möchte, möge sich bitte ebenfalls bis zum 28.02. bei uns melden.

3) Wir bereiten zum Release auf der neu entwickelten Seite oparl.org eine Liste der unterstützenden Unternehmen und NGOs vor. Wer also offiziell OParl unterstützen möchte, schicke bitte sein Logo an uns. Danke!

4) Es bildet sich zur Zeit eine siebenköpfige OParl-Leitungsgruppe aus verschiedenen Akteuren aus dem Themenfeld, welche die Weiterentwicklung in Zukunft steuern wird. Hierzu mehr in der nächsten Woche. Diese Gruppe wird dann auch OParl 1.0 offiziell veröffentlichen.

 

Relaunch von oparl.org

04 Jan 16
Ernesto Ruge
No Comments

Im Zuge der Veröffentlichung von OParl 1.0 erscheint die Projekt-Seite oparl.org nun im neuen Gewand. Mit dabei sind zahlreiche Informationen zu der Spezifikation.