Zum hauptinhalt springen

Regionalzeitungskarte mit Datawrapper und Wikidata

Im letzten Eintrag habe ich eine Karte Deutschlands erstellt, die die Anzahl der Zeitungen pro Gebiet darstellt, die dort berichten. Nach den Reaktionen darauf dachte ich es ist eine gute Idee die Pflege der Daten nicht an mir bzw. meinen Zeit-Resourcen scheitern zu lassen. Daher beschreibe ich in diesem Text, wie ich anstatt der Daten der BDZV-Website (als propritäre Quelle) ausschließlich offene Daten aus Wikidata nutze, um dann eine Karte zu erstellen die sich per Github-Action automatisch aktualisiert.

Zuerst möchte ich die Neuerungen verglichen zu letzten Karte beschreiben und anschließend meine Entscheidungen und den aktuellen Stand diskutieren. Als dritter Teil folgt ein Ausblick auf mögliche Erweiterungen der Karte und der Daten. Angehängt ist noch eine Schritt-für-Schritt-Anleitung, wie mit Wikidata, Zeitungen ihren NUTS3-Kreise zugeordnet werden können.

Der Code zur Erstellung und Upload liegt auf Github und kann gerne weiterverwendet werden.

Wieso überhaupt eine Karte

Wieso ich die Karte überhaupt erstellt habe, steht in dem letzten Eintrag. Kurz: Um die Kreise herauszufinden über die wenige oder keine Zeitungen berichten. Für mich sind die daraus entstehnden Vorteile Grund genug es auszuprobieren. Die Nutzung von Wikidata ist damit auch ein Experiment, um zu sehen wie groß die Bereitschaft ist die Daten dort einzutragen.

Neuerungen

Zu Beginn möchte ich die Neuerungen verglichen zur letzten Karte auf Basis der BDZV-Daten beschreiben. Die erste Neuerung ist der Bezug der Zeitungs-Daten aus Wikidata. Die Abfrage versucht alle Regionalzeitungen zu erfassen, die über Geoinformationen zu einem NUTS3-Gebiet zugeordnet werden können. NUTS ist eine EU-Codierung die sich an die Verwaltungsgliederung der EU-Länder anlehnt und anhand von Ober- und Untergrenzen der Einwohneranzahl festgelegt wird. NUTS-Gebiete Level 3 sind in Deutschland damit hauptsächlich Landkreise und kreisfreie Städte. Für die Zuordnung habe ich eine Eigenschaft aus Wikidata “Motiv/Gegenstand der Darstellung” (P180) verwendet, diese verweist dann auf ein NUTS3-Gebiet.

Neben der Nutzung von offenen Daten ist eine zweite Neuerung die automatisierte Aktualisierung der Karte per Github-Actions, angelehnt an einen der letzten Einträge im Blog. Dafür lädt ein automatischer Batch einmal pro Tag die für die Zeitungen relevanten Datensätze aus der API von Wikidata. Wenn sich die Daten verändert haben, dann aktualisiert der Batch automatisch auch die Karte. Grundsätzlich braucht der Batch zum Erstellen der Karte für jede Zeitung nur Namen der Zeitung und die NUTS3-Gebiete über die die Zeitungen berichten.

Die dritte Neuerung ist die Nutzung von Datawrapper als Hosting Dienst für die Karte und Provider der Kartensoftware. In der vorherigen Version der Karte habe ich für die Kartensoftware das Python Opensoure-Framework folium verwendet. Diese Neuerung bringt erstmal keinen Vorteil, die Karte von Datawrapper verhält sich genauso wie die mit Folium bereitgestellte Karte. Was auch daran liegt da ich die meisten Features der Datawrapper Karte noch nicht nutze. Ich wollte einfach gerne diese Art des Bereitstellens der Karte über Datawrapper ausprobieren.

Im folgenden Bild ist der Ablauf des täglichen Aktualisierungs-Batchs schematisch dargestellt. Schritt 1 downloads und Schritt 3 uploads sind bereits oben im Text beschrieben. In Schritt 2 transforms werden die CSV-Rohdateien aus Wikidata mit einem Python-Skript so verarbeitet, dass eine eindeutige Zuordnung von NUTS3-Gebieten zu einer Zeitung gezählt werden kann. Außerdem ist im Skript eine Blacklist von Zeitungen definiert, die keine Regionalzeitungen sind, aber die CSV-Rohdaten enthalten sie, aufgrund wie die Abfrage aktuell noch definiert ist.

Systemdiagramm
Übersicht zum Datenfluss via Github-Actions

Durch die Neuerungen ergeben sich folgende Vorteile:

  • Ich bin nicht der Flaschenhals für die Veröffentlichung der Daten. Das heißt jede Person kann Inhalte eintragen und verändert so auch die Karte. Im besten Fall werden dadurch falsche oder fehlende Daten dezentral korrigiert oder ergänzt.
  • Auch brauche ich mir um den Verbleib der Daten, sowie das Datenmodell keine Sorgen zu machen, diese liegen in der etablierten Datenbank von Wikidata. Keine Datenbank muss von mir administriert werden.
  • Da es sich um Linked Open Data handelt und Wikidata bereits ein Graph ist, können die für die Karte relevanten Informationen auch für andere Use-Cases genutzt werden.
  • Weiterer Punkt, mit wenigen Änderungen kann der Ansatz für jedes beliebige Land der Welt wiederholt werden (Beispielhaft: Schweden). Das liegt daran, dass die Regeln, wie eine Zeitung und deren Geoinformationen hinterlegt sind, durch die generische Definition der Wikidata-Statements unabhängig von einer Landesprache beschrieben sind. Natürlich nur sofern diese Regeln in die Landesprache bereits übersetzt wurden.
  • Dadurch, dass der Batch das automatische Aktualisieren der Daten übernimmt, muss ich das ebenfalls nicht durchführen. User, die die Daten verändern, können die Veränderung an der Karte ohne auf mein Zutun warten zu müssen spätestens am nächsten Tag in der Karte überprüfen. Dadurch dass die Daten regelmäßig im Repository gespeichert werden, können mit der git-history-Methode aus dem vorangegangenen Post die Artefakte des Batch ebenfalls ausgewertet werden.

Fertige Karte

Unter diesem Link ist die fertig generierte Karte zu sehen, aktuell noch sehr unvollständig, da diese Daten in Wikidata mehrheitlich noch nicht eingetragen sind. Im Folgenden ist die Karte mit ihrem aktuellen Stand auch hier zu sehen:

Die Dokumentation für Datawrapper hat mir sehr geholfen, da sie ausführlich war und gut aufgebaut. Nach diesem Tutorial habe ich das Skript zum Updaten der Grafik geschrieben. Was ich zuerst übersehen habe, aber was ein eigenes Feature des Workflows ist: Tooltips können benutzerdefiniert designed werden, in der Karte ist das die Überschrift mit Name des NUTS3-Kreises und darunter der NUTS3-Code.

Diskussion

Für mich bleiben damit noch drei Punkte offen: einmal die verwendete Eigenschaft ‘Gegenstand der Darstellung’ und die möglichen Alternativen, dann deren Pflege über die Oberfläche in Wikidata und wie oder ob die Frage der Zombiezeitung mithilfe von Wikidata beantwortet werden kann.

Vorweg, egal welche Properties in Wikidata das Gebiet annotieren, es kann der Teil des Prozess für die Erstellung der sehr einfach ergänzt werden. Aktuell wird Motiv (Gegenstand der Darstellung) (P180) verwendet. Als Alternativen existieren:

  • Erscheinungsort (P291) erschien mir zu Beginn als geeigneter Kandidat, da es aber meist nur ein Ort, der in dem z.B. der Verlag sitzt ist, habe ich mich dagegen entschieden.

  • Zentrales Thema des Werks (P921), für es spricht seine Verwendung in Werken die ebennfalls wieder relativ allgemein gehalten ist. Gegen P921 spricht wiederum, dass zentrale Themen nicht unbedingt geografischer Natur sein müssen.

  • Motiv (P180), für es spricht seine Verwendung in Druckerzeugnissen und eine bisher breiter angewandte Annotierung als P921 und P291. Dazu die Dokumentation auf der Diskussionseite von P180 in Englisch, im Unterpunkt Domain. Ich habe nicht versucht die Angaben eigenständig zu prüfen.

Für die beiden letzten spricht dabei, dass sie zumindest nach oberflächerlicher Durchsicht allgemeiner angewandt werden als der Erscheinungsort. Welcher recht speziell ist und wie oben schon angesprochen meist ausschlielich für den einen Ort des Verlags genutzt wird. Ich habe mich für P180 entschieden, da P291 eigentlich durchweg für den Erscheinungsort, also meist den Ort des Verlagshaus genutzt wird.

Auch finde ich die Pflege der Geodaten über die Relation in Wikidata nicht komfortabel. Zum Beispiel könnte z.B. der Code hinter dem opendatalab Tool genutzt werden um eine Oberfläche zum einfachen Pflegen der Kreise zu erhalten. Es fehlt nur der Upload von Zuordnungen über die API und eine Anmeldung mit einem Wikidata-Account.

Oder direkt als Tool im Wikidata-Userinterface, dann ging es nur noch im eine Darstellung für die Eingabe-Möglichkeit von NUTS3-Regionen im Stil von dem GeoJson-Picker des opendatalab.

Das Problem der Einteilung einer Zeitung in eine Zombizeitung, war für die letzte Zeitung bereits aufgekommen und war damals und ist aktuell noch immer ungelöst. Vielleicht kann dieses Problem ja jetzt im Zuge der Bearbeitung der Daten in aller Öffentlichkeit einfach gelöst werden. Also entweder indem anhand bestehender Relationen diese Einteilung getroffen werden kann oder indem neue Daten eingefügt oder verknüpft werden können.

Ausblick

Zusätzlich gibt es noch folgende mögliche Erweiterungen und Ergänzungen.

Verglichen zur ersten Karte auf Basis der BDZV-Daten ist diese noch sehr unvollständig. Es ist schwierig die relevanten Zeitungen zu ermitteln, da nur sehr wenige Zeitungen in Wikidata als Regionalzeitung annotiert sind und es sehr viele andere Zeitungen gibt. Eine Möglichkeit wäre, die Mitgliedschaft im BDZV per Wikidata abzufragen. Von den ca. 400 Zeitungen die Mitglied im BDZV sind, sind in Wikidata nur 87 Zeitungen zu finden, davon haben 13 Zeitungen die Regionalzeitung-Eigenschaft. Trotzdem fehlen noch immer ca. 300 Zeitungen.

Andere Quellen einzubinden würde auch einen Mehrwert bringen, aber das habe ich erstmal verworfen, da es die Zugänglichkeit der Pflege der Karte wieder erschweren würde. Also erstmal die Anmeldung in Github und den Prozess wie ich eine “Datei bearbeite” bzw. als Pull-Request stelle. Als weitere Quellel habe ich hauptsächlich an die CSV-Datei vom BDZV gedacht, die im oben erwähten vorherigen Artikel über die Zeitungskarte genutzt wurde. Mögliche wäre natürlich auch sie als Google-Drive Sheet per Github-Action zu importieren.

Um dieselbe Karte für z.B. Frankfreich oder Italien zu erstellen, müsste die Abfrage für Wikidata nur mit wenig Aufwand verändert werden, da die Geodaten per NUTS-Codes dargestellt sind. Aber auch ganz Europa wäre möglich. Einziges Problem das bestehen würde, die Datenlage würde sich dadurch nicht verbessern. Es wäre eine Karte mit sehr dürftiger Datenbasis, solange niemand etwas eintragen würde.

Auch könnte ausgehend von der Abfrage der Zeitungen zu NUTS3-Gebieten andere Objekte ermittelt werden. Da Persönlichkeiten oft sehr gut in Wikidata dokumentiert sind, fallen mir persönlich jetzt die Bundespräsidenten und ihr Geburtsort oder noch Minister und Ministerinnen (für ganz Europa) und ihre Geburtsort ein. Die letzte Abfrage dauert etwas länger, sie liefert rund 20.000 Einträge, liegt aber noch innerhalb des 120 Sekunden Timeout.

Danke an Nils und Martin für das Lesen einer ersten Version dieses Texts.

Anleitung zum Pflegen der NUTS Gebiete einer Zeitung

Um ein NUTS-Gebiet zu einer Zeitung hinzuzufügen müssen folgende Schritte durchgeführt werden:

  1. Registrieren eines Kontos für Wikidata.org. Es kann aber auch ein Wikipedia-Konto genutzt werden.

  2. Entweder über die Liste auf dieser Seite oder eigenständig über die Suche auf Wikidata.org eine Zeitung zu suchen, welche bearbeitet werden soll und die Wikidata-Seite dieser Zeitung (am besten angemeldet) öffnen. Bei keiner Anmeldung wird die IP für jede Bearbeitungs-Anfrage gespeichert.

    Ansicht auf eine Wikidata-Seite
    Ansicht auf eine Wikidata-Seite

  3. Dann für die Relation “Gegenstand der Darstellung” (P180) die Regionen eintragen. Mit der Suche für den Wert der Aussage kann für die meisten NUTS3 Gebiete direkt ein Kreis oder eine Stadt gefunden werden. Dabei muss abhängig vom Bundesland meist ein Landkreis gewählt werden, da diese eine NUTS3-Zuordnung besitzen. In Fällen von kreisfreien-Städten besitzen diese aber eine separate NUTS3-Zuordnung, im Zweifel nachschauen.

    Wert einer Aussage hinzufügen
    Ein NUTS3-Gebiet hinzufügen

    Falls die Eigenschaft noch nicht existiert, muss sie erst noch hinzugefügt werden. Dazu auf die Schaltfläche “+ Aussage hinzufügen” oberhalb von “Identifikatoren” und des letzten Elements im Aussage-Abschnitt. Folgendes Beispiel, Stuttgarter Zeitung.

    Aussage hinzufügen
    Übersicht über den Datenfluss via Github-Actions

Die geänderten Datensätze werden gegen Mitternacht durch den Batch mithilfe der Wikidata-API heruntergeladen und aktualisieren die Datawrapper-Karte. Welche Änderungen an einem Wikidata-Objekt angewandt wurden, kann auch direkt über die Wikidata-History z.B. für die Stuttgarter Zeitung nachvollzogen werden.