Reconciling

openrefinehistHub befasst sich in einer Blogserie mit der Aufbereitung und Anreicherung von Daten in OpenRefine. Alle Beiträge der Serie werden in einer Übersicht gesammelt.

In den bisherigen Blogbeiträgen dieser Serie haben wir uns mit dem Strukturieren, Reinigen und Aufbereiten von Daten befasst. Ein grosser Vorteil von OpenRefine blieb dabei aussen vor: die Möglichkeit, externe Datenbestände mit den eigenen Daten abzugleichen, das Reconciling. Darum geht es in diesem Beitrag.

Ein häufig genutzter und gut funktionierender Recionciliation Service ist Wikidata. Dieser Service ist stadardmässig eingebunden. Es ist möglich, andere Services wie beispielsweise VIAF auf der eigenen OpenRefine-Instanz einzubinden. Auch die GND kann so abgefragt werden. Eine Anleitung zur GND-Abfrage und zur Ergänzung von Reconciliation-Services gibt es bei lobid. In der histHub-Online-Instanz werden für HistorikerInnen relevante Dienste eingebunden sein. In dieser Anleitung werden wir das Reconciling mit Wikidata vorstellen.

Wikidata

Vor der Erklärung des eigentlichen Reconciling verschaffen wir uns eine Übersicht über Wikidata. Alles, was in Wikidata aufgenommen wird, erhält eine eindeutige ID. Wikidata verfügt über zwei Arten von IDs:

Das Bild zeigt den Beginn der Statements zu Q11633 Fotografie. Die linke Spalte enthält Eigenschaften, die rechte die entsprechenden Einträge (jeweils mit Q-Nummer) zu den Eigenschaften. Die P-Nummer der Eigenschaften wird bei einem Mouseover angezeigt, weitere Details sind bei einem Klick auf die Eigenschaft zu erfahen.

Für das Reconciling befassen wir uns mit Q-Nummern. Beim Ergänzen der eigenen Daten kommen dann die Eigenschaften ins Spiel.

Reconciling starten

Wie bei den meisten Transformationen ist es auch hier sinnvoll, eine Kopie der Spalte anzulegen (Edit column – Add column based on this column; wobei der Wert im GREL-Fenster schlicht «value» bleibt). So bleiben die ursprünglichen Daten unverändert erhalten.

openrefine reconciling menu

Das Reconciling wird jeweils über eine Spalte ausgeführt und auch dort aufgerufen. Im sich darauf öffnenden Fenster kann ein Reconciliation Service gewählt werden.

openrefine reconciling choose service

In diesem Beispiel ist nur Wikidata eingebunden. Werden weitere Services hinzugefügt, erscheinen sie in der Liste. Nach einem Klick auf „Start Reconciliation“ sucht der Service, hier Wikidata, nach möglichen Entitäten. Im gezeigten Beispiel haben wir die Spalte „Land“ im Projekt mit den Metadaten von Annemarie Schwarzenbach gewählt.

openrefine reconciling choose entity

Wikidata bietet hier verschiedene Typen an, zu denen die Daten gehören könnten. In unserem Beispiel wählen wir den ersten Vorschlag «country» und klicken auf Start Reconciling. Es kann auch «no particular type» reconciled werden. Diese Auswahl verlängert den Prozess jedoch erheblich, und es können sehr unpassende Ergebnisse zurück kommen. Während dem Reconciling wird der Fortschritt angezeigt.

openrefine reconciling facets

Nach dem Reconciling öffnen sich automatisch zwei Facetten, ausserdem erscheint in der Spaltenüberschrift ein Balken. Alle diese Instrumente zeigen an, wie viele der Einträge eindeutig zugewiesen wurden. In unserem Beispiel ist das rund die Hälfte. Die zugewiesenen Einträge haben einen Link erhalten, der auf das Wikidata-Objekt zeigt.

Reconciling überarbeiten

Wählen wir in der Facette «judgement» den Wert «none», zeigt OpenRefine alle Einträge an, die nicht eindeutig gematched werden konnten. Diese werden nun bearbeitet. Die Vorschläge zeigen jeweils eine Vorschau, das Wikidata-Objekt kann auch geöffnet werden. Im Vorschau-Fenster kann diese einzelne Zelle oder alle identischen Zellen mit dem entsprechenden Wikidata-Eintrag verknüpft werden. «Create new topic» versteckt die Links und schafft eine neue Facette «new» unter «judgement». So können Matching-Entscheide verschoben werden, ohne dass die Vorschläge verloren gehen.

Unter «Search for match» verbergen sich weitere Optionen: So kann es sein, dass ein Eintrag in der eigenen Tabelle nicht gematched werden soll. Das ist mit «Don’t reconcile cell» möglich. Dabei verschwinden die Links. Sollen diese Einträge doch noch reconciled werden, muss ein neuer Prozess gestartet werden. Im Suchfeld kann eine Wikidata-ID eingegeben werden, wenn der passende Match nicht vorgeschlagen wurde. Wikidata-IDs lassen leicht erkennen ob es sich um ein Objekt handelt oder um eine Eigenschaft: Objekt-IDs beginnen Q, Eigenschafts-IDs mit P. Beim Reconciling werden jeweils Objekte, also Q-Nummern abgefragt. Beim manuellen Einfügen einer ID ist also eine Q-Nummer zu verwenden.

Wie dieser Prozess der manuellen Überprüfung abgekürzt werden kann, zeigen wir in einem kommenden Beitrag.

Ergänzen der eigenen Daten

Nun haben wir eine Spalte, in der sich Links auf Wikidata befinden. Über diese Links möchten wir nun Informationen aus Wikidata holen, um unsere Einträge zu ergänzen. Dazu gibt es verschiedene Möglichkeiten. Welche gewählt wird hängt auch davon ab, was ergänzt werden soll.

Wollen wir die Wikidata-IDs (Q-Nummern) der gematcheten Einträge in einer neuen Spalte einfügen, erstellen wir eine neue Spalte aus der Spalte mit den Reconciling-Daten. Dort geben wir den Befehl

cell.recon.match.id

ein. Für die einem Wikidata-Eintrag zugeordneten Inhalte wird nun eine Q-Nummer in der neuen Spalte angezeigt. So haben wir unsere Daten auf einfache Weise mit einer externen ID ergänzt. Oft reicht jedoch eine solche ID nicht, und wir wollen Informationen aus dem Datensatz heraus greifen.

Manuelle Abfrage:

Dazu nutzen wir die Links, die beim Reconciling generiert wurden. Wir fügen eine Spalte mit «add column by URL» zu der Spalte hinzu, die wir reconciled haben. Im Fall von Wikidata wird der Link folgendermassen aussehen:

"https://tools.wmflabs.org/openrefine-wikidata/en/fetch_values?item=Q3068626&prop=P463&label=true"

Bis zum ersten «?» bleibt der Link gleich, danach werden die Angaben spezifiziert, die wir ausgeben wollen:

  • item= die Wikidata-ID für das zu holende Element. Da wir eine ganze Spalte abgleichen und die Links darin sind ist das «cell.recon.match.id». Wollen wir den Abgleich über die Spalte mit den Q-Nummern statt über diejenige mit den Links machen, wird item=“+value+“ eingegeben.
  • prop= hier wird die ID der zu holenden Eigenschaft angegeben. Bei Wikidata ist das eine mit P beginnende Nummer. Die P-Nummer lässt sich herausfinden, indem in Wikidata die entsprechende Eigenschaft (z.B. «coordinate location») gewählt wird, wo sie hinter der Bezeichnung der Eigenschaft in Klammern angezeigt wird.
  • label=false oder label=true definiert, ob die ID oder die ausformulierte Eigenschaft geholt wird. Die Sprache orientiert sich dabei am Sprachenkürzel in der URL (im Beispiel oben Englisch)
  • flat=true wird gewählt, wenn nicht das ganze JSON sondern nur der Wert geholt werden sollen.

In unserem Beispiel wollen wir neben der Wikidata-ID auch noch die GND-ID abrufen. Diese hat auf Wikidata die Eigenschaft P227. Der Befehl lautet also:

"https://tools.wmflabs.org/openrefine-wikidata/en/fetch_values?item="+cell.recon.match.id+"&prop=P227&label=true&flat=true"

Die ““ sind obligatorisch. Oben rechts im Reconciling-Fenster kann eingestellt werden, wie schnell die Abfragen gemacht werden. Standardmässig sind hier 5000 Millisekunden angegeben. Für Wikidata reichen 1500 oder 2000 Millisekunden.

openrefine add column by url

Abfrage über die Oberfläche

Ab Version 2.8 bietet OpenRefine auch die Möglichkeit, Daten über die Oberfläche abzurufen. Dazu im Menü der reconcilten Spalte «Edit column» und dann «Add columns from reconciled values» wählen.

openrefine reconciling add columns from reconciled values

Darauf öffnet OpenRefine ein Fenster, in dem möglicherweise passende Eigenschaften ausgewählt werden können. Diese werden dann als neue Spalten hinzugefügt.

openrefine reconciling add columns from reconciled values

Im Textfeld oben links kann eine andere, nicht angebotene P-Nummer angegeben werden. Die Vorschau erleichert die Auswahl der passenden Eigenschaft.

So ermöglicht es OpenRefine, die eigenen Daten anhand von frei verfügbaren Beständen zu ergänzen. Im nächsten Beitrag der Blogserie konkretisieren wir das Reconciling anhand eines Beispiels mit Geodaten.

Fragen, Anregungen oder Wünsche zu histHub oder zur Blogserie zu OpenRefine nehmen wir gerne per Mail entgegen.