Zum hauptinhalt springen

Regionalzeitungskarte mit Datawrapper und Wikidata

Im letzten Eintrag habe ich eine Karte der NUTS3-Gebiete Deutschlands erstellt, die die Anzahl der Zeitungen pro Gebiet darstellt, die dort berichten. Nach den Reaktionen auf die letzte Karte 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.

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. Wieso ich denke, dass diese neue Version von Vorteil ist erkläre ich in Kürze. Die Nutzung von Wikidata ist auch ein Experiment um zu sehen wie groß die Bereitschaft ist die Daten dort einzutragen.

Neuerungen

Jetzt beschreibe ich die Neuerungen verglichen zur letzten Karte auf Basis der BDZV-Daten. Die erste Neuerung ist der Bezug der Zeitungs-Daten aus Wikidata. Die Abfrage (siehe Schlussbemerkung) versucht alle Regionalzeitungen zu erfassen, die über Geoinformationen zu einem NUTS3-Gebiet1 zugeordnet werden können. Für die Zuordnung habe ich eine Eigenschaft aus Wikidata “Motiv/Gegenstand der Darstellung” (P180) verwendet, diese verweist dann auf ein NUTS3-Gebiet. Wieso ich diese Eigenschaft verwende und welche Alternativen es gäbe, siehe Diskussion.

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. Das war mit SPARQL (der Abfragesprache für Wikidata) gar nicht so einfach, zu den Herausforderungen später mehr.

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 das 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 skizziert. Schritt 1 downloads und Schritt 3 uploads sind oben im Text bereits 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, aber durch die Abfrage Teil der CSV-Rohdaten sind.

Systemdiagramm
Übersicht zum Datenfluss via Github-Actions

Durch die Neuerungen ergeben sich folgende Vorteile:

  • Ich bin nicht der Gatekeeper für die 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.2

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:

Wie ich mit Wikidata Zeitungen ihre NUTS3-Kreise zuordnen kann, habe ich weiter unten in einer Schritt-für-Schritt-Anleitung mit Bildern beschrieben.

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.

Zuordnung Zeitung zu NUTS3-Gebiet

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 das es mehrere zentrale Themen geben kann und diese bei einer Regionalzeitung 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.3

Für die beiden letzten spricht dabei das 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.

Pflege von Geodaten über Wikidata

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.

Zombiezeitungen

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

Unvollständige Zeitungen

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.

Zusätzliche Quellen

Andere Quellen einzubinden wäre natürlich auch charmant, aber habe ich für mich erstmal verworfen, das es die Zugänglichkeit der Pflege der Karte wieder erschweren würde. Dabei habe ich hauptsächlich an die CSV-Datei vom BDZV gedacht, die im oben erwähten vorherigen Artikel über die Zeitungskarte genutzt wurde.

Für andere Länder

Um eine ähnliche Karte für z.B. Frankfreich oder Italien zu erstellen, müsste die Abfrage für Wikidata nur mit wenig Aufwand verändert werden. 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.

Addendum

Technische Einzelheiten

Hier folgen Erläuterungen die oben im Text keinen Platz hatten.

Abfrage der Zeitungen erklärt

Um eine Regionalzeitung mit ihrer Zuordnung zu ermitteln, nutze ich dabei die Eigenschaften Zeitung, Regionalzeitung und Tageszeitung welche als Geoinformation einen Ort, eine Hauptverwaltung oder ein sog. “Motiv/Objekt der Darstellung” besitzen sollten. Diese Geoinformation muss dabei einen gültigen NUTS3-Code besitzen der mit DE beginnt, dann wird die Zeitung in die Karte aufgenommen.

Datawrapper

Nach diesem Tutorial habe ich mehr oder weniger das Skript zum Updaten der Grafik entwickelt: Was ich zuerst übersehen habe aber 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.

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 Beiarbeitungs-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

Diese Änderungen werden dann gegen Mitternacht aus Wikidata heruntergeladen und aktualisieren die Karte unter wikidataMap.html. Alle geänderten Datensätze werden zusätzlich für jeden mitternächtlichen Lauf aufbereitet unter wikidataDiff.html angezeigt. Diese Infos können auch direkt über die Wikidata-History bspw. Stuttgarter Zeitung nachvollzogen werden.


  1. 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. ↩︎

  2. Ganz nett ist noch, dadurch das 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. ↩︎

  3. Dazu die Dokumentation auf der Diskussionseite von P180 in Englisch, im Unterpunkt Domain. ↩︎