Wikidata:Werkzeuge/OpenRefine/Bearbeiten/Anleitungen/Listeria Invers

This page is a translated version of the page Wikidata:Tools/OpenRefine/Editing/Tutorials/Inverse Listeria and the translation is 100% complete.

Listeria ist ein mächtiges Werkzeug, um Wiki-Tabellen aus SPARQL-Abfragen zu generieren und sie mit Wikidata synchron zu halten. Viele Wikipedias nutzen es, um ausführliche Tabellen anzuzeigen, die zentral gepflegt werden und keine doppelte Arbeit für jede Wikipedia verursachen. Häufig sind die Daten, die für das Generieren der Tabellen erforderlich sind, einfach noch nicht in Wikidata vorhanden: wir müssen sie zuerst importieren. Diese Anleitung erklärt, wie man manuell gepflegte Tabellen aus Wikipedia nach Wikidata importiert.

Einschränkungen

Es muss angemerkt werden, dass nicht alle Wikipedia-Tabellen für den Import geeignet sind. Nicht alle sind verlässlich und aktuell. Es ist wichtig, zu überprüfen, dass die Informationen in der Tabelle verlässlich belegt sind und sie nicht während des Imports verfälscht werden.

Import der Tabelle

In dieser Anleitung werden wir Daten über U-Bahn-Systeme importieren. Die englischsprachige Wikipedia hat eine beeindruckende Tabelle, die solche Systeme auflistet und dieses Beispiel werden wir nutzen.

Eine Möglichkeit, um eine Tabelle, die wir im Internet gefunden haben, zu importieren ist, sie mit unserer Maus auszuwählen, zu kopieren und in OpenRefines Import-Zwischenablage einzufügen.

  • die in der Tabelle enthaltenen Wikilinks geben uns direkt abgeglichene Werte, da die verlinkten Wikiseiten mit Wikidata-Datenobjekten verknüpft sind. Beispielsweise wäre der Name "SkyTrain" normalerweise mehrdeutig (da er zu vielen unterschiedlichen Wikidata-Datenobjekten passt), verlinkt jedoch in diesem Fall auf SkyTrain Vancouver, eine Wikipedia-Seite, die mit SkyTrain (Q876780) verknüpft ist. Daher sollten wir diese Information weiternutzen;
  • die in jeder Wert-Zelle angegebenen Fundstellen geben an, woher die Information stammt: diese Fundstellen wollen wir nicht verwerfen, sondern stattdessen nach Wikidata importieren.
 
Kopieren des Wikicodes einer Tabelle aus einem Wikipedia-Artikel.

Wir werden daher ein Importwerkzeug nutzen, um aus unserer Tabelle ein OpenRefine-Projekt zu erstellen. Klicke auf Bearbeiten in dem Abschnitt des Wikipedia-Artikels, in dem sich die Tabelle befindet. Stelle sicher, dass du den Quelltexteditor und nicht den visuellen Editor nutzt, da wir den Wikicode dieser Tabelle benötigen. Kopiere die gesamte Tabelle (die mit {| beginnt und mit |} endet) und kopiere sie in die Zwischenablage des Importbereichs von OpenRefine (du kannst den gesamten Abschnitt Liste kopieren, da er nur eine Tabelle enthält: OpenRefine wird alles ignorieren, was sich außerhalb der Tabelle befindet).

Die Vorschau des Imports dauert eine Weile: dies liegt daran, dass OpenRefine Wikidata abfragt, um die Wikilinks den Wikidata-Datenobjekten zuzuordnen. Standardmäßig ignoriert OpenRefine Vorlagen in Wikicode, in unserem Fall werden jedoch die Länder und einige Entfernungen mit Vorlagen angegeben, weshalb wir Vorlagen und Bilder als reinen Wikicode einbeziehen auswählen können. Es ist auch nötig, anzugeben, aus welcher Wikipedia der Wikitext stammt (die Felder verweisen standardmäßig auf die englische Wikipedia, was in unserem Fall richtig ist). Zuletzt müssen wir den Import bestätigen: das Erstellen des Projekts sollte einige Zeit dauern (aufgrund des Cachings jedoch nicht zu lange).

 
Wikidata mit OpenRefine bearbeiten - Anleitung Listeria Invers. Importoptionen für die Wikitabelle.
 
Überprüfen der Abgleichsqualität mit Aspekten.

Wenn das Projekt erstellt wurde, wirst du einige Unterschiede zu anderen Importen feststellen:

  • viele Zellen sind bereits abgeglichen: dies sind die Zellen, die einen einzigen Wikilink enthalten, der auf eine Seite verweist, die mit einem Wikidata-Datenobjekt verknüpft ist;
  • neue Spalten wurden erstellt, die die URLs aus den in den Zellen enthaltenen Einzelnachweisen enthalten. Diese Fundstellen-Spalten befinden sich rechts neben der Inhaltsspalte, aus der sie extrahiert wurden.
 
Struktur der ursprünglichen Werte und ihrer Einzelnachweise.

Selbst wenn die Zellen automatisch abgeglichen wurden, überprüfe die Qualität der Treffer. Beispielsweise ist es immer möglich, dass ein Wikilink auf eine Begriffsklärungsseite verlinkt, woraufhin die Zelle fälschlicherweise mit einem Begriffsklärungs-Datenobjekt abgeglichen wird. Eine einfache Möglichkeit, um einen Eindruck davon zu erhalten, wie gut die Qualität des Abgleichs ist, ist Spalten für abgeglichene Werte hinzuzufügen (Spalte bearbeitenSpalten der abgeglichenen Spalte hinzufügen) und Eigenschaften wie instance of (P31) und mit dem Inhalt deiner Tabelle zusammenhängende Eigenschaften (wie date of official opening (P1619)) abzurufen. Nutze Aspekte, um dir diese Werte anzusehen und einen Eindruck davon zu erhalten, wie die Datenobjekte aussehen.

Die Daten bereinigen

 
Werte, die nicht zum regulären Ausdruck passen, über den Filter isoliert.

Sagen wir, wie möchten die Spalte Fahrgastfahrten der Tabelle importieren. Diese Spalte enthält Werte wie 302.8 (2016): zuerst müssen wir dies bereinigen und die Anzahl der Fahrgastfahrten von dem Jahr trennen. Dies können wir zum Beispiel mit einem regulären Ausdruck erreichen. Es sieht so als, als würde das folgende Format in der Spalte am häufigsten Verwendung finden: eine Menge (bestehend aus Zahlen und einem Punkt), ein Leerzeichen, eine öffnende Klammer, das Jahr und eine schließende Klammer. Dies sollte dem regulären Ausdruck [\d.]+ \(\d{4}\) entsprechen. Du musst das nicht sofort verstehen: erstelle einfach einen Textfilter in dieser Spalte, wähle Regulärer Ausdruck und erstelle hier deinen Ausdruck. OpenRefine wendet deinen regulären Ausdruck in Echtzeit an und zeigt dir die zutreffenden Zeilen an. Indem du umkehren auswählst, kannst du dir auch die Zeilen anzeigen lassen, die nicht deinem regulären Ausdruck entsprechen. Dies sind Zeilen, die keinen Wert enthalten oder in denen die Fundstelle fehlt, sodass wir diese einfach von unserem Import ausnehmen können.

 
Mengen aus einer gemeinsamen Zelle in Python extrahieren.

Nun, da wir einen regulären Ausdruck gefunden haben, der das Format dieser Zellen abbildet, können wir die Inhalte in zwei Teile trennen.[1] Zunächst fügen wir Gruppen zum Ausdruck hinzu, sodass wir die Teile extrahieren können: ([\d.]+) \((\d{4})\). Die erste Gruppe bildet den Wert ab, die zweite das Jahr. Nun können wir für jede Gruppe neue Spalten erstellen. Klicke auf die Spalte Fahrgastfahrten, wähle Spalte bearbeitenSpalte basierend auf dieser Spalte hinzufügen. Wähle Python / Jython als Ausdruckssprache und nutze den folgenden Ausdruck:

import re # dies importiert das Modul des regulären Ausdrucks
match = re.search(r'([\d.]+) \((\d{4})\)', value) # dies gleicht den Wert gegen unseren regulären Ausdruck ab
return match.group(1) # dies extrahiert die erste Gruppe von Zeichen des Treffers
 
Übersetzung der Mengen in Millionen.

Gib der Spalte einen Namen (wie Fahrgastfahrten_Menge) und bestätige. Wiederhole diesen Befehl für die Erstellung der zweiten Spalte Fahrgastfahrten_Jahr. Sind wir schon fertig? Noch nicht ganz, da die Überschrift der Spalte sagt, dass die Fahrgastfahrten in Millionen angegeben sind, sodass wir unsere Werte dementsprechend multiplizieren müssen. Eine einfache Möglichkeit, um dies zu tun ist, die Zellen dieser Spalte zu transformieren (Zellen bearbeitenTransformieren) und am Ende des Wertes mit "e6" zu verketten (dies ist die technische Angabe für Mengen in Millionen).

Ein Schema erstellen

Da nun unsere Daten bereinigt sind, können wir wie gewöhnlich ein Wikidata-Schema erstellen. Der erste Schritt ist, herauszufinden, welche Eigenschaften genutzt werden. Gehe zu dem Datenobjekt eines U-Bahn-Systems wie Algiers Metro (Q728045) und fange an, eine neue Aussage mit der Eigenschaft "Fahrgastfahrten" hinzuzufügen. Wikidata schlägt patronage (P3872) vor, was nach Durchsicht der Eigenschaftsseite angemessen erscheint. Die Nutzungshinweise der Eigenschaft schlagen die Nutzung des Qualifikators point in time (P585) vor, um das Kalenderjahr anzugeben, in dem die Fahrgastzahl ermittelt wurde.

Klicke auf WikidataWikidata-Schema bearbeiten und erstelle ein Schema, das diese Eigenschaften nutzt. Dank des Wikitabellen-Importeurs können wir die Fundstellen-URLs aus der Spalte auf der rechten Seite nutzen, um Wikidata-Fundstellen zu erstellen. Es kann außerdem hilfreich sein, aufzunehmen, dass wir die Daten aus Wikipedia importiert haben: hierfür können wir Wikimedia import URL (P4656) nutzen und dabei einen Permalink auf die Version, die wir für die Extraktion genutzt haben, angeben (wie https://en.wikipedia.org/w/index.php?title=List_of_metro_systems&oldid=830817609 ).

 
Wikidata mit OpenRefine bearbeiten - Anleitung Listeria Invers. Einfaches Schema, um Informationen zu Fahrgastfahrten auf Wikidata zu ergänzen.

Natürlich können wir andere Spalten ähnlich bearbeiten und zu dem Schema hinzufügen, sodass sie zusammen nach Wikidata hochgeladen werden können. Beispielsweise kann mit date of official opening (P1619) das Eröffnungsdatum hinzugefügt werden. Wenn du mit deinem Schema zufrieden bist, kannst du die Bearbeitungen wie gewöhnlich ausführen, entweder direkt über OpenRefine mit dem Befehl Nach Wikidata hochladen oder über QuickStatements.

 
Wikidata mit OpenRefine bearbeiten - Anleitung Listeria Invers. Vorschau der Bearbeitungen zum Hinzufügen von Informationen zu Fahrgastfahrten.

Bearbeitungshistorie

Die in dieser Anleitung beschriebenen Befehle können erneut auf das Projekt angewendet werden, indem die folgende JSON-Bearbeitungshistorie genutzt wird. Sie ist natürlich spezifisch auf die Struktur dieser bestimmten Tabelle zugeschnitten.

Anmerkungen

  1. Mehr Hintergrundinformationen zur Nutzung regulärer Ausdrücke in OpenRefine im OpenRefine-Wiki.