Workshop - Reconciling mit OpenRefine und der GND

Folie - Reconciling mit OpenRefine und der GND Folie - Reconciling mit OpenRefine und der GND

Wir nutzen die Daten der GND über OpenRefine, gleichen damit Daten ab und laden Daten nach.

Reconciling in der OpenRefine Dokumentation.

Dieser Workshop wurde erstellt mit OpenRefine Version 3.5.0.
Dieser Workshop wurde zuletzt getestet mit OpenRefine Version 3.8.4.

Hintergrund

Die Gemeinsame Normdatei (GND) wird als Linked Open Data (LOD) angeboten. Das ermöglicht uns Daten mit eindeutigen Identifikatoren (GND-ID) zu verknüpfen.

Mit OpenRefine können wir mit der GND zwei Dinge tun:

  1. basierend auf GND-IDs weitere Daten nachladen (Aufgabe 1).
  2. via Reconciliation Service GND-IDs für Entitäten suchen (Aufgabe 2).

Kurzer Exkurs zur GND als LOD

Die GND als LOD bedeutet, dass die Daten nicht in einer klassischen Datenbank angeboten werden, sondern mit einer Ontologie versehen wurden. Die Hierarchie der Ontologie ist in Abbildung 1 visualisiert.

Visualisierung der GND Ontologie, mit den für uns relevanten Bereichen Personen, Orte und Dinge.
Visualisierung der GND Ontologie, mit den für uns relevanten Bereichen Personen, Orte und Dinge.

Neben den Typen der Objekte in der GND Ontologie gibt es auch vordefinierte Verbindungen zwischen diesen Objekten. Ein Beispiel ist im folgenden Diagramm für einen Teil der GND-Daten für Winfried Kretschmann gezeigt. Beispielsweise gibt es die bidirektionale Verbindung hasSpouse, zwischen ihm und Gerlinde Kretschmann. Oder die unidirektionale Verbindung placeOfBirth zwischen der Person Winfried Kretschmann und dem Ort Spaichingen.

flowchart LR subgraph place["fa:fa-map-marked Place"] spaichingen["Spaichingen"] laiz["Laiz"] end subgraph person["fa:fa-user Person"] kretschmann_winfried["Kretschmann, Winfried"] kretschmann_gerlinde["Kretschmann, Gerlinde"] end subgraph shss["fa:fa-tag Subject heading senso stricto"] politiker["Politiker"] politikerin["Politikerin"] lehrer["Lehrer"] lehrerin["Lehrerin"] end kretschmann_winfried <-- hasSpouse --> kretschmann_gerlinde kretschmann_winfried -- professionOrOccupation --> politiker & lehrer kretschmann_gerlinde -- professionOrOccupation --> lehrerin kretschmann_winfried -- placeOfBirth --> spaichingen kretschmann_gerlinde -- placeOfBirth --> laiz kretschmann_winfried -- placeOfActivity --> laiz lehrer <-- relatedTerm --> lehrerin politiker <-- relatedTerm --> politikerin

Optional kann in einer Ontologie festgelegt werden, dass zum Beispiel eine Verbindung wie placeOfBirth nur zwischen einer Person und einem Ort existieren kann.

Vorbereitung

Datensatz laden

Wir erstellen eine neues Projekt mit dem Namen “Kretschmann Kabinett III” aus der Datei 06_kretschmann-kabinett-iii.csv.

💾 Wir benötigen die folgende Datei (Rechtsklick und “Ziel speichern unter…”):

Kretschmann III als CSV

Diese Datei besteht nur aus einer Spalte mit GND-IDs.

Reconciliation Service hinzufügen

Die GND selbst wird von der DNB aktuell als kompletter Datensatz zur Verfügung gestellt und nicht als Service. Daher nutzen wir den GND Service von lobid. Über diesen kann die GND via einer Online-Oberfläche durchsucht werden. Es gibt aber auch einen so genannten Reconciliation Service, mit dem direkt via OpenRefine Daten mit den Daten in der GND abgeglichen werden können.

Dafür fügen wir den Service zu OpenRefine hinzu. Im Spaltenmenü finden wir den in Abbildung 2 gezeigten Dialog über “GND-ID" "Reconcile" "Start reconciling”.

Bildschirmfoto von OpenRefine Reconciliation Services.
Bildschirmfoto von OpenRefine Reconciliation Services.

Über “Add Standard Service” geben wir die folgende URL ein:

https://lobid.org/gnd/reconcile/

Aufgabe 1: Daten nachladen

Wir wollen die folgenden Spalten zu unserem Datensatz aus der GND ergänzen:

  • Name der Person
  • Geburtsdatum
  • Geburtsort
  • GND-ID des Geburtsortes
  • Liste der Berufe der Person

Dafür nutzen wir im Spaltenmenü der Spalte “GND-ID” die Funktion “GND-ID" "Reconcile" "Use values as identifiers” und wählen den Service “GND reconciliation for OpenRefine” aus.

Anschließend können wir ebenfalls über das Spaltenmenü mit “GND-ID" "Edit column" "Add column from reconciled values…” weitere Daten nachladen.

Das Ergebnis sieht dann ungefähr wie in Abbildung 3 aus.

Bildschirmfoto von OpenRefine Ergebnis.
Bildschirmfoto von OpenRefine Ergebnis.
Hinweise:

  • Die Spaltennamen stimmen nicht unbedingt mit der Bezeichnung in der GND überein.
  • Die GND-ID des Geburtsortes erhalten wir über die Spalte “Geburtsort”.
  • Sollten Sie für Zeilen keine Ergebnisse erhalten, prüfen Sie ob sich ggf. noch Leerzeichen im Datensatz befinden.

Aufgabe 2: Daten verknüpfen

Hierfür verwenden wir den Gurs-Datensatz, der uns über den kompletten Workshop begleitet.

In der Spalte “Geburtsort” sind nicht alle Orte mit GND-IDs verknüpft. Wir filtern diese Orte und verknüpfen sie mit GND-IDs.

Dafür nutzen wir im Spaltenmenü der Spalte “Geburtsort" "Reconcile" "Start reconciling” und wählen den Service “GND reconciliation for OpenRefine” aus.

Bildschirmfoto des gefilterten Gurs Datensatzes mit Reconciliation Vorschlägen.
Bildschirmfoto des gefilterten Gurs Datensatzes mit Reconciliation Vorschlägen.

Die GND-ID können wir anschließend wie in Aufgabe 1 als extra Spalte hinzufügen. Anschließend verbinden wir die neue Spalte “GND-Nummer” mit der Spalte “Geburtsort (GND-ID)” (siehe Aufgabe 5 in 03 Daten mit OpenRefine umwandeln).

Fazit

Durch die Implementierung und Integration des Reconciliation Service API in OpenRefine und der GND von dem hbz gestaltet sich der Abgleich von ganzen Datensätzen mit der GND auch für technische Laien als machbar. Im Workshop für Fortgeschrittene besprechen wir, wie wir die Treffer beim Abgleich mit dem lobid API verbessern können.


Im nächsten Teil beschäftigen wir uns mit dem Abgleich von Daten in OpenRefine mit Wikidata.

Benjamin Rosemann
Benjamin Rosemann
Data Scientist

Ich evaluiere KI- und Software-Lösungen und integriere sie in den Archivalltag.

Ähnliches