<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SPARQL | FDMLab@LABW</title><link>https://fdmlab.landesarchiv-bw.de/tag/sparql/</link><atom:link href="https://fdmlab.landesarchiv-bw.de/tag/sparql/index.xml" rel="self" type="application/rss+xml"/><description>SPARQL</description><generator>Wowchemy (https://wowchemy.com)</generator><language>de-de</language><lastBuildDate>Tue, 07 Mar 2023 00:00:00 +0000</lastBuildDate><image><url>https://fdmlab.landesarchiv-bw.de/media/sharing.jpg</url><title>SPARQL</title><link>https://fdmlab.landesarchiv-bw.de/tag/sparql/</link></image><item><title>GND Hierarchieinformationen zur Verbesserung der Erschließung</title><link>https://fdmlab.landesarchiv-bw.de/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/</link><pubDate>Tue, 07 Mar 2023 00:00:00 +0000</pubDate><guid>https://fdmlab.landesarchiv-bw.de/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/</guid><description>&lt;p>In der Gemeinsamen Normdatei (GND) sind für Sachbegriffe Hierarchieinformationen enthalten.
In diesem Blogbeitrag berichten wir, wie wir diese Informationen verwenden, um die Verschlagwortung von relevanten Akten für die Provenienzforschung zu verbessern.&lt;/p>
&lt;p>Wir berichteten bereits, wie wir ein &lt;a href="https://fdmlab.landesarchiv-bw.de/post/2022-09-ner-modell-mit-gnd-starthilfe-trainieren/">Named-entity Recognition Modell mit Starthilfe durch die Gemeinsame Normdatei trainieren&lt;/a> und wie wir die dadurch extrahierten &lt;a href="https://fdmlab.landesarchiv-bw.de/post/2023-02-ner-und-gnd-zur-verbesserung-der-erschliessung/">Sachbegriffe normalisieren und mit der GND Sachbegriffen verknüpfen&lt;/a>.&lt;/p>
&lt;p>In diesem Blogbeitrag geht es um den letzten Workflowschritt, nämlich die Anreicherung von Oberbegriffen aus der GND zur Verbesserung der Verschlagwortung. &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;div class="mermaid">---
title: Workflow
config:
look: handDrawn
theme: neutral
---
flowchart LR
filtern["1. Filtern"]
ner["2. NER"]
normalisieren["3. Normalisieren"]
gnd_abgleich["4. GND Abgleich"]
begriffe_nachladen["5. Oberbegriffe"]
filtern --> ner --> normalisieren --> gnd_abgleich --> begriffe_nachladen
style begriffe_nachladen stroke:#000,stroke-width:4px
&lt;/div>
&lt;h2 id="schritt-5-oberbegriffe-nachladen">Schritt 5: Oberbegriffe nachladen&lt;/h2>
&lt;p>Wir haben 1.753 Begriffe aus der GND verlinkt. Aus diesen wollen wir basierend auf den Hierarchieinformationen in der GND ein hierarchisches Netzwerk aufbauen. Dafür müssen für die 1.753 Begriffe alle verknüpften Oberbegriffe sowie deren Oberbegriffe usw., nachgeladen werden.
Da das potentiell ein recht großes Netzwerk werden könnte, haben wir das Netzwerk mit einer lokalen Kopie der &lt;a href="https://fdmlab.landesarchiv-bw.de/post/2022-12-gnd-in-lokale-datenbank-laden-reloaded/">GND in ihrer LOD-Form in Oxigraph&lt;/a> berechnet.
Dafür wurden mit SPARQL die relevanten Knoten und Verbindungen extrahiert, anschließend mit &lt;a href="https://networkx.org/" target="_blank" rel="noopener">NetworkX&lt;/a> zu einem Netzwerk zusammengefügt, und mit &lt;a href="https://pyvis.readthedocs.io/en/latest/" target="_blank" rel="noopener">PyVis&lt;/a> visualisiert.&lt;/p>
&lt;p>Konkret haben wir alle Knoten vom Typ &lt;a href="https://d-nb.info/standards/elementset/gnd#SubjectHeading" target="_blank" rel="noopener">SubjectHeading&lt;/a> und den entsprechenden Subtypen geladen.
Als Verbindungen haben wir
&lt;a href="https://d-nb.info/standards/elementset/gnd#broaderTerm" target="_blank" rel="noopener">broaderTerm&lt;/a>,
&lt;a href="https://d-nb.info/standards/elementset/gnd#broaderTermGeneral" target="_blank" rel="noopener">broaderTermGeneral&lt;/a>,
&lt;a href="https://d-nb.info/standards/elementset/gnd#broaderTermGeneric" target="_blank" rel="noopener">broaderTermGeneric&lt;/a>,
&lt;a href="https://d-nb.info/standards/elementset/gnd#broaderTermInstantial" target="_blank" rel="noopener">broaderTermInstantial&lt;/a>,
&lt;a href="https://d-nb.info/standards/elementset/gnd#broaderTermPartitive" target="_blank" rel="noopener">broaderTermPartitive&lt;/a>,
&lt;a href="https://d-nb.info/standards/elementset/gnd#broaderTermWithMoreThanOneElement" target="_blank" rel="noopener">broaderTermWithMoreThanOneElement&lt;/a> und
&lt;a href="https://d-nb.info/standards/elementset/gnd#complexSeeReferenceSubject" target="_blank" rel="noopener">complexSeeReferenceSubject&lt;/a>
verwendet.&lt;/p>
&lt;p>Dieses Netzwerk verwendeten wir zum einen für unsere Analysen.
Zum anderen extrahierten wir daraus einen &lt;strong>Teilgraphen&lt;/strong> mit den für uns relevanten Begriffen.&lt;/p>
&lt;div class="alert alert-warning">
&lt;div>
Die folgenden Analysen basieren auf der Linked Open Data Variante der GND.
Abweichungen von den tatsächlichen Daten in der GND sind daher möglich.
&lt;/div>
&lt;/div>
&lt;figure id="figure-bildschirmfoto-der-ersten-version-unseres-gnd-teilgraphen">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Bildschirmfoto der ersten Version unseres GND Teilgraphen." srcset="
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/screenshot-netzwerk_huea75dcb3b215d90b33a4ae6210b59eec_315371_8dbe8506096f42cf7689d17d81fc6728.webp 400w,
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/screenshot-netzwerk_huea75dcb3b215d90b33a4ae6210b59eec_315371_e16305a7289db35e1e65ca37485bcef5.webp 760w,
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/screenshot-netzwerk_huea75dcb3b215d90b33a4ae6210b59eec_315371_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/screenshot-netzwerk_huea75dcb3b215d90b33a4ae6210b59eec_315371_8dbe8506096f42cf7689d17d81fc6728.webp"
width="760"
height="711"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Bildschirmfoto der ersten Version unseres GND Teilgraphen.
&lt;/figcaption>&lt;/figure>
&lt;p>In dem von uns in Abbildung 1 gezeigten, extrahierten Teilgraphen sind zwar hierarchische Strukturen zu erkennen.
Insgesamt sind jedoch sehr viele Einzelknoten um den Wurzelknoten herum zu sehen, und die üblichen Algorithmen zur Darstellung von Hierarchien weigerten sich das vermeintlich hierarchische Netzwerk verständlich darzustellen.&lt;/p>
&lt;p>Im Folgenden besprechen wir die Probleme, über die wir gestolpert sind und prüfen, ob einige (problematische) Eigenschaften unseres extrahierten Teilgraphen auch im Gesamtnetzwerkes aller Sachbegriffe zu finden sind.&lt;/p>
&lt;h3 id="typen-von-oberbegriffen">Typen von Oberbegriffen&lt;/h3>
&lt;figure id="figure-bildschirmfoto-der-unterklassen-von-authority-resources-in-der-gnd-ontologie">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Bildschirmfoto der Unterklassen von *Authority Resources* in der GND Ontologie." srcset="
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/gnd-ontology-authority-resources_huc2fd5ef60259cb939e2f1be69042268b_197325_07d793a52872355986c9a4a128a6d207.webp 400w,
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/gnd-ontology-authority-resources_huc2fd5ef60259cb939e2f1be69042268b_197325_58d747c9bc3d31060d41f13fc7ff2d8f.webp 760w,
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/gnd-ontology-authority-resources_huc2fd5ef60259cb939e2f1be69042268b_197325_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/gnd-ontology-authority-resources_huc2fd5ef60259cb939e2f1be69042268b_197325_07d793a52872355986c9a4a128a6d207.webp"
width="760"
height="578"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Bildschirmfoto der Unterklassen von &lt;em>Authority Resources&lt;/em> in der GND Ontologie.
&lt;/figcaption>&lt;/figure>
&lt;p>In Abbildung 2 sind noch einmal die Unterklassen (Typen) von Normdatenressourcen (&lt;em>Authority Resource&lt;/em>) in der GND Ontologie gezeigt.
Wir arbeiten mit Schlagworten (&lt;em>SubjectHeading&lt;/em>) und den zugehörigen Unterklassen.&lt;/p>
&lt;blockquote>
&lt;p>Die Diagramme wurden mit unserer experimentellen &lt;a href="https://fdmlab.landesarchiv-bw.de/experiment/gnd-hierarchy-vis/">Webanwendung zur GND Hierarchie Visualisierung von Sachbegriffen&lt;/a> erstellt. Hier die Legende:&lt;/p>
&lt;/blockquote>
&lt;div class="mermaid">flowchart LR
initial(["Fokussierter Begriff"]):::initial
broader["Oberbegriff"]
initial --> broader
broaderMarked["Oberbegriff mit anderem Typ"]:::nonHeading
initial --> broaderMarked
narrower["Unterbegriff"]
narrower --> initial
similar["#Auml;hnlicher Begriff"]
initial &lt;-.-> similar
broader &lt;-.-> similar
broaderMarked &lt;-.-> similar
classDef default fill:#FFF,stroke:#0088c9,stroke-width:3px,color:#000;
classDef category fill:#FFF,stroke:#1fbeb8,stroke-width:3px,color:#000;
classDef initial fill:#FFF,stroke:#4dbd05,stroke-width:3px,color:#000;
classDef nonHeading fill:#FFF,stroke:#F04D0E,stroke-width:3px,color:#000;
&lt;/div>
&lt;p>Wir hatten im &lt;a href="https://fdmlab.landesarchiv-bw.de/post/2023-02-ner-und-gnd-zur-verbesserung-der-erschliessung/">letzten Blogbeitrag&lt;/a> schon den &lt;em>Perserteppich&lt;/em> erwähnt, der über &lt;code>complexSeeReferenceSubject&lt;/code> mit den Begriffen &lt;em>Teppich&lt;/em> und &lt;em>Iran&lt;/em> verknüpft ist.
Im folgenden Diagramm haben wir einige weitere Beispiele für Begriffe, die über Komposita definiert sind.
Darüber werden als Oberbegriffe auch GND Konzepte nachgeladen, die &lt;strong>nicht&lt;/strong> vom Typ &lt;a href="https://d-nb.info/standards/elementset/gnd#SubjectHeading" target="_blank" rel="noopener">Subject heading&lt;/a> oder einem Untertypen davon sind.
Diese können zum Beispiel vom Typ oder einem Untertypen von
&lt;a href="https://d-nb.info/standards/elementset/gnd#ConferenceOrEvent" target="_blank" rel="noopener">Conference or Event&lt;/a>,
&lt;a href="https://d-nb.info/standards/elementset/gnd#CorporateBody" target="_blank" rel="noopener">Corporate Body&lt;/a>,
&lt;a href="https://d-nb.info/standards/elementset/gnd#Person" target="_blank" rel="noopener">Person&lt;/a>,
&lt;a href="https://d-nb.info/standards/elementset/gnd#PlaceOrGeographicName" target="_blank" rel="noopener">Place or geographic name&lt;/a> oder
&lt;a href="https://d-nb.info/standards/elementset/gnd#Work" target="_blank" rel="noopener">Work&lt;/a> sein.&lt;/p>
&lt;div class="mermaid">flowchart LR
7505070-5(["Perserteppich"]):::initial
click 7505070-5 href "https://lobid.org/gnd/7505070-5" "7505070-5" _blank
4059482-8["Teppich"]
click 4059482-8 href "https://lobid.org/gnd/4059482-8" "4059482-8" _blank
4027653-3["Iran"]:::nonHeading
click 4027653-3 href "https://lobid.org/gnd/4027653-3" "4027653-3" _blank
7608344-5(["Venustempel"]):::initial
click 7608344-5 href "https://lobid.org/gnd/7608344-5" "7608344-5" _blank
11876800X["Venus, Göttin"]:::nonHeading
click 11876800X href "https://lobid.org/gnd/11876800X" "11876800X" _blank
4059416-6["Tempel"]
click 4059416-6 href "https://lobid.org/gnd/4059416-6" "4059416-6" _blank
7509659-6(["Osterweiterung / Europäische Union"]):::initial
click 7509659-6 href "https://lobid.org/gnd/7509659-6" "7509659-6" _blank
4128080-5["Erweiterung"]
click 4128080-5 href "https://lobid.org/gnd/4128080-5" "4128080-5" _blank
4075739-0["Osteuropa"]:::nonHeading
click 4075739-0 href "https://lobid.org/gnd/4075739-0" "4075739-0" _blank
5098525-5["Europäische Union"]:::nonHeading
click 5098525-5 href "https://lobid.org/gnd/5098525-5" "5098525-5" _blank
7505070-5 -->|complexSeeReferenceSubject| 4059482-8
7505070-5 -->|complexSeeReferenceSubject| 4027653-3
7608344-5 -->|complexSeeReferenceSubject| 11876800X
7608344-5 -->|complexSeeReferenceSubject| 4059416-6
7509659-6 -->|complexSeeReferenceSubject| 4128080-5
7509659-6 -->|complexSeeReferenceSubject| 4075739-0
7509659-6 -->|complexSeeReferenceSubject| 5098525-5
classDef default fill:#FFF,stroke:#0088c9,stroke-width:3px,color:#000;
classDef category fill:#FFF,stroke:#1fbeb8,stroke-width:3px,color:#000;
classDef initial fill:#FFF,stroke:#4dbd05,stroke-width:3px,color:#000;
classDef nonHeading fill:#FFF,stroke:#F04D0E,stroke-width:3px,color:#000;
&lt;/div>
&lt;p>Dies betrifft jedoch nicht nur die Verbindungen vom Typ &lt;code>complexSeeReferenceSubject&lt;/code>.
In den folgenden Diagrammen ist das Beispiel der &lt;em>Thora&lt;/em> und des islamische Feiertags &lt;em>Maulid an-Nabi&lt;/em> gezeigt.
Hier werden jeweils Sachbegriffe mit &lt;em>Werken&lt;/em> über Verbindungen vom Typ &lt;code>broaderTermGeneral&lt;/code> verknüpft.&lt;/p>
&lt;div class="mermaid">flowchart LR
4226122-3(["Thora"]):::nonHeading
click 4226122-3 href "https://lobid.org/gnd/4226122-3" "4226122-3" _blank
7849405-9["Thorakrone"]
click 7849405-9 href "https://lobid.org/gnd/7849405-9" "7849405-9" _blank
4590779-1["Thorakapsel"]
click 4590779-1 href "https://lobid.org/gnd/4590779-1" "4590779-1" _blank
4457982-2["Thorawimpel"]
click 4457982-2 href "https://lobid.org/gnd/4457982-2" "4457982-2" _blank
4617346-8["Thoramantel"]
click 4617346-8 href "https://lobid.org/gnd/4617346-8" "4617346-8" _blank
7526823-1["Thorazeiger"]
click 7526823-1 href "https://lobid.org/gnd/7526823-1" "7526823-1" _blank
4232170-0["Thoraschrein"]
click 4232170-0 href "https://lobid.org/gnd/4232170-0" "4232170-0" _blank
4185330-1["Thorarolle"]
click 4185330-1 href "https://lobid.org/gnd/4185330-1" "4185330-1" _blank
7849405-9 -->|broaderTermGeneral| 4226122-3
4590779-1 -->|broaderTermGeneral| 4226122-3
4457982-2 -->|broaderTermGeneral| 4226122-3
4617346-8 -->|broaderTermGeneral| 4226122-3
7526823-1 -->|broaderTermGeneral| 4226122-3
4232170-0 -->|broaderTermGeneral| 4226122-3
4185330-1 -->|broaderTermGeneral| 4226122-3
classDef default fill:#FFF,stroke:#0088c9,stroke-width:3px,color:#000;
classDef category fill:#FFF,stroke:#1fbeb8,stroke-width:3px,color:#000;
classDef initial fill:#FFF,stroke:#4dbd05,stroke-width:3px,color:#000;
classDef nonHeading fill:#FFF,stroke:#F04D0E,stroke-width:3px,color:#000;
&lt;/div>
&lt;div class="mermaid">flowchart LR
7566591-8(["Maulid an-Nabi"]):::initial
click 7566591-8 href "https://lobid.org/gnd/7566591-8" "7566591-8" _blank
4310274-8["Maulid"]:::nonHeading
click 4310274-8 href "https://lobid.org/gnd/4310274-8" "4310274-8" _blank
4121583-7["Religiöses Fest"]
click 4121583-7 href "https://lobid.org/gnd/4121583-7" "4121583-7" _blank
7566591-8 -->|broaderTermGeneral| 4310274-8
7566591-8 -->|broaderTermInstantial| 4121583-7
classDef default fill:#FFF,stroke:#0088c9,stroke-width:3px,color:#000;
classDef category fill:#FFF,stroke:#1fbeb8,stroke-width:3px,color:#000;
classDef initial fill:#FFF,stroke:#4dbd05,stroke-width:3px,color:#000;
classDef nonHeading fill:#FFF,stroke:#F04D0E,stroke-width:3px,color:#000;
&lt;/div>
&lt;p>Nach unseren Analysen kommen wir auf 558 Knoten mit mindestens einem Oberbegriff, der &lt;strong>nicht&lt;/strong> vom Typ &lt;em>SubjectHeading&lt;/em> ist.
Das ist bei 204.560 Sachbegriffen ein recht kleiner Anteil von circa 0,27 Prozent.
Die entsprechenden Oberbegriffe mit anderem Typ müssen beim Netzwerkaufbau und der anschließenden Analyse jedoch mit berücksichtigt werden.&lt;/p>
&lt;h3 id="mehrere-oberbegriffe">Mehrere Oberbegriffe&lt;/h3>
&lt;p>Die Verknüpfung von mehreren Oberbegriffen sorgt für Probleme bei der Berechnung von Hierarchielayouts.
Wir haben zur Visualisierung unseres Teilgraphen die Anzahl an Oberbegriffen pro Knoten auf einen Oberbegriff begrenzt.
Dadurch verlieren wir zwar Informationen &lt;strong>in der Visualisierung&lt;/strong>, können den Teilgraphen jedoch besser visuell inspizieren.&lt;/p>
&lt;h3 id="keine-oberbegriffe">Keine Oberbegriffe&lt;/h3>
&lt;p>In unserem Teilgraphen haben etwa 25 Prozent der Begriffe &lt;strong>keinen&lt;/strong> Oberbegriff.
Das hat unter anderem damit zu tun, dass die GND in vielen Bereichen entweder gar keine Hierarchieinformationen beinhaltet, oder sie inkonsequent gepflegt werden.&lt;/p>
&lt;p>Zu den in unserem Projekt verwendeten Begriffen &lt;strong>ohne&lt;/strong> Hierarchieinformationen gehören zum Beispiel &lt;a href="https://lobid.org/gnd/4000925-7" target="_blank" rel="noopener">Akte&lt;/a>, &lt;a href="https://lobid.org/gnd/4142968-0" target="_blank" rel="noopener">Archivalie&lt;/a>, &lt;a href="https://lobid.org/gnd/4002325-4" target="_blank" rel="noopener">Antiquität&lt;/a>, &lt;a href="https://lobid.org/gnd/4154290-3" target="_blank" rel="noopener">Feuerzeug&lt;/a>, &lt;a href="https://lobid.org/gnd/4029423-7" target="_blank" rel="noopener">Kamm&lt;/a>, &lt;a href="https://lobid.org/gnd/4154290-3" target="_blank" rel="noopener">Nähzeug&lt;/a>, &lt;a href="https://lobid.org/gnd/4051230-7" target="_blank" rel="noopener">Säge&lt;/a>, &amp;hellip;&lt;/p>
&lt;h3 id="ähnliche-begriffe">Ähnliche Begriffe&lt;/h3>
&lt;p>Manchmal lassen sich für verwandte Begriffe Hierarchieinformationen ermitteln.
Beispielsweise ist der Begriff &lt;a href="https://lobid.org/gnd/4181725-4" target="_blank" rel="noopener">Sofa&lt;/a> unter den &lt;a href="https://lobid.org/gnd/4055183-0" target="_blank" rel="noopener">Sitzmöbeln&lt;/a> einsortiert.
Der Begriff &lt;a href="https://lobid.org/gnd/4197693-9" target="_blank" rel="noopener">Couch&lt;/a> hingegen ist ohne jede Hierarchieinformation als verwandter Begriff zu &lt;a href="https://lobid.org/gnd/4181725-4" target="_blank" rel="noopener">Sofa&lt;/a> erfasst. Verknüpft man eine Couch mit der GND, so erhält man keine Hierarchieinformationen, verknüpft man hingegen ein Sofa, dann erhält man umfangreiche Hierarchieinformationen.
Es liegt also nahe, die Couch ebenfalls unter den Sitzmöbeln einzuordnen.&lt;/p>
&lt;p>Nach unseren Beobachtungen ist es jedoch &lt;strong>keine&lt;/strong> allgemeine Regel, dass die Hierarchieinformationen bei verwandten Begriffen weggelassen werden.
Im folgenden Diagramm ist ein (reduziertes) Beispiel zu den Begriffen &lt;a href="https://lobid.org/gnd/4184488-9" target="_blank" rel="noopener">Tasse&lt;/a> und &lt;a href="https://lobid.org/gnd/4697377-1" target="_blank" rel="noopener">Untertasse&lt;/a> gezeigt.&lt;/p>
&lt;div class="mermaid">flowchart LR
4197693-9(["Couch"]):::initial
click 4197693-9 href "https://lobid.org/gnd/4197693-9" "4197693-9" _blank
4181725-4(["Sofa"]):::initial
click 4181725-4 href "https://lobid.org/gnd/4181725-4" "4181725-4" _blank
4055183-0["Sitzmöbel"]
click 4055183-0 href "https://lobid.org/gnd/4055183-0" "4055183-0" _blank
4039860-2["Möbel"]
click 4039860-2 href "https://lobid.org/gnd/4039860-2" "4039860-2" _blank
4190181-2["Wohnungseinrichtung"]
click 4190181-2 href "https://lobid.org/gnd/4190181-2" "4190181-2" _blank
4132060-8["Hausrat"]
click 4132060-8 href "https://lobid.org/gnd/4132060-8" "4132060-8" _blank
4181725-4 --> 4055183-0
4055183-0 --> 4039860-2
4039860-2 --> 4190181-2
4190181-2 --> 4132060-8
4181725-4 &lt;-.-> 4197693-9
4184488-9(["Tasse"]):::initial
click 4184488-9 href "https://lobid.org/gnd/4184488-9" "4184488-9" _blank
4124863-6["Essgeschirr"]
click 4124863-6 href "https://lobid.org/gnd/4124863-6" "4124863-6" _blank
4697377-1(["Untertasse"]):::initial
click 4697377-1 href "https://lobid.org/gnd/4697377-1" "4697377-1" _blank
4184660-6["Teller"]
click 4184660-6 href "https://lobid.org/gnd/4184660-6" "4184660-6" _blank
4140542-0["Geschirr #lt;Hausrat#gt;"]
click 4140542-0 href "https://lobid.org/gnd/4140542-0" "4140542-0" _blank
4132060-8["Hausrat"]
click 4132060-8 href "https://lobid.org/gnd/4132060-8" "4132060-8" _blank
4184488-9 --> 4124863-6
4697377-1 --> 4184660-6
4124863-6 --> 4140542-0
4184660-6 --> 4124863-6
4140542-0 --> 4132060-8
4184488-9 &lt;-.-> 4697377-1
classDef default fill:#FFF,stroke:#0088c9,stroke-width:3px,color:#000;
classDef category fill:#FFF,stroke:#1fbeb8,stroke-width:3px,color:#000;
classDef initial fill:#FFF,stroke:#4dbd05,stroke-width:3px,color:#000;
&lt;/div>
&lt;p>Wir konnten in dem GND Graphen 3.907 Knoten identifizieren, die ggf. auf diese Art mit weiteren Hierarchieinformationen versehen werden könnten.
In unseren Daten waren es 105 Knoten, die wir mit dieser Strategie in die Hierarchie einbinden konnten.
Dabei ist jedoch zu beachten, dass durch die Einbindung über &lt;code>relatedTerm&lt;/code> Zyklen entstehen können.
Im folgenden Diagramm wird dies am Beispiel der Begriffe Körper und Leib dargestellt, wo Leib sowohl ein Oberbegriff, als auch ein verwandter Begriff zu Körper ist.&lt;/p>
&lt;div class="mermaid">flowchart LR
4031575-7(["Körper"])
click 4031575-7 href "https://lobid.org/gnd/4031575-7" "4031575-7" _blank
4132852-8(["Leib"])
click 4132852-8 href "https://lobid.org/gnd/4132852-8" "4132852-8" _blank
4031575-7 -->|broaderTermGeneral| 4132852-8
4132852-8 -.->|relatedTerm| 4031575-7
classDef default fill:#FFF,stroke:#0088c9,stroke-width:3px,color:#000;
&lt;/div>
&lt;h2 id="analyse-subgraph">Analyse Subgraph&lt;/h2>
&lt;p>Mit den oben beschriebenen Erfahrungen und Anpassungen konnten wir aus dem Netzwerk eine darstellbare Hierarchie erzeugen, die wir visuell inspizieren können.
Dabei ist uns aufgefallen, dass die Hierarchie in vielen Bereichen ziemlich flach ausfällt.
Abbildung 3 zeigt einen &lt;strong>kleinen&lt;/strong> Ausschnitt der Hierarchie.&lt;/p>
&lt;figure id="figure-bildschirmfoto-der-zweiten-version-unseres-gnd-teilgraphen-als-hierarchie">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Bildschirmfoto der zweiten Version unseres GND Teilgraphen als Hierarchie." srcset="
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/screenshot-hierarchie-detail_hu37bdd6cfb39b08386bdc91a9763660b7_36461_8d1a0f9a817fab14e47de01b07bf8976.webp 400w,
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/screenshot-hierarchie-detail_hu37bdd6cfb39b08386bdc91a9763660b7_36461_cf951e0e3f897b2d39ab6a4f32910b26.webp 760w,
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/screenshot-hierarchie-detail_hu37bdd6cfb39b08386bdc91a9763660b7_36461_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/screenshot-hierarchie-detail_hu37bdd6cfb39b08386bdc91a9763660b7_36461_8d1a0f9a817fab14e47de01b07bf8976.webp"
width="85"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Bildschirmfoto der zweiten Version unseres GND Teilgraphen als Hierarchie.
&lt;/figcaption>&lt;/figure>
&lt;p>Der Radius der grauen Knoten gibt ungefähr an, wie viele Akten mit diesem Begriff direkt gefunden werden würden.
Die Skalierung musste jedoch nach unten auf 5 Treffer und oben auf 50 Treffer begrenzt werden.
Ansonsten wären Kreise mit einem kleineren Durchmesser nicht mehr sichtbar, und einzelne Begriffe mit mehr als 1.000 betroffenen Akten würden große Teile des Graphen überdecken.&lt;/p>
&lt;p>Die roten Knoten zeigen Begriffe, für die wir keine direkten Treffer in den Akten haben. Diese wurden über die Hierarchieinformationen der GND als zusätzliche Begriffe nachgeladen. Diese zusätzlichen Begriffe machen in manchen Bereichen Sinn.&lt;/p>
&lt;p>In den Bereichen Biologie und Chemie, die sehr ausführliche und tiefe Hierarchieinformationen haben, sollten die Begriffe in unserem Teilgraphen jedoch reduziert werden. So ist es fachlich zwar korrekt, dass Messing eine Kupferlegierung ist, die zu den Buntmetalllegierungen gehört, welche zu den Schwermetallegierungen gehört, welches eine Legierung ist&amp;hellip; diese Informationen bieten in unserem Kontext jedoch keinen Mehrwert.&lt;/p>
&lt;p>Hier werden wir in Nachfolgearbeiten versuchen, mit verschiedenen Algorithmen aus der Netzwerkanalyse &amp;ldquo;überflüssige&amp;rdquo; Knoten wieder aus der Hierarchie zu entfernen.&lt;/p>
&lt;figure id="figure-bildschirmfoto-der-dritten-version-unseres-gnd-teilgraphen-als-hierarchie-mit-einfärbungen">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Bildschirmfoto der dritten Version unseres GND Teilgraphen als Hierarchie mit Einfärbungen." srcset="
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/screenshot-hierarchie-detail-farbig_huc6ad8d76e162113c75a855bf90cd30f4_77111_241104071964809e5afef24ed0721a2d.webp 400w,
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/screenshot-hierarchie-detail-farbig_huc6ad8d76e162113c75a855bf90cd30f4_77111_9f79c6fe332babf1213f3723179ad7c9.webp 760w,
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/screenshot-hierarchie-detail-farbig_huc6ad8d76e162113c75a855bf90cd30f4_77111_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/screenshot-hierarchie-detail-farbig_huc6ad8d76e162113c75a855bf90cd30f4_77111_241104071964809e5afef24ed0721a2d.webp"
width="760"
height="569"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Bildschirmfoto der dritten Version unseres GND Teilgraphen als Hierarchie mit Einfärbungen.
&lt;/figcaption>&lt;/figure>
&lt;p>In einer weiteren Verbesserung der Visualisierung der Hierarchie in unserem GND Teilgraphen in Abbildung 4 haben wir einzelne Knoten zusätzlich eingefärbt.&lt;/p>
&lt;ul>
&lt;li>Orange: Gegenstand&lt;/li>
&lt;li>Grün: Material&lt;/li>
&lt;li>Blau: Marke/Herkunft&lt;/li>
&lt;li>Lila: Stil&lt;/li>
&lt;li>Gemischt Rot: mehrere Kategorien&lt;/li>
&lt;/ul>
&lt;p>So konnten bei der visuellen Prüfung schon einige Probleme und fehlerhafte GND Abgleiche identifiziert werden, die in der Liste der mehr als 67.500 Einzelbegriffe untergegangen waren.
In Abbildung 4 ist zum Beispiel das Glas in einem gemischten Rot markiert, weil der Begriff sowohl für den &lt;strong>Gegenstand&lt;/strong> Glas, als auch für das &lt;strong>Material&lt;/strong> Glas verwendet wurde. &lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/p>
&lt;h2 id="analyse-gnd-subjectheading-graph">Analyse GND &lt;em>SubjectHeading&lt;/em> Graph&lt;/h2>
&lt;p>Wir haben uns gefragt, ob wir bei der Extraktion unseres GND Teilgraphen Fehler gemacht haben, oder einfach Pech mit unseren Daten hatten, oder ob sich manche Eigenschaften unseres GND Teilgraphen auch im großen Graphen der GND &lt;em>SubjectHeadings&lt;/em> wiederfinden.&lt;/p>
&lt;p>Daher haben wir eine oberflächliche Analyse des &lt;em>SubjectHeadings&lt;/em> Graphen durchgeführt.&lt;/p>
&lt;h3 id="komponenten-und-größen">Komponenten und Größen&lt;/h3>
&lt;figure id="figure-streudiagramm-zur-darstellung-der-eigenschaften-von-komponenten-im-gnd-subjectheading-graph">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Streudiagramm zur Darstellung der Eigenschaften von Komponenten im GND *SubjectHeading* Graph." srcset="
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/gnd-hierarchy-analyze_hu52002487e9390097dde4028970c89462_29818_c75bd9213a447cac0c6c98aeb7873746.webp 400w,
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/gnd-hierarchy-analyze_hu52002487e9390097dde4028970c89462_29818_9686bbdae67d69fdf5d40ed2f08b37f1.webp 760w,
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/gnd-hierarchy-analyze_hu52002487e9390097dde4028970c89462_29818_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/gnd-hierarchy-analyze_hu52002487e9390097dde4028970c89462_29818_c75bd9213a447cac0c6c98aeb7873746.webp"
width="640"
height="480"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Streudiagramm zur Darstellung der Eigenschaften von Komponenten im GND &lt;em>SubjectHeading&lt;/em> Graph.
&lt;/figcaption>&lt;/figure>
&lt;p>Unsere erste Feststellung war, dass der Gesamtgraph der GND &lt;em>SubjectHeadings&lt;/em> mit 204.560 Knoten in 47.388 Teilgraphen (Komponenten) zerfällt, die nicht miteinander verbunden sind.&lt;/p>
&lt;p>In Abbildung 5 ist ein Streudiagramm gezeigt, wo auf der X-Achse die Größe der Komponente und auf der Y-Achse die Anzahl an Komponenten dieser Größe dargestellt ist. Die Größe des Symbols zeigt, wie viele unterschiedliche (Sub)Typen von &lt;em>SubjectHeading&lt;/em> betroffen sind.&lt;/p>
&lt;p>Auf Grund der enormen Größenunterschiede ist das Diagram logarithmisch skaliert, so dass die Interpretation schwierig(er) ist.&lt;/p>
&lt;p>Der Stern ganz links oben stellt 41.465 Komponenten dar, die jeweils nur aus &lt;strong>einem&lt;/strong> Knoten bestehen.
Dies umfasst die Typen &lt;em>CharactersOrMorphemes&lt;/em> (2.912), &lt;em>EthnographicName&lt;/em> (1.257), &lt;em>GroupOfPersons&lt;/em> (158), &lt;em>HistoricSingleEventOrEra&lt;/em> (635), &lt;em>Language&lt;/em> (5), &lt;em>MeansOfTransportWithIndividualName&lt;/em> (8), &lt;em>NomenclatureInBiologyOrChemistry&lt;/em> (15.132), &lt;em>ProductNameOrBrandName&lt;/em> (422), &lt;em>SoftwareProduct&lt;/em> (134), &lt;em>SubjectHeading&lt;/em> (12), &lt;em>SubjectHeadingSensoStricto&lt;/em> (20.900).&lt;/p>
&lt;p>Der Stern ganz rechts unten stellt &lt;strong>eine&lt;/strong> Komponente mit einer Größe von 140.105 Knoten dar, welche die Typen &lt;em>CharactersOrMorphemes&lt;/em> (261), &lt;em>EthnographicName&lt;/em> (2.510), &lt;em>GroupOfPersons&lt;/em> (589), &lt;em>HistoricSingleEventOrEra&lt;/em> (4.031), &lt;em>Language&lt;/em> (5.942), &lt;em>MeansOfTransportWithIndividualName&lt;/em> (1.479), &lt;em>NomenclatureInBiologyOrChemistry&lt;/em> (11.428), &lt;em>ProductNameOrBrandName&lt;/em> (6.994), &lt;em>SoftwareProduct&lt;/em> (8.056), &lt;em>SubjectHeading&lt;/em> (8.220) und &lt;em>SubjectHeadingSensoStricto&lt;/em> (91.381) umfasst.&lt;/p>
&lt;h3 id="anteil-von-komponenten-bestimmter-größen">Anteil von Komponenten bestimmter Größen&lt;/h3>
&lt;p>Aus dem Diagramm in Abbildung 5 lässt sich ablesen, dass der Graph nicht vollständig verbunden ist und sich in zwei Extreme verteilt.
Viele Knoten sind gar nicht, oder nur wenig in Hierarchien eingebunden, andere sind in einem Netzwerk mit 140.105 Knoten zusammengefasst.
In dem Diagramm in Abbildung 6 ist dies noch einmal visuell dargestellt. Der letzte große Teilgraph mit den 140.105 Knoten ist im Diagramm abgeschnitten.&lt;/p>
&lt;figure id="figure-diagramm-zur-kumulierten-darstellung-des-prozentualen-anteils-von-komponenten-bestimmter-größen">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Diagramm zur kumulierten Darstellung des prozentualen Anteils von Komponenten bestimmter Größen." srcset="
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/gnd-hierarchy-analyze-cum_hu9e16205d3fa40412855eeee4ec8222cb_26124_992b7fe053cfe79ac10d998663d75edf.webp 400w,
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/gnd-hierarchy-analyze-cum_hu9e16205d3fa40412855eeee4ec8222cb_26124_9386aab1ea96c0401f2501861cf14e84.webp 760w,
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/gnd-hierarchy-analyze-cum_hu9e16205d3fa40412855eeee4ec8222cb_26124_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/gnd-hierarchy-analyze-cum_hu9e16205d3fa40412855eeee4ec8222cb_26124_992b7fe053cfe79ac10d998663d75edf.webp"
width="640"
height="480"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Diagramm zur kumulierten Darstellung des prozentualen Anteils von Komponenten bestimmter Größen.
&lt;/figcaption>&lt;/figure>
&lt;p>Auf der X-Achse ist wieder die Größe der Komponenten abgebildet und auf der Y-Achse der prozentuale Anteil an Knoten, den Komponenten dieser Größe im Gesamtgraphen innehaben.&lt;/p>
&lt;ul>
&lt;li>Etwa 20 Prozent der Knoten haben &lt;strong>keine&lt;/strong> Hierarchieinformationen.&lt;/li>
&lt;li>Etwa 30 Prozent der Knoten sind in Teilgraphen mit weniger als 20 Knoten verbunden.&lt;/li>
&lt;li>Etwa 68 Prozent der Knoten sind in einem Teilgraphen mit 140.105 Knoten zu finden.&lt;/li>
&lt;/ul>
&lt;h3 id="tiefe-der-hierarchie">Tiefe der Hierarchie&lt;/h3>
&lt;p>Es wäre zu erwarten, dass mit Zunahme der Größe der Komponenten auch die Tiefe der Hierarchie steigt.
Daher haben wir in einem &lt;a href="https://de.wikipedia.org/wiki/Box-Plot" target="_blank" rel="noopener">Boxplot&lt;/a> in Abbildung 7 die maximale Tiefe der Hierarchie jeder Komponente analysiert und sortiert nach Komponentengröße ausgewertet.&lt;/p>
&lt;figure id="figure-boxplot-zur-darstellung-der-verteilung-der-max-tiefe-pro-komponentengröße">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Boxplot zur Darstellung der Verteilung der max. Tiefe pro Komponentengröße." srcset="
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/gnd-hierarchy-analyze-boxplot-diameter_hu8c955f372abddff8a20ef0a87f275672_43565_0885eb5468d6ef19ed004307f96ef654.webp 400w,
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/gnd-hierarchy-analyze-boxplot-diameter_hu8c955f372abddff8a20ef0a87f275672_43565_9ae06120c79035c34862a9f3a9a6dad5.webp 760w,
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/gnd-hierarchy-analyze-boxplot-diameter_hu8c955f372abddff8a20ef0a87f275672_43565_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/gnd-hierarchy-analyze-boxplot-diameter_hu8c955f372abddff8a20ef0a87f275672_43565_0885eb5468d6ef19ed004307f96ef654.webp"
width="760"
height="507"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Boxplot zur Darstellung der Verteilung der max. Tiefe pro Komponentengröße.
&lt;/figcaption>&lt;/figure>
&lt;p>Prinzpiell steigt die Tiefe der Hierarchie mit steigender Komponentengröße etwas.
Jedoch wäre bei einer Komponente mit 114 Knoten mehr als 2 Hierarchiestufen zu erwarten.
Oder bei einer Komponente mit 140.105 Knoten mehr als 13 Hierarchiestufen.&lt;/p>
&lt;h3 id="kindknoten-pro-knoten">Kindknoten pro Knoten&lt;/h3>
&lt;p>Wenn es relativ wenig Hierachiestufen gibt, liegt die Vermutung nahe, dass es in den einzelnen Komponenten Knoten gibt, die sehr viele direkte Unterknoten haben. Daher haben wir noch einmal die Anzahl an Kindknoten pro Knoten analysiert und sortiert nach Komponentengröße in einem Boxplot in Abbildung 8 ausgewertet.&lt;/p>
&lt;figure id="figure-boxplot-zur-darstellung-der-verteilung-der-anzahl-von-kindknoten-pro-komponentengröße">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Boxplot zur Darstellung der Verteilung der Anzahl von Kindknoten pro Komponentengröße." srcset="
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/gnd-hierarchy-analyze-boxplot-degree_hu87aeaab33c49bee17e43933941fdaea1_99270_f3f65ead298de022d683cbda529f81c3.webp 400w,
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/gnd-hierarchy-analyze-boxplot-degree_hu87aeaab33c49bee17e43933941fdaea1_99270_7d4d0a7e2424787f62b2d02185cce7b4.webp 760w,
/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/gnd-hierarchy-analyze-boxplot-degree_hu87aeaab33c49bee17e43933941fdaea1_99270_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/post/2023-03-gnd-hierarchie-zur-verbesserung-der-erschliessung/gnd-hierarchy-analyze-boxplot-degree_hu87aeaab33c49bee17e43933941fdaea1_99270_f3f65ead298de022d683cbda529f81c3.webp"
width="760"
height="507"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Boxplot zur Darstellung der Verteilung der Anzahl von Kindknoten pro Komponentengröße.
&lt;/figcaption>&lt;/figure>
&lt;p>Die graue Linie markiert die maximale Anzahl an Kindknoten, die ein Knoten in einer Komponente einer bestimmten Größe haben kann.
Auffällig ist, dass es bei vielen Komponenten Knoten gibt, die nahe an dieser Grenze liegen.
Die Komponente besteht dann aus einem Oberknoten mit dem (fast) alle restlichen Knoten der Komponente verbunden sind.&lt;/p>
&lt;p>Interessant sind auch die drei Knoten in der größten Komponente, die mehr als 1.000 direkte Kindknoten haben.
Hierbei handelt es sich um eine große Anzahl an Verbindungen des Typs &lt;a href="https://d-nb.info/standards/elementset/gnd#broaderTermInstantial" target="_blank" rel="noopener">Broader term (instantial)&lt;/a>, die im &lt;a href="https://explore.gnd.network/" target="_blank" rel="noopener">GND Explorer&lt;/a> als &amp;ldquo;Ist ein Beispiel für andere Entität&amp;rdquo; angezeigt werden.&lt;/p>
&lt;h2 id="fazit">Fazit&lt;/h2>
&lt;p>Nach anfänglichen Schwierigkeiten konnten wir eine für uns in großen Teilen brauchbare Hierarchie aus der GND extrahieren, die wir für unser Projekt weiter bearbeiten können.&lt;/p>
&lt;p>Wir waren in unserem Teilgraphen verwundert über die doch vielen Begriffe, die ohne Hierarchieinformationen in der GND liegen.
Mit unserer Analyse des Gesamtgraphen konnten wir bestätigen, dass dies wohl ein generelles Problem bei GND Sachbegriffen ist.&lt;/p>
&lt;p>Auch sind die Hierarchien in unserem Teilgraphen selbst relativ flach, was sich bei der Analyse des Gesamtgraphen ebenfalls als Eigenschaft der GND bestätigte.&lt;/p>
&lt;p>Alternativ könnte es sich auch um ein systematisches Problem in unserer LOD Variante der GND oder unserer Auswahl von Verbindungsarten zwischen GND Sachbegriffen liegen. Wir konnten in unseren Stichproben jedoch keine Hinweise auf solche Fehler finden.&lt;/p>
&lt;p>Es würde sich jetzt anbieten die Analyse ausführlicher zu gestalten und dabei zum Beispiel zusätzlich GND Sachgruppen, die einzelnen Subtypen von &lt;em>SubjectHeading&lt;/em>, sowie die unterschiedlichen Verbindungsarten weiter zu analysieren. Dies würde jedoch den Rahmen unseres aktuellen Projektes übersteigen.&lt;/p>
&lt;p>Prinzipiell kommt es nach unseren Beobachtungen darauf an, in welchem (Fach-)Bereich man sich innerhalb der GND Sachbegriffen bewegt.
So fanden wir für unseren Anwendungsfall die Hierarchieinformationen für Haushaltsgegenstände unzureichend, die zu Musikinstrumenten passend und hilfreich, und die für Begriffe aus der Biologie und Chemie zu ausführlich.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Details zur Motivation und unserem generellen Vorgehen haben wir schon unter &lt;a href="https://fdmlab.landesarchiv-bw.de/post/2023-02-ner-und-gnd-zur-verbesserung-der-erschliessung/">NER und GND zur Verbesserung der Erschließung&lt;/a> berichtet.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>Details zum Glas als Material und Gegenstand, sowie zu den Kategorien, finden sich im Artikel &lt;a href="https://fdmlab.landesarchiv-bw.de/post/2023-02-ner-und-gnd-zur-verbesserung-der-erschliessung/">NER und GND zur Verbesserung der Erschließung&lt;/a>.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Workshop - Erweiterter Abgleich mit Getty</title><link>https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/17-erweiterter-abgleich-mit-getty/</link><pubDate>Wed, 01 Mar 2023 00:00:00 +0000</pubDate><guid>https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/17-erweiterter-abgleich-mit-getty/</guid><description>&lt;p>In diesem Tutorial vertiefen wir den Abgleich von Daten mit den Vokabularen von Getty.&lt;/p>
&lt;h2 id="einführung">Einführung&lt;/h2>
&lt;blockquote>
&lt;p>Reconciling in der &lt;a href="https://docs.openrefine.org/manual/reconciling" target="_blank" rel="noopener">OpenRefine Dokumentation&lt;/a>.&lt;br>
Getty Research Institute zu &lt;a href="https://www.getty.edu/research/tools/vocabularies/obtain/openrefine.html" target="_blank" rel="noopener">OpenRefine Reconciliation&lt;/a>.&lt;br>
Tutorial zur &lt;a href="https://www.getty.edu/research/tools/vocabularies/obtain/getty_vocabularies_openrefine_tutorial.pdf" target="_blank" rel="noopener">Verwendung des Getty Vokabulars in OpenRefine&lt;/a>.&lt;br>
Portal zu &lt;a href="http://vocab.getty.edu/" target="_blank" rel="noopener">Getty Vokabularen in ihrer LOD Form&lt;/a>.&lt;br>
Sammlung von &lt;a href="http://vocab.getty.edu/doc/queries/" target="_blank" rel="noopener">Beispielanfragen mit SPARQL&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;div class="alert alert-note">
Dieser Workshop wurde erstellt mit OpenRefine Version 3.5.0.&lt;br>
Dieser Workshop wurde zuletzt getestet mit OpenRefine Version &lt;strong>3.9.3&lt;/strong>.
&lt;/div>
&lt;p>Das &lt;a href="https://www.getty.edu/" target="_blank" rel="noopener">Getty Research Institute&lt;/a> verwaltet verschiedene Vokabulare:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.getty.edu/research/tools/vocabularies/aat/index.html" target="_blank" rel="noopener">Art &amp;amp; Architecture Thesaurus (AAT) ®&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.getty.edu/research/tools/vocabularies/cona/index.html" target="_blank" rel="noopener">Cultural Objects Name Authority (CONA) ®&lt;/a> (noch nicht veröffentlicht)&lt;/li>
&lt;li>&lt;a href="https://www.getty.edu/research/tools/vocabularies/tgn/index.html" target="_blank" rel="noopener">Getty Thesaurus of Geographic Names (TGN) ®&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.getty.edu/research/tools/vocabularies/ulan/index.html" target="_blank" rel="noopener">Union List of Artist Names (ULAN) ®&lt;/a>&lt;/li>
&lt;/ul>
&lt;div class="alert alert-note">
&lt;div>
Anders als die &lt;a href="https://creativecommons.org/publicdomain/zero/1.0/deed.de" target="_blank" rel="noopener">quasi gemeinfrei&lt;/a> verfügbaren Daten in der GND und in Wikidata, sind die Daten von Getty unter der &lt;a href="https://opendatacommons.org/licenses/by/1-0/" target="_blank" rel="noopener">Open Data Commons Attribution License (OCD-BY) v1.0&lt;/a> veröffentlicht.
&lt;/div>
&lt;/div>
&lt;p>Die Getty Vokabulare stehen in verschiedenen Formaten zum Download zur Verfügung und sind über unterschiedliche APIs abrufbar.
Wir interessieren uns hier explizit für die &lt;a href="https://www.getty.edu/research/tools/vocabularies/obtain/openrefine.html" target="_blank" rel="noopener">OpenRefine Reconciliation API&lt;/a>.
Bei entsprechenden Kenntnissen ist es womöglich interessanter direkt über die &lt;a href="https://data.getty.edu/vocab/sparql-ui" target="_blank" rel="noopener">SPARQL Oberfläche&lt;/a> mit den Vokabularen zu arbeiten, oder über OpenRefine den &lt;a href="https://data.getty.edu/vocab/sparql" target="_blank" rel="noopener">SPARQL Endpunkt&lt;/a> anzusprechen.
Für die Arbeit mit &lt;a href="https://www.w3.org/TR/sparql11-overview/" target="_blank" rel="noopener">SPARQL&lt;/a> gibt es auch eine &lt;a href="http://vocab.getty.edu/doc/queries/" target="_blank" rel="noopener">Sammlung von Beispielanfragen&lt;/a>.&lt;/p>
&lt;div class="alert alert-note">
&lt;div>
Im FDMLab verwenden wir die Vokabulare von Getty bisher nicht, so dass die hier gezeigten Methoden sehr wahrscheinlich unvollständig sind.
&lt;/div>
&lt;/div>
&lt;h2 id="aufgabe-1-daten-verknüpfen">Aufgabe 1: Daten verknüpfen&lt;/h2>
&lt;h3 id="projekt-anlegen">Projekt anlegen&lt;/h3>
&lt;p>Hier verwenden wir das gleiche Datenbeispiel, wie bei &lt;a href="https://fdmlab.landesarchiv-bw.de/workshop/openrefine-einsteiger/07-reconciling-mit-wikidata/#aufgabe-2-daten-verkn%c3%bcpfen">Aufgabe 2 von 07 Reconciling mit OpenRefine und Wikidata&lt;/a>.&lt;/p>
&lt;p>Es handelt sich um eine Liste der Mitgliedstaaten der Europäischen Union (Stand März 2023).&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-plain" data-lang="plain">&lt;span class="line">&lt;span class="cl"> - Belgien
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Bulgarien
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Dänemark
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Deutschland
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Estland
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Finnland
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Frankreich
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Griechenland
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Irland
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Italien
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Kroatien
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Lettland
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Litauen
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Luxemburg
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Malta
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Niederlande
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Österreich
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Polen
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Portugal
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Rumänien
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Schweden
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Slowakei
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Slowenien
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Spanien
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Tschechien
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Ungarn
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - Zypern
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Wir legen diese Liste via Zwischenablage (&amp;ldquo;Clipboard&amp;rdquo;) als OpenRefine Projekt an.&lt;/p>
&lt;h3 id="einfacher-abgleich">Einfacher Abgleich&lt;/h3>
&lt;p>Nachdem wir die Daten aufgeräumt haben, starten wir den Abgleich mit Getty via
&amp;ldquo;Land&amp;quot;
&lt;i class="far fa-caret-square-down pr-1 fa-fw">&lt;/i>&amp;quot;Reconcile&amp;quot;
&lt;i class="fas fa-caret-right pr-1 fa-fw">&lt;/i>&amp;quot;Start reconciling&amp;rdquo;
und fügen den folgenden Standard Service hinzu:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-plain" data-lang="plain">&lt;span class="line">&lt;span class="cl">https://services.getty.edu/vocab/reconcile/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;figure id="figure-bildschirmfoto-der-einstellungen-für-den-reconciliation-vorgang-mit-getty---typeinschränkung">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Bildschirmfoto der Einstellungen für den Reconciliation Vorgang mit Getty - Typeinschränkung." srcset="
/workshop/openrefine-fortgeschrittene/17-erweiterter-abgleich-mit-getty/screenshot-openrefine-reconciliation-getty-settings-01_hu83f508489f44879cd82bdb9e9f5f78fc_23334_d8a9b04a0931edf372c40f6377b2f834.webp 400w,
/workshop/openrefine-fortgeschrittene/17-erweiterter-abgleich-mit-getty/screenshot-openrefine-reconciliation-getty-settings-01_hu83f508489f44879cd82bdb9e9f5f78fc_23334_e58a0d037e50e82768890594af8f5ed6.webp 760w,
/workshop/openrefine-fortgeschrittene/17-erweiterter-abgleich-mit-getty/screenshot-openrefine-reconciliation-getty-settings-01_hu83f508489f44879cd82bdb9e9f5f78fc_23334_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/17-erweiterter-abgleich-mit-getty/screenshot-openrefine-reconciliation-getty-settings-01_hu83f508489f44879cd82bdb9e9f5f78fc_23334_d8a9b04a0931edf372c40f6377b2f834.webp"
width="760"
height="495"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Bildschirmfoto der Einstellungen für den Reconciliation Vorgang mit Getty - Typeinschränkung.
&lt;/figcaption>&lt;/figure>
&lt;p>Wie in Abbildung 1 zu sehen, gibt es bei den Getty Vokabularen keine spezifischen Typeinschränkungen, wie wir sie von der lobid gnd oder Wikidata kennen. Wir können uns hier lediglich auf einzelne Vokabulare beschränken.&lt;/p>
&lt;p>Trotz englischsprachigem Vokabular und deutschsprachigen Suchbegriffen, bekommen wir bei unserem Reconciliation Vorgang passende Ergebnisse von TGN vorgeschlagen.&lt;/p>
&lt;p>Das liegt daran, dass der gesuchte Begriff nicht nur im Namen der Entität gesucht wird, sondern in mehreren Feldern. &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>
So finden wir mit dem deutschsprachigen Begriff &amp;ldquo;Deutschland&amp;rdquo; auch das passende &amp;ldquo;Germany&amp;rdquo; im TGN.
Gleichzeitig können dadurch auch unerwartete Ergebnisse mit hoher Trefferquote auftauchen, da wir nicht beeinflussen können, welche Felder alles durchsucht werden sollen.&lt;/p>
&lt;h3 id="erweiterter-abgleich">Erweiterter Abgleich&lt;/h3>
&lt;p>Wir können bei den Getty Vokabularen zwar nicht explizit nach Typen filtern, wir können die Bewertung der Suchergebnisse jedoch positiv beeinflussen. Dazu erweitern wir das Projekt.&lt;/p>
&lt;ol>
&lt;li>Wir fügen eine Kopie der Spalte &amp;ldquo;Land&amp;rdquo; via
&amp;ldquo;Land&amp;quot;
&lt;i class="far fa-caret-square-down pr-1 fa-fw">&lt;/i>&amp;quot;Edit column&amp;quot;
&lt;i class="fas fa-caret-right pr-1 fa-fw">&lt;/i>&amp;quot;Add column based on this column&amp;hellip;&amp;rdquo;
mit dem Namen &amp;ldquo;Land2&amp;rdquo; hinzu.&lt;/li>
&lt;li>Von der Spalte &amp;ldquo;Land2&amp;rdquo; legen wir eine weitere Kopie via
&amp;ldquo;Land2&amp;quot;
&lt;i class="far fa-caret-square-down pr-1 fa-fw">&lt;/i>&amp;quot;Edit column&amp;quot;
&lt;i class="fas fa-caret-right pr-1 fa-fw">&lt;/i>&amp;quot;Add column based on this column&amp;hellip;&amp;rdquo;
an und nennen die neue Spalte &amp;ldquo;Label&amp;rdquo;.&lt;/li>
&lt;li>Neben der Spalte &amp;ldquo;Label&amp;rdquo; erzeugen wir eine neue Spalte via
&amp;ldquo;Label&amp;quot;
&lt;i class="far fa-caret-square-down pr-1 fa-fw">&lt;/i>&amp;quot;Edit column&amp;quot;
&lt;i class="fas fa-caret-right pr-1 fa-fw">&lt;/i>&amp;quot;Add column based on this column&amp;hellip;&amp;rdquo;
und nennen die neue Spalte &amp;ldquo;Art des Ortes&amp;rdquo; und verwenden als Wert den Text &lt;code>&amp;quot;nation&amp;quot;&lt;/code>.&lt;/li>
&lt;/ol>
&lt;p>Das Ergebnis der drei Operationen kann in einem Ausschnitt in Abbildung 3 betrachtet werden.&lt;/p>
&lt;p>Anschließend können wir einen neuen Reconciliation Vorgang auf der Spalte &amp;ldquo;Land2&amp;rdquo; starten und zusätzlich wie in Abbildung 2 die Spalte &amp;ldquo;Label&amp;rdquo; als Eigenschaft &lt;code>label&lt;/code> und die Spalte &amp;ldquo;Art des Ortes&amp;rdquo; als Eigenschaft &lt;code>placeTypePref&lt;/code> verwenden.&lt;/p>
&lt;figure id="figure-bildschirmfoto-der-einstellungen-für-den-reconciliation-vorgang-mit-getty---zusätzliche-eigenschaften">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Bildschirmfoto der Einstellungen für den Reconciliation Vorgang mit Getty - Zusätzliche Eigenschaften." srcset="
/workshop/openrefine-fortgeschrittene/17-erweiterter-abgleich-mit-getty/screenshot-openrefine-reconciliation-getty-settings-02_hu72011706122c888c932e114efa380d54_28173_37c3591a29b0330934832d7dfc2dc7ea.webp 400w,
/workshop/openrefine-fortgeschrittene/17-erweiterter-abgleich-mit-getty/screenshot-openrefine-reconciliation-getty-settings-02_hu72011706122c888c932e114efa380d54_28173_b4838555035030b6434688e54e9d4366.webp 760w,
/workshop/openrefine-fortgeschrittene/17-erweiterter-abgleich-mit-getty/screenshot-openrefine-reconciliation-getty-settings-02_hu72011706122c888c932e114efa380d54_28173_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/17-erweiterter-abgleich-mit-getty/screenshot-openrefine-reconciliation-getty-settings-02_hu72011706122c888c932e114efa380d54_28173_37c3591a29b0330934832d7dfc2dc7ea.webp"
width="760"
height="493"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Bildschirmfoto der Einstellungen für den Reconciliation Vorgang mit Getty - Zusätzliche Eigenschaften.
&lt;/figcaption>&lt;/figure>
&lt;p>Das hat zur Folge, dass die von uns gesuchten Länder im Vergleich zu den anderen Ergebnissen deutlich besser bewertet werden und in der Sortierung nach oben rutschen.&lt;/p>
&lt;p>Mit der Spalte &amp;ldquo;Label&amp;rdquo;, bzw. dem Mapping auf die Eigenschaft &lt;code>label&lt;/code> beim Reconciliation Vorgang, geben wir den Ergebnissen einen &amp;ldquo;boost&amp;rdquo;, die den deutschsprachigen Namen des Landes explizit als deutsche Übersetzung haben.&lt;/p>
&lt;p>Mit der Spalte &amp;ldquo;Art des Ortes&amp;rdquo;, bzw. dem Mapping auf die Eigenschaft &lt;code>placeTypePref&lt;/code>, bekommen die Ergebnisse einen &amp;ldquo;boost&amp;rdquo;, die als Land eingestuft werden.&lt;/p>
&lt;p>Wie in Abbildung 3 an den Beispielen Luxemburg und Malta zu sehen, können wir die gesuchten Länder somit von den restlichen Treffern differenzieren und einfacher zuordnen.&lt;/p>
&lt;figure id="figure-bildschirmfoto-der-ergebnisse-des-abgleichs-mit-getty">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Bildschirmfoto der Ergebnisse des Abgleichs mit Getty." srcset="
/workshop/openrefine-fortgeschrittene/17-erweiterter-abgleich-mit-getty/screenshot-openrefine-reconciliation-getty-results_hu17661db05f4546dbc7c7c7e4a3d77a03_56319_c8c88d201866c7597ccbacbc8ada2aa4.webp 400w,
/workshop/openrefine-fortgeschrittene/17-erweiterter-abgleich-mit-getty/screenshot-openrefine-reconciliation-getty-results_hu17661db05f4546dbc7c7c7e4a3d77a03_56319_1dee3f13e1d782699dc73353740cc190.webp 760w,
/workshop/openrefine-fortgeschrittene/17-erweiterter-abgleich-mit-getty/screenshot-openrefine-reconciliation-getty-results_hu17661db05f4546dbc7c7c7e4a3d77a03_56319_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/17-erweiterter-abgleich-mit-getty/screenshot-openrefine-reconciliation-getty-results_hu17661db05f4546dbc7c7c7e4a3d77a03_56319_c8c88d201866c7597ccbacbc8ada2aa4.webp"
width="760"
height="722"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Bildschirmfoto der Ergebnisse des Abgleichs mit Getty.
&lt;/figcaption>&lt;/figure>
&lt;h2 id="fazit">Fazit&lt;/h2>
&lt;p>Die Bewertung der Suchtreffer bei Getty ist etwas gewöhnungsbedürftig, jedoch können wir uns das zu Nutze machen, um die Bewertung der Suchanfragen auf unsere Daten anzupassen.&lt;/p>
&lt;p>Die dann doch recht eingeschränkten Such- und Filteroptionen könnten erklären, weshalb Wissenschaftler dann doch lieber direkt mit einem Datendownload der Vokabulare, oder der SPARQL Schnittstelle arbeiten.&lt;/p>
&lt;h2 id="lizenzhinweise">Lizenzhinweise&lt;/h2>
&lt;p>Dieser Artikel und die Bildschirmfotos enthalten Informationen aus dem &lt;a href="https://www.getty.edu/research/tools/vocabularies/tgn/index.html" target="_blank" rel="noopener">Thesaurus of Geographic Names (TGN) ®&lt;/a>, welcher verfügbar ist unter der &lt;a href="https://opendatacommons.org/licenses/by/1-0/" target="_blank" rel="noopener">ODC Attribution License v1.0&lt;/a>.&lt;/p>
&lt;hr>
&lt;p>Im nächsten Teil beschäftigen wir uns mit dem Nachladen von Geokoordinaten für Orte.&lt;/p>
&lt;ul class="cta-group">
&lt;li>
&lt;a href="https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/18-nachladen-von-geokoordinaten" class="btn btn-primary px-3 py-3">16 Erweiterter Abgleich mit Getty&lt;/a>
&lt;/li>
&lt;/ul>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Wir konnten keine aktuellen Informationen finden, welche Felder bei welchen Vokabularen standardmäßig durchsucht werden.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Workshop - Erweiterter Abgleich mit Wikidata</title><link>https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/</link><pubDate>Wed, 01 Mar 2023 00:00:00 +0000</pubDate><guid>https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/</guid><description>&lt;p>In diesem Tutorial vertiefen wir den Abgleich von Daten mit Wikibase Instanzen wie Wikidata.&lt;/p>
&lt;h2 id="einführung">Einführung&lt;/h2>
&lt;blockquote>
&lt;p>Reconciling in der &lt;a href="https://docs.openrefine.org/manual/reconciling" target="_blank" rel="noopener">OpenRefine Dokumentation&lt;/a>.&lt;br>
Informationssammlung zu &lt;a href="https://wikidata.reconci.link/" target="_blank" rel="noopener">OpenRefine Wikidata Reconciliation&lt;/a>.&lt;br>
&lt;a href="https://openrefine-wikibase.readthedocs.io/en/latest/index.html" target="_blank" rel="noopener">OpenRefine Wikibase Dokumentation&lt;/a>.&lt;br>
&lt;a href="https://gitlab.com/nfdi4culture/ta1-data-enrichment/openrefine-wikibase" target="_blank" rel="noopener">OpenRefine Wikibase Projekt&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;div class="alert alert-note">
Dieser Workshop wurde erstellt mit OpenRefine Version 3.5.0.&lt;br>
Dieser Workshop wurde zuletzt getestet mit OpenRefine Version &lt;strong>3.9.3&lt;/strong>.
&lt;/div>
&lt;p>Auch wenn das Protokoll zum Durchführen eines Abgleichs über eine &lt;a href="https://reconciliation-api.github.io/specs/latest/" target="_blank" rel="noopener">Reconciliation Service API&lt;/a> standardisiert ist, so ist die konkrete Umsetzung der Suchfunktionalität von Dienst zu Dienst unterschiedlich.&lt;/p>
&lt;p>Um dies zu zeigen, verwenden wir ähnliche Daten wie in &lt;a href="https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/15-erweiterter-gnd-abgleich-mit-lobid/#aufgabe-2-nutzung-in-openrefine">Aufgabe 2 von Erweiterter GND Abgleich mit lobid&lt;/a>.
Diesmal gleichen wir die Daten jedoch mit &lt;a href="https://www.wikidata.org/" target="_blank" rel="noopener">Wikidata&lt;/a> ab.
Diese Plattform basiert auf der Software &lt;a href="https://wikiba.se/" target="_blank" rel="noopener">Wikibase&lt;/a> und kann mit &lt;a href="https://gitlab.com/nfdi4culture/ta1-data-enrichment/openrefine-wikibase" target="_blank" rel="noopener">OpenRefine-Wikibase&lt;/a> um eine &lt;a href="https://reconciliation-api.github.io/" target="_blank" rel="noopener">Reconciliation Service API&lt;/a> erweitert werden.&lt;/p>
&lt;p>Wie schon in &lt;a href="https://fdmlab.landesarchiv-bw.de/workshop/openrefine-einsteiger/07-reconciling-mit-wikidata/">Reconciling mit OpenRefine und Wikidata&lt;/a> beschrieben, ist in OpenRefine standardmäßig schon der englischsprachige Service für Wikidata aktiviert.
Es ist aber auch möglich den Service in einer spezifischen Sprache zu verwenden.&lt;/p>
&lt;p>Wir verwenden in diesem Tutorial die deutschsprachige Schnittstelle über:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-plain" data-lang="plain">&lt;span class="line">&lt;span class="cl">https://wikidata.reconci.link/de/api
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="aufgabe-1-abgleich-mit-wikidata">Aufgabe 1: Abgleich mit Wikidata&lt;/h2>
&lt;p>Wir benötigen die folgenden Dateien als OpenRefine Projekt:&lt;/p>
&lt;blockquote>
&lt;p>💾 Wir benötigen die folgende Datei (Rechtsklick und &amp;ldquo;Ziel speichern unter&amp;hellip;&amp;rdquo;):&lt;/p>
&lt;/blockquote>
&lt;a href="https://fdmlab.landesarchiv-bw.de/data/openrefine-workshop/16_kretschmann-kabinett-iii-mit-fehlern.csv" target="_blank">
&lt;i class="fas fa-file-csv pr-1 fa-fw">&lt;/i>Kretschmann Kabinett III mit Fehlern&lt;/a>
&lt;p>In dieser Datei ist das Kabinett Kretschmann III.
Wie in Abbildung 1 zu erkennen, sind die Namen mit OCR üblichen Fehlern versehen.
Wir ignorieren die Spalte &amp;ldquo;QID&amp;rdquo;, mit der wir die Namen sofort wieder korrekt aus Wikidata nachladen könnten.
Diese Spalte benötigen wir später zur schnellen Überprüfung der Ergebnisse. Unser Szenario lautet wieder: Wir haben eine Liste mit Namen, deren genaue Schreibweise wir nicht kennen, können diese Namen für den Abgleich jedoch mit einem ungefähren Geburtsdatum und einem Geburtsort ergänzen.&lt;/p>
&lt;figure id="figure-bildschirmfoto-des-projektes-direkt-nach-dem-import">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Bildschirmfoto des Projektes direkt nach dem Import." srcset="
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-wikidata-datenset_hud64c547331e2ac5280ba5bb7ce2ff844_29044_95fc74b3c48d0e0e6681bc7e950ac62e.webp 400w,
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-wikidata-datenset_hud64c547331e2ac5280ba5bb7ce2ff844_29044_c0827939165853712852855ff32cf722.webp 760w,
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-wikidata-datenset_hud64c547331e2ac5280ba5bb7ce2ff844_29044_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-wikidata-datenset_hud64c547331e2ac5280ba5bb7ce2ff844_29044_95fc74b3c48d0e0e6681bc7e950ac62e.webp"
width="507"
height="308"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Bildschirmfoto des Projektes direkt nach dem Import.
&lt;/figcaption>&lt;/figure>
&lt;h3 id="transformation-1-name-fuzzy">Transformation 1: Name fuzzy&lt;/h3>
&lt;p>Die Daten in der Spalte &amp;ldquo;Name&amp;rdquo; beinhaltet nicht ganz so viele OCR-Fehler, wie in der Aufgabe zum Abgleich mit der lobid.
Das liegt daran, dass beim OpenRefine-Wikidata Reconciliation Service zwar angegeben werden kann, dass der Name &lt;em>fuzzy&lt;/em> gematcht werden soll.
Anders als bei der lobid gnd API lässt sich jedoch nicht angeben, wie viele Fehler erlaubt sein dürfen. &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Auch hier fügen wir jedem Wort, welches Fehler beinhalten könnte, den Fuzzy-Operator &lt;code>~&lt;/code> hinzu.
Dafür transformieren wir die Spalte via
&amp;ldquo;Name&amp;quot;
&lt;i class="far fa-caret-square-down pr-1 fa-fw">&lt;/i>&amp;quot;Edit cells&amp;quot;
&lt;i class="fas fa-caret-right pr-1 fa-fw">&lt;/i>&amp;quot;Transform&amp;hellip;&amp;rdquo;
und fügen mit dem folgenden GREL Ausdruck zu jedem Wort &lt;code>~&lt;/code> hinzu.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-javascript" data-lang="javascript">&lt;span class="line">&lt;span class="cl">&lt;span class="nx">forEach&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">value&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">split&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="nx">v&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">v&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="s2">&amp;#34;~&amp;#34;&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="nx">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;div class="alert alert-warning">
&lt;div>
Die Kombination aus Bindestrich &lt;code>-&lt;/code> und Fuzzy-Operator &lt;code>~&lt;/code> scheint zu Problemen zu führen, weshalb wir den Fuzzy-Operator bei dem Nachnamen von Nicole Hoffmeister-Kraut wieder entfernen.
&lt;/div>
&lt;/div>
&lt;h3 id="transformation-2-geburtsdatum-reduzieren">Transformation 2: Geburtsdatum reduzieren&lt;/h3>
&lt;p>Auch bei Wikidata haben wir das Problem, dass uns teilweise nur das Geburtsjahr bekannt ist bzw. umgekehrt in Wikidata nur das Geburtsjahr eingetragen wurde. Bei Wikidata haben wir jedoch kein Wildcard-Zeichen zur Verfügung und müssen uns daher anders behelfen.&lt;/p>
&lt;p>Mit so genannten &lt;em>subfields&lt;/em> können wir beim Reconciliation Vorgang wie in Abbildung 3 direkt angeben, dass es sich bei den Daten in unserer Spalte um eine Jahresangabe aus einem Datum handelt. Um das einheitlich zu handhaben entfernen wir in der Spalte &amp;ldquo;Geburtsdatum&amp;rdquo; den Geburtsmonat und den Geburtstag, sofern vorhanden.
Das funktioniert via
&amp;ldquo;Geburtsdatum&amp;quot;
&lt;i class="far fa-caret-square-down pr-1 fa-fw">&lt;/i>&amp;quot;Edit cells&amp;quot;
&lt;i class="fas fa-caret-right pr-1 fa-fw">&lt;/i>&amp;quot;Transform&amp;hellip;&amp;rdquo;
und dem folgenden GREL Ausdruck.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-javascript" data-lang="javascript">&lt;span class="line">&lt;span class="cl">&lt;span class="nx">value&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">split&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;-&amp;#34;&lt;/span>&lt;span class="p">)[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="subfields">Subfields&lt;/h4>
&lt;p>Die &amp;ldquo;Unterfelder&amp;rdquo; werden nicht bei den Daten selbst erfasst, sondern im Mapping der Datenspalten auf die zusätzlichen Eigenschaften bei den Einstellungen im Reconciliation Dialog. In der folgenden Tabelle ist eine Liste von verfügbaren &lt;em>subfields&lt;/em>:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;/th>
&lt;th>Beispiel&lt;/th>
&lt;th>Bedeutung&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>@year&lt;/code>&lt;/td>
&lt;td>2023&lt;/td>
&lt;td>Jahresbestandteil eines Datums.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>@month&lt;/code>&lt;/td>
&lt;td>12&lt;/td>
&lt;td>Monatsbestandteil eines Datums.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>@day&lt;/code>&lt;/td>
&lt;td>24&lt;/td>
&lt;td>Tagesbestandteil eines Datums.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>@isodate&lt;/code>&lt;/td>
&lt;td>2023-12-24&lt;/td>
&lt;td>Datum im Format von ISO 8601.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>@iso&lt;/code>&lt;/td>
&lt;td>2023-12-24:12:00+00:00&lt;/td>
&lt;td>Datum und Zeitangabe im Format von ISO 8601 in UTC.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>@lat&lt;/code>&lt;/td>
&lt;td>48.77909743853026&lt;/td>
&lt;td>Längengrad&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>@lng&lt;/code>&lt;/td>
&lt;td>9.18665139434279&lt;/td>
&lt;td>Breitengrad&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>@urlscheme&lt;/code>&lt;/td>
&lt;td>https://&lt;/td>
&lt;td>Schema einer URL&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>@netloc&lt;/code>&lt;/td>
&lt;td>fdmlab.landesarchiv-bw.de&lt;/td>
&lt;td>Adresse einer URL&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>@urlpath&lt;/code>&lt;/td>
&lt;td>/kontakt/&lt;/td>
&lt;td>Pfad einer URL&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="keine-transformation-beim-geburtsort">Keine Transformation beim Geburtsort&lt;/h3>
&lt;p>Die Spalte &amp;ldquo;Geburtsort&amp;rdquo; beinhaltet zwar ebenfalls kleinere Schreib- oder Tippfehler.
Bei zusätzlichen Spalten wird bei OpenRefine-Wikibase automatisch die Fuzzy-Suche aktiviert.&lt;/p>
&lt;p>Die für den Reconciliation Vorgang umgewandelten Spalten sind in Abbildung 2 abgebildet.&lt;/p>
&lt;figure id="figure-bildschirmfoto-des-projektes-nach-den-transformationen">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Bildschirmfoto des Projektes nach den Transformationen." srcset="
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-wikidata-datenset-modified_hu8a50896a136b864b5b5efb595900f5d6_28741_8bb2bca467f6dcff84d8b2f29f04a7a3.webp 400w,
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-wikidata-datenset-modified_hu8a50896a136b864b5b5efb595900f5d6_28741_c25c5069e0e885978bda3261db9cf6d6.webp 760w,
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-wikidata-datenset-modified_hu8a50896a136b864b5b5efb595900f5d6_28741_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-wikidata-datenset-modified_hu8a50896a136b864b5b5efb595900f5d6_28741_8bb2bca467f6dcff84d8b2f29f04a7a3.webp"
width="512"
height="307"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Bildschirmfoto des Projektes nach den Transformationen.
&lt;/figcaption>&lt;/figure>
&lt;h3 id="abgleich-durchführen">Abgleich durchführen&lt;/h3>
&lt;p>Den Reconciliation Vorgang starten wir mit
&amp;ldquo;Name&amp;quot;
&lt;i class="far fa-caret-square-down pr-1 fa-fw">&lt;/i>&amp;quot;Reconcile&amp;quot;
&lt;i class="fas fa-caret-right pr-1 fa-fw">&lt;/i>&amp;quot;Start reconciling&amp;rdquo;
und den in Abbildung 3 gezeigten Einstellungen.
Dabei ist darauf zu achten, dass beim Geburtsdatum nicht nach dem Namen der Eigenschaft (&amp;ldquo;Geburtsdatum&amp;rdquo;) gesucht wird, sondern stattdessen die &lt;em>Property-ID&lt;/em> &lt;code>P569&lt;/code> mit der &lt;em>subfield&lt;/em> Ergänzung &lt;code>@year&lt;/code> verwendet wird.&lt;/p>
&lt;figure id="figure-bildschirmfoto-der-einstellungen-für-den-reconciliation-dialog">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Bildschirmfoto der Einstellungen für den Reconciliation Dialog." srcset="
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-wikidata-dialog-settings_hu6bb4ece65fbf59914203758c62c9de4e_29991_7efa3e9ec8efe06d69d92ae8330c9f87.webp 400w,
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-wikidata-dialog-settings_hu6bb4ece65fbf59914203758c62c9de4e_29991_2f45f9499045371d9e46f4e0642383fa.webp 760w,
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-wikidata-dialog-settings_hu6bb4ece65fbf59914203758c62c9de4e_29991_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-wikidata-dialog-settings_hu6bb4ece65fbf59914203758c62c9de4e_29991_7efa3e9ec8efe06d69d92ae8330c9f87.webp"
width="760"
height="499"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Bildschirmfoto der Einstellungen für den Reconciliation Dialog.
&lt;/figcaption>&lt;/figure>
&lt;p>Durch die ergänzenden Spalten konnten bei unserem Experiment 12 von 13 Politikern mit hoher Konfidenz automatisch zugeordnet werden.
Wie in Abbildung 4 gezeigt, konnte für Peter Hauk kein Treffer gefunden werden, weil &lt;code>Haucl&lt;/code> für das Fuzzy-Matching zu weit von &lt;code>Hauk&lt;/code> entfernt ist.&lt;/p>
&lt;figure id="figure-bildschirmfoto-der-ergebnisse-des-reconciliation-vorgangs">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Bildschirmfoto der Ergebnisse des Reconciliation Vorgangs." srcset="
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-wikidata-results_huf3975027bcb76935fe0b42adfa4767f3_46907_d930d39a42761681504df7b1d50972f6.webp 400w,
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-wikidata-results_huf3975027bcb76935fe0b42adfa4767f3_46907_3478d5c21e600d30046437e8ee461a4e.webp 760w,
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-wikidata-results_huf3975027bcb76935fe0b42adfa4767f3_46907_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-wikidata-results_huf3975027bcb76935fe0b42adfa4767f3_46907_d930d39a42761681504df7b1d50972f6.webp"
width="707"
height="537"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Bildschirmfoto der Ergebnisse des Reconciliation Vorgangs.
&lt;/figcaption>&lt;/figure>
&lt;h3 id="weiterführende-informationen">Weiterführende Informationen&lt;/h3>
&lt;p>Es lohnt sich die &lt;a href="https://openrefine-wikibase.readthedocs.io/en/latest/scoring.html" target="_blank" rel="noopener">Dokumentation über die Bewertung einzelner Feldtypen&lt;/a> genauer durchzulesen.
Zum Beispiel hat die Bewertung einen Bereich von 0 bis 100 (keine Übereinstimmung bis volle Übereinstimmung), und es wird ein Abgleich von Geokoordinaten unterstützt. Wobei beim Koordinatenabgleich schon eine Abweichung von 1km als &amp;ldquo;keine Übereinstimmung&amp;rdquo; interpretiert wird.&lt;/p>
&lt;h2 id="aufgabe-2-suchbereich-einschränken">Aufgabe 2: Suchbereich einschränken&lt;/h2>
&lt;p>In Wikidata befinden sich deutlich mehr Daten, als in der GND, und auch das Datenschema ist deutlich komplexer.
Als Ergänzung bietet der OpenRefine-Wikibase Reconciliation Service die Möglichkeit so genannte &lt;a href="https://www.w3.org/TR/sparql11-query/#propertypaths" target="_blank" rel="noopener">Property Paths&lt;/a> zu verwenden.
Bei den &lt;em>Property Paths&lt;/em> werden aktuell nur die Operatoren &lt;code>/&lt;/code> und &lt;code>|&lt;/code> unterstützt.&lt;/p>
&lt;p>Dies zeigen wir an einem konkreten Beispiel.&lt;/p>
&lt;blockquote>
&lt;p>💾 Wir benötigen die folgende Datei (Rechtsklick und &amp;ldquo;Ziel speichern unter&amp;hellip;&amp;rdquo;):&lt;/p>
&lt;/blockquote>
&lt;a href="https://fdmlab.landesarchiv-bw.de/data/openrefine-workshop/16_staedte.csv" target="_blank">
&lt;i class="fas fa-file-csv pr-1 fa-fw">&lt;/i>Städte&lt;/a>
&lt;p>Was an dem Projekt &amp;ldquo;Städte&amp;rdquo; direkt auffällt ist, dass wir es hier nicht nur mit Städten zu tun haben.
Das Projekt beinhaltet Bundesländer aus Deutschland, Bundestaaten in den USA, sowie gleichnamige Städte in den jeweiligen Ländern.&lt;/p>
&lt;p>Da die im Folgenden entwickelten Anfragen recht lange rechnen, reduzieren wir zum Testen wie in Abbildung 5 die Einträge mit einem Sternchen-Filter auf vier.&lt;/p>
&lt;figure id="figure-bildschirmfoto-der-mit-sternen-gefilterten-einträge">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Bildschirmfoto der mit Sternen gefilterten Einträge." srcset="
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-cities-starred_hu2489efc0302daaf77ee8417a46d4a3b3_7660_46de870d33f2eea77162344c85956591.webp 400w,
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-cities-starred_hu2489efc0302daaf77ee8417a46d4a3b3_7660_8cf90b151e5af99251fc0bf0f4b35c8b.webp 760w,
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-cities-starred_hu2489efc0302daaf77ee8417a46d4a3b3_7660_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-cities-starred_hu2489efc0302daaf77ee8417a46d4a3b3_7660_46de870d33f2eea77162344c85956591.webp"
width="390"
height="118"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Bildschirmfoto der mit Sternen gefilterten Einträge.
&lt;/figcaption>&lt;/figure>
&lt;p>Ein direktes Vorgehen wäre, den Reconciliation Vorgang in vier Schritten durchzuführen:&lt;/p>
&lt;ol>
&lt;li>Filtern nach &amp;ldquo;Country Code&amp;rdquo; &lt;code>US&lt;/code> und Abgleich mit &lt;a href="https://www.wikidata.org/wiki/Q35657" target="_blank" rel="noopener">Bundesstaat der Vereinigten Staaten&lt;/a>.&lt;/li>
&lt;li>Filtern nach &amp;ldquo;Country Code&amp;rdquo; &lt;code>US&lt;/code> und Abgleich mit &lt;a href="https://www.wikidata.org/wiki/Q1093829" target="_blank" rel="noopener">City in den Vereinigten Staaten&lt;/a>.&lt;/li>
&lt;li>Filtern nach &amp;ldquo;Country Code&amp;rdquo; &lt;code>DE&lt;/code> und Abgleich mit &lt;a href="https://www.wikidata.org/wiki/Q1221156" target="_blank" rel="noopener">Bundesland&lt;/a>.&lt;/li>
&lt;li>Filtern nach &amp;ldquo;Country Code&amp;rdquo; &lt;code>DE&lt;/code> und Abgleich mit &lt;a href="https://www.wikidata.org/wiki/Q42744322" target="_blank" rel="noopener">Stadt in Deutschland&lt;/a>.&lt;/li>
&lt;/ol>
&lt;p>In diesem Fall wollen wir aber einige erweiterte Features der &lt;em>OpenRefine-Wikibase Reconciliation API&lt;/em> testen.&lt;/p>
&lt;h3 id="einfacher-abgleich">Einfacher Abgleich&lt;/h3>
&lt;p>Starten wir direkt auf den vier gefilterten Einträgen einen Reconciliation Vorgang gegen die deutschsprachige Version der Wikidata Reconciliation API, so bekommen wir direkt schon einige Entitätstypen vorgeschlagen.
Nach kurzer Recherche können wir die &lt;a href="https://www.wikidata.org/wiki/Q56061" target="_blank" rel="noopener">Verwaltungseinheit&lt;/a> (&lt;code>Q56061&lt;/code>) als gemeinsame Oberklasse identifizieren.&lt;/p>
&lt;div class="mermaid">---
title: Abfrage in Wikidata - einfacher Abgleich
config:
look: handDrawn
theme: neutral
---
flowchart LR
subgraph entities["Entitäten"]
direction LR
arkansas["Arkansas"]
click bw href "https://www.wikidata.org/wiki/Q1612" "Q1612" _blank
bw["Baden-Württemberg"]
click bw href "https://www.wikidata.org/wiki/Q985" "Q985" _blank
stuttgart_bw["Stuttgart, BW"]
click bw href "https://www.wikidata.org/wiki/Q1022" "Q1022" _blank
stuttgart_ar["Stuttgart, AR"]
click bw href "https://www.wikidata.org/wiki/Q79844" "Q79844" _blank
end
adminBody[["Verwaltungseinheit"]]
click adminBody href "https://www.wikidata.org/wiki/Q56061" "Q56061" _blank
p_instanceOf{{"ist ein(e)"}}
click p_instanceOf href "https://www.wikidata.org/wiki/Property:P31" "P31" _blank
bw --> p_instanceOf --> adminBody
&lt;/div>
&lt;p>Wie in Abbildung 6 gezeigt, verwenden wir also &lt;code>Q56061&lt;/code> als Typ für den Reconciliation Vorgang.&lt;/p>
&lt;figure id="figure-bildschirmfoto-der-einstellungen-für-den-reconciliation-vorgang-mit-wikidata---typeinschränkung">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Bildschirmfoto der Einstellungen für den Reconciliation Vorgang mit Wikidata - Typeinschränkung." srcset="
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/_hufa7d57f95e6721aad0e68555810f3fdc_38405_64258401194b3e2b1257ec7403649729.webp 400w,
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/_hufa7d57f95e6721aad0e68555810f3fdc_38405_4bdfef1ff7a7b6c3b958140f416bc895.webp 760w,
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/_hufa7d57f95e6721aad0e68555810f3fdc_38405_3e1cd8ec225e2b86f73af42c6220e1f5.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/_hufa7d57f95e6721aad0e68555810f3fdc_38405_64258401194b3e2b1257ec7403649729.webp"
width="760"
height="496"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Bildschirmfoto der Einstellungen für den Reconciliation Vorgang mit Wikidata - Typeinschränkung.
&lt;/figcaption>&lt;/figure>
&lt;p>Hier bekommen wir zwar schon richtige Ergebnisse zurück.
Diese sind jedoch gemischt mit Wahlbezirken, historischen Orten, usw. und müssten manuell richtig zugeordnet werden.&lt;/p>
&lt;h3 id="abgleich-mit-instanzfilter">Abgleich mit Instanzfilter&lt;/h3>
&lt;p>Wenn wir in einem Reconciliation Vorgang nach mehreren Typen suchen wollen, so können wir das mit einem Trick in OpenRefine umsetzen.
Konkret suchen wir nach &lt;a href="https://www.wikidata.org/wiki/Q107390" target="_blank" rel="noopener">Bundesstaat&lt;/a>, &lt;a href="https://www.wikidata.org/wiki/Q515" target="_blank" rel="noopener">Stadt&lt;/a> und &lt;a href="https://www.wikidata.org/wiki/Q3957" target="_blank" rel="noopener">Kleinstadt&lt;/a>.
Dafür deaktivieren wir den Filter auf die markierten Zeilen und fügen via
&amp;ldquo;Item&amp;quot;
&lt;i class="far fa-caret-square-down pr-1 fa-fw">&lt;/i>&amp;quot;Edit column&amp;quot;
&lt;i class="fas fa-caret-right pr-1 fa-fw">&lt;/i>&amp;quot;Add column based on this column&amp;hellip;&amp;rdquo;
eine neue Spalte &amp;ldquo;Types&amp;rdquo; hinzu.&lt;/p>
&lt;p>Als Werte für die neue Spalte &amp;ldquo;Types&amp;rdquo; nehmen wir &lt;code>&amp;quot;Bundesstaat|Stadt|Kleinstadt&amp;quot;&lt;/code> und wandeln sie via
&amp;ldquo;Types&amp;quot;
&lt;i class="far fa-caret-square-down pr-1 fa-fw">&lt;/i>&amp;quot;Edit cells&amp;quot;
&lt;i class="fas fa-caret-right pr-1 fa-fw">&lt;/i>&amp;quot;Split multi-valued cells&amp;hellip;&amp;rdquo;
auf dem Trennzeichen &lt;code>|&lt;/code> in eine Record Struktur um. Das gefilterte Ergebnis sollte dann aussehen, wie in Abbildung 7.&lt;/p>
&lt;figure id="figure-bildschirmfoto-des-projektes-nach-dem-hinzufügen-der-spalte-types">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Bildschirmfoto des Projektes nach dem Hinzufügen der Spalte Types." srcset="
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-cities-starred-record_hu81fd005f3aa34aa450a0571d2c1568d7_18927_c17aba1946a60fc32020ab1ca2c8212f.webp 400w,
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-cities-starred-record_hu81fd005f3aa34aa450a0571d2c1568d7_18927_72bd73753af08e62bc4b4955d0df4439.webp 760w,
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-cities-starred-record_hu81fd005f3aa34aa450a0571d2c1568d7_18927_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/screenshot-openrefine-cities-starred-record_hu81fd005f3aa34aa450a0571d2c1568d7_18927_c17aba1946a60fc32020ab1ca2c8212f.webp"
width="460"
height="295"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Bildschirmfoto des Projektes nach dem Hinzufügen der Spalte Types.
&lt;/figcaption>&lt;/figure>
&lt;p>Der Hintergrund für diese Datenerweiterung ist, dass OpenRefine mehrere Werte in einer Record Struktur als &amp;ldquo;Oder&amp;rdquo; verknüpft betrachtet.
Baden-Württemberg kann also ein Bundesstaat sein, oder eine Stadt, oder eine Kleinstadt. &lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/p>
&lt;div class="mermaid">---
title: Abfrage in Wikidata - Abgleich mit Instanzfilter
config:
look: handDrawn
theme: neutral
---
flowchart LR
subgraph entities["Entitäten"]
direction LR
arkansas["Arkansas"]
click bw href "https://www.wikidata.org/wiki/Q1612" "Q1612" _blank
bw["Baden-Württemberg"]
click bw href "https://www.wikidata.org/wiki/Q985" "Q985" _blank
stuttgart_bw["Stuttgart, BW"]
click bw href "https://www.wikidata.org/wiki/Q1022" "Q1022" _blank
stuttgart_ar["Stuttgart, AR"]
click bw href "https://www.wikidata.org/wiki/Q79844" "Q79844" _blank
end
adminBody[["Verwaltungseinheit"]]
click adminBody href "https://www.wikidata.org/wiki/Q56061" "Q56061" _blank
federatedState["Bundesstaat"]
click federatedState href "https://www.wikidata.org/wiki/Q107390" "Q107390" _blank
city["Stadt"]
click city href "https://www.wikidata.org/wiki/Q515" "Q515" _blank
town["Kleinstadt"]
click town href "https://www.wikidata.org/wiki/Q3957" "Q3957" _blank
p_instanceOf{{"ist ein(e)"}}
click p_instanceOf href "https://www.wikidata.org/wiki/Property:P31" "P31" _blank
p_instanceOf2{{"ist ein(e)"}}
click p_instanceOf2 href "https://www.wikidata.org/wiki/Property:P31" "P31" _blank
or{"oder"}
bw --> p_instanceOf --> adminBody
bw --> p_instanceOf2 --> or --> federatedState &amp; city &amp; town
&lt;/div>
&lt;p>Die neue Spalte &amp;ldquo;Types&amp;rdquo; berücksichtigen wir beim Reconciliation Dialog in Abbildung 8 als Property &lt;code>P31&lt;/code> &amp;ldquo;ist ein(e)&amp;rdquo;.
Dadurch werden die Einträge mit einem &amp;ldquo;falschen&amp;rdquo; Typ zwar nicht weggefiltert, sie bekommen aber einen niedrigeren Score und rutschen weiter nach unten.&lt;/p>
&lt;figure id="figure-bildschirmfoto-der-einstellungen-für-den-reconciliation-vorgang-mit-wikidata---spalte-types">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Bildschirmfoto der Einstellungen für den Reconciliation Vorgang mit Wikidata - Spalte Types." srcset="
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/_hu3935471ce17dd1ce3c507cf99f31c84f_40104_27938291cbe50b3c5846e5367c16860c.webp 400w,
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/_hu3935471ce17dd1ce3c507cf99f31c84f_40104_5c7f7ab68d3c135daafb520a84ad0089.webp 760w,
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/_hu3935471ce17dd1ce3c507cf99f31c84f_40104_66eac04df174323f8c0380ee09556249.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/_hu3935471ce17dd1ce3c507cf99f31c84f_40104_27938291cbe50b3c5846e5367c16860c.webp"
width="760"
height="494"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Bildschirmfoto der Einstellungen für den Reconciliation Vorgang mit Wikidata - Spalte Types.
&lt;/figcaption>&lt;/figure>
&lt;h3 id="abgleich-mit-country-code">Abgleich mit Country Code&lt;/h3>
&lt;p>In der Spalte &amp;ldquo;Country Code&amp;rdquo; haben wir passende Ländercodes für die einzelnen Entitäten.
Die Ländercodes sind jedoch nicht direkt mit den einzelnen Entitäten verknüpft.
Hier helfen uns so genannte &lt;em>Property Paths&lt;/em>.
Mit dem &lt;em>Property Path&lt;/em> &lt;code>P17/P297&lt;/code> in Abbildung 9 können wir ausdrücken, dass Baden-Württemberg in einem Land mit dem Ländercode &lt;code>DE&lt;/code> liegen soll.&lt;/p>
&lt;div class="mermaid">---
title: Abfrage in Wikidata - Abgleich mit Country Code
config:
look: handDrawn
theme: neutral
---
flowchart LR
subgraph entities["Entitäten"]
direction LR
arkansas["Arkansas"]
click bw href "https://www.wikidata.org/wiki/Q1612" "Q1612" _blank
bw["Baden-Württemberg"]
click bw href "https://www.wikidata.org/wiki/Q985" "Q985" _blank
stuttgart_bw["Stuttgart, BW"]
click bw href "https://www.wikidata.org/wiki/Q1022" "Q1022" _blank
stuttgart_ar["Stuttgart, AR"]
click bw href "https://www.wikidata.org/wiki/Q79844" "Q79844" _blank
end
adminBody[["Verwaltungseinheit"]]
click adminBody href "https://www.wikidata.org/wiki/Q56061" "Q56061" _blank
countryCode["DE"]
click countryCode href "https://www.iso.org/obp/ui/#iso:code:3166:DE" "DE" _blank
federatedState["Bundesstaat"]
click federatedState href "https://www.wikidata.org/wiki/Q107390" "Q107390" _blank
city["Stadt"]
click city href "https://www.wikidata.org/wiki/Q515" "Q515" _blank
town["Kleinstadt"]
click town href "https://www.wikidata.org/wiki/Q3957" "Q3957" _blank
p_instanceOf{{"ist ein(e)"}}
click p_instanceOf href "https://www.wikidata.org/wiki/Property:P31" "P31" _blank
p_instanceOf2{{"ist ein(e)"}}
click p_instanceOf2 href "https://www.wikidata.org/wiki/Property:P31" "P31" _blank
p_country{{"Land"}}
click p_country href "https://www.wikidata.org/wiki/Property:P17" "P17" _blank
p_iso_country{{"ISO 3166-1 alpha-2"}}
click p_iso_country href "https://www.wikidata.org/wiki/Property:P297" "P297" _blank
sequence1{"/"}
click sequence1 href "https://www.w3.org/TR/sparql11-query/#propertypaths" "Sequence" _blank
bw --> p_instanceOf --> adminBody
bw --> p_country --> sequence1 --> p_iso_country --> countryCode
bw --> p_instanceOf2 --> or --> federatedState &amp; city &amp; town
&lt;/div>
&lt;figure id="figure-bildschirmfoto-der-einstellungen-für-den-reconciliation-vorgang-mit-wikidata---spalte-country-code">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Bildschirmfoto der Einstellungen für den Reconciliation Vorgang mit Wikidata - Spalte Country Code." srcset="
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/_huf1e791da0098100c858970edab7e0266_43135_f26e98461fcde988fd0ed0e45dd4d23d.webp 400w,
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/_huf1e791da0098100c858970edab7e0266_43135_ea4e20db4d0a88eac987a752cb084905.webp 760w,
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/_huf1e791da0098100c858970edab7e0266_43135_e223d72da9f16104a0304154930f1363.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/_huf1e791da0098100c858970edab7e0266_43135_f26e98461fcde988fd0ed0e45dd4d23d.webp"
width="760"
height="496"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Bildschirmfoto der Einstellungen für den Reconciliation Vorgang mit Wikidata - Spalte Country Code.
&lt;/figcaption>&lt;/figure>
&lt;p>Der Abgleich dauert nun schon deutlich länger, jedoch passt die Sortierung der Ergebnisse deutlich besser.
Nur bei den verschiedenen gleichnamigen Städten in den USA haben wir noch Probleme bei der (korrekten) Sortierung der Suchvorschläge.&lt;/p>
&lt;h3 id="abgleich-mit-state-code">Abgleich mit State Code&lt;/h3>
&lt;p>In der Spalte &amp;ldquo;State Code&amp;rdquo; haben wir zusätzlich das Kürzel des jeweiligen Bundeslandes/staates, in dem die jeweilige Stadt liegt.
Diese Werte finden wir zum Beispiel bei den alternativen Bezeichnungen für die einzelnen Bundesländer/staaten.
Die so genannten Aliase lassen sich über spezielle Eigenschaften abfragen, bei denen man ein Kürzel mit einem Sprachcode kombiniert.
Die englischsprachigen Aliase erhält man also über &lt;code>Aen&lt;/code>. In der folgenden Tabelle sind weitere Kürzel mit Beispielen gelistet.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Kürzel&lt;/th>
&lt;th>Steht für&lt;/th>
&lt;th>Bedeutung&lt;/th>
&lt;th>Beispiel&lt;/th>
&lt;th>Inhalt&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>L&lt;/code>&lt;/td>
&lt;td>Label&lt;/td>
&lt;td>Bezeichnung&lt;/td>
&lt;td>&lt;code>Lde&lt;/code>&lt;/td>
&lt;td>Baden-Württemberg&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>D&lt;/code>&lt;/td>
&lt;td>Description&lt;/td>
&lt;td>Beschreibung&lt;/td>
&lt;td>&lt;code>Den&lt;/code>&lt;/td>
&lt;td>Land (federal state) in southwestern Germany&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>A&lt;/code>&lt;/td>
&lt;td>Alias&lt;/td>
&lt;td>Alternative Bezeichnungen&lt;/td>
&lt;td>&lt;code>Afr&lt;/code>&lt;/td>
&lt;td>BW, Baden-Württemberg, Land Baden-Württemberg, État du Bade-Wurtemberg, DE-BW, BaWü&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>S&lt;/code>&lt;/td>
&lt;td>Sidelink&lt;/td>
&lt;td>Seitenlink&lt;/td>
&lt;td>&lt;code>Sdewiki&lt;/code>&lt;/td>
&lt;td>&lt;a href="https://de.wikipedia.org/wiki/Baden-W%C3%BCrttemberg" target="_blank" rel="noopener">https://de.wikipedia.org/wiki/Baden-W%C3%BCrttemberg&lt;/a>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Hier haben wir das Problem, dass wir wieder eine Art &amp;ldquo;Oder Verknüpfung&amp;rdquo; benötigen.
Diesmal haben wir nicht verschiedene Werte, sondern verschiedene Arten von Verknüpfungen.
Bei den Bundesländern/staaten selbst befindet sich das Kürzel in der Liste der Aliase.
Bei den Städten befindet sich das Kürzel des Bundeslandes/staates in &lt;strong>einem&lt;/strong> der übergeordneten Objekte.&lt;/p>
&lt;p>Auch hier helfen uns die &lt;em>Property Paths&lt;/em>.
Mit &lt;code>Aen|(P131/Aen)|(P131/P131/Aen)&lt;/code> in Abbildung 10 können wir ausdrücken, dass der gesuchte Wert entweder im englischsprachigen Alias (&lt;code>Aen&lt;/code>), oder (&lt;code>|&lt;/code>) im Alias einer der beiden übergeordneten Verwaltungseinheiten (&lt;code>P131/Aen&lt;/code> bzw. &lt;code>P131/P131/Aen&lt;/code>) zu finden sein soll.&lt;/p>
&lt;div class="mermaid">---
title: Abfrage in Wikidata - Abgleich mit State Code
config:
look: handDrawn
theme: neutral
---
flowchart LR
subgraph entities["Entitäten"]
direction LR
arkansas["Arkansas"]
click bw href "https://www.wikidata.org/wiki/Q1612" "Q1612" _blank
bw["Baden-Württemberg"]
click bw href "https://www.wikidata.org/wiki/Q985" "Q985" _blank
stuttgart_bw["Stuttgart, BW"]
click bw href "https://www.wikidata.org/wiki/Q1022" "Q1022" _blank
stuttgart_ar["Stuttgart, AR"]
click bw href "https://www.wikidata.org/wiki/Q79844" "Q79844" _blank
end
adminBody[["Verwaltungseinheit"]]
click adminBody href "https://www.wikidata.org/wiki/Q56061" "Q56061" _blank
countryCode["DE"]
click countryCode href "https://www.iso.org/obp/ui/#iso:code:3166:DE" "DE" _blank
stateCode["BW"]
click stateCode href "https://www.wikidata.org/wiki/Help:Aliases" "Alias" _blank
federatedState["Bundesstaat"]
click federatedState href "https://www.wikidata.org/wiki/Q107390" "Q107390" _blank
city["Stadt"]
click city href "https://www.wikidata.org/wiki/Q515" "Q515" _blank
town["Kleinstadt"]
click town href "https://www.wikidata.org/wiki/Q3957" "Q3957" _blank
p_instanceOf{{"ist ein(e)"}}
click p_instanceOf href "https://www.wikidata.org/wiki/Property:P31" "P31" _blank
p_instanceOf2{{"ist ein(e)"}}
click p_instanceOf2 href "https://www.wikidata.org/wiki/Property:P31" "P31" _blank
p_country{{"Land"}}
click p_country href "https://www.wikidata.org/wiki/Property:P17" "P17" _blank
p_iso_country{{"ISO 3166-1 alpha-2"}}
click p_iso_country href "https://www.wikidata.org/wiki/Property:P297" "P297" _blank
p_alias{{"Aen"}}
click p_alias "https://www.wikidata.org/wiki/Help:Aliases" "Alias" _blank
p_located1{{"befindet sich in"}}
click p_located1 href "https://www.wikidata.org/wiki/Property:P131" "P131" _blank
p_located2{{"befindet sich in"}}
click p_located2 href "https://www.wikidata.org/wiki/Property:P131" "P131" _blank
p_located3{{"befindet sich in"}}
click p_located3 href "https://www.wikidata.org/wiki/Property:P131" "P131" _blank
or{"oder"}
union{"|"}
click union href "https://www.w3.org/TR/sparql11-query/#propertypaths" "Union" _blank
sequence0{"/"}
click sequence0 href "https://www.w3.org/TR/sparql11-query/#propertypaths" "Sequence" _blank
sequence1{"/"}
click sequence1 href "https://www.w3.org/TR/sparql11-query/#propertypaths" "Sequence" _blank
sequence2{"/"}
click sequence2 href "https://www.w3.org/TR/sparql11-query/#propertypaths" "Sequence" _blank
sequence3{"/"}
click sequence3 href "https://www.w3.org/TR/sparql11-query/#propertypaths" "Sequence" _blank
bw --> p_instanceOf --> adminBody
bw --> p_country --> sequence0 --> p_iso_country --> countryCode
bw --> union --> p_alias &amp; p_located1 &amp; p_located2
p_alias --> stateCode
p_located1 --> sequence1 --> p_alias
p_located2 --> sequence2 --> p_located3 --> sequence3 --> p_alias
bw --> p_instanceOf2 --> or --> federatedState &amp; city &amp; town
&lt;/div>
&lt;figure id="figure-bildschirmfoto-der-einstellungen-für-den-reconciliation-vorgang-mit-wikidata---spalte-state-code">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Bildschirmfoto der Einstellungen für den Reconciliation Vorgang mit Wikidata - Spalte State Code." srcset="
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/_hu0f682581000c6cc89e53ca2d9331eecf_41997_5f24a6f63dd459f8d70df9781915db52.webp 400w,
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/_hu0f682581000c6cc89e53ca2d9331eecf_41997_73af2435f784a4733bff4d14e8037301.webp 760w,
/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/_hu0f682581000c6cc89e53ca2d9331eecf_41997_8b4ffef2f0628638f6e752676c7fc096.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/16-erweiterter-abgleich-mit-wikidata/_hu0f682581000c6cc89e53ca2d9331eecf_41997_5f24a6f63dd459f8d70df9781915db52.webp"
width="760"
height="496"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Bildschirmfoto der Einstellungen für den Reconciliation Vorgang mit Wikidata - Spalte State Code.
&lt;/figcaption>&lt;/figure>
&lt;h3 id="ergebnis">Ergebnis&lt;/h3>
&lt;p>Bei unserem Experiment konnten wir mit dieser komplexen Reconciliation Abfrage die Bundesländer/staaten und gleichnamigen Städte fast immer voneinander &amp;ldquo;trennen&amp;rdquo;.&lt;/p>
&lt;p>Ausnahmen gibt es zum Beispiel in einzelnen amerikanischen Bundesstaaten, wo es teilweise ebenfalls mehrere Städte mit dem gleichen Namen gibt, so dass das Staatskürzel zur Identifikation nicht ausreichend ist.&lt;/p>
&lt;p>Der Reconciliation Vorgang benötigte für die knapp 100 Objekte mehrere Anläufe von jeweils mehreren Minuten.
Je nachdem, wie gut sich die Daten im Vorfeld separieren lassen, lohnt sich im Vergleich die in der Einleitung erwähnte Strategie des mehrmaligen Abgleichs auf einer gefilterten Untermenge der Daten bzw. die separate Behandlung von Einzelfällen.&lt;/p>
&lt;h2 id="fazit">Fazit&lt;/h2>
&lt;p>Die &lt;em>OpenRefine-Wikibase Reconciliation API&lt;/em> bietet nicht so viele Suchfeatures wie die &lt;em>lobid gnd OpenRefine Reconciliation API&lt;/em>.
Es ist interessant, dass bei der Spalte auf der abgeglichen wird, das Fuzzy-matching manuell aktiviert werden muss, es auf den zusätzlich Spalten aber automatisch durchgeführt wird.&lt;/p>
&lt;p>Etwas versteckt ist die Möglichkeit auf sprachspezifische Bezeichnungen &lt;code>L&lt;/code>, Beschreibungen &lt;code>D&lt;/code>, Aliase &lt;code>A&lt;/code> und Seitenlinks &lt;code>S&lt;/code> durch Hinzufügen des jeweiligen Sprachcodes zuzugreifen.&lt;/p>
&lt;p>Das Matching von Teilausdrücken über &lt;em>subfields&lt;/em> wie &lt;code>@year&lt;/code> ist recht komfortabel, da dadurch die Information der Datentransformation, also nur Jahr zu berücksichtigen, in der Reconciliation Abfrage und nicht in den Daten selbst steckt.&lt;/p>
&lt;p>Mit den &lt;em>Property Paths&lt;/em> können wir komplexe Anfragen durchführen und die Suchmenge sehr spezifisch einschränken.
Jedoch benötigt die Berechnung der Antwort recht lange und wir erlebten bei unseren Tests häufigere Abbrüche des Vorgangs.&lt;/p>
&lt;p>Da als Suchtechnologie bei Wikibase üblicherweise wie bei lobid gnd &lt;a href="https://www.elastic.co/de/elasticsearch/" target="_blank" rel="noopener">ElasticSearch&lt;/a> als Suchtechnologie eingesetzt wird, könnte es sein, dass weitere Features der &lt;a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#query-string-syntax" target="_blank" rel="noopener">Query string syntax&lt;/a> zukünftig ebenfalls nutzbar sein werden.&lt;/p>
&lt;hr>
&lt;p>Im nächsten Teil beschäftigen wir uns mit dem erweiterten Datenabgleich zwischen OpenRefine und Getty.&lt;/p>
&lt;ul class="cta-group">
&lt;li>
&lt;a href="https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/17-erweiterter-abgleich-mit-getty" class="btn btn-primary px-3 py-3">16 Erweiterter Abgleich mit Getty&lt;/a>
&lt;/li>
&lt;/ul>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>GitLab Issue zum Thema &lt;a href="https://gitlab.com/nfdi4culture/ta1-data-enrichment/openrefine-wikibase/-/issues/11" target="_blank" rel="noopener">Fuzzy-matching mit OpenRefine-Wikibase&lt;/a>.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>Details zu Records beim Reconciliation Vorgang unter &lt;a href="https://github.com/OpenRefine/OpenRefine/issues/3139" target="_blank" rel="noopener">Store and expose reconciliation candidate features&lt;/a> und darin verknüpften Issues.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>GND in lokale Datenbank laden (reloaded)</title><link>https://fdmlab.landesarchiv-bw.de/post/2022-12-gnd-in-lokale-datenbank-laden-reloaded/</link><pubDate>Tue, 13 Dec 2022 00:00:00 +0000</pubDate><guid>https://fdmlab.landesarchiv-bw.de/post/2022-12-gnd-in-lokale-datenbank-laden-reloaded/</guid><description>&lt;p>Wir setzen unser lokales Testsystem für Experimente mit der Linked Open Data Version der Gemeinsamen Normdatei mit &lt;strong>Oxigraph&lt;/strong> neu auf.&lt;/p>
&lt;p>Wir hatten vor über einem Jahr schon einen ausführlichen Artikel zum &lt;a href="https://fdmlab.landesarchiv-bw.de/post/2021-06-gnd-in-lokale-datenbank-laden/">Laden der GND in einen Apache Jena Triplestore&lt;/a> verfasst. Das beschriebene Setup ist nach wie vor im Einsatz und wir sind auch (meistens) zufrieden damit. Jedoch dauert das Einlesen von Daten doch recht lange, was das Aufsetzen von Ad-Hoc Experimenten erschwert.&lt;/p>
&lt;p>Daher haben wir als Alternative das relativ neue Projekt Oxigraph getestet.&lt;/p>
&lt;h2 id="datenbank-oxigraph">Datenbank: Oxigraph&lt;/h2>
&lt;figure class="float-right" id="figure-oxigraphhttpsgithubcomoxigraphoxigraph-logo">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="[Oxigraph](https://github.com/oxigraph/oxigraph) Logo." srcset="
/post/2022-12-gnd-in-lokale-datenbank-laden-reloaded/oxigraph_hu63b9f0ab308a14bda665a5c76457113b_25957_f2299a627e7fb33ac96514090804a724.webp 400w,
/post/2022-12-gnd-in-lokale-datenbank-laden-reloaded/oxigraph_hu63b9f0ab308a14bda665a5c76457113b_25957_1d6ee86304e49f7ccba2ffbaf645acd7.webp 760w,
/post/2022-12-gnd-in-lokale-datenbank-laden-reloaded/oxigraph_hu63b9f0ab308a14bda665a5c76457113b_25957_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/post/2022-12-gnd-in-lokale-datenbank-laden-reloaded/oxigraph_hu63b9f0ab308a14bda665a5c76457113b_25957_f2299a627e7fb33ac96514090804a724.webp"
width="200"
height="450"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
&lt;a href="https://github.com/oxigraph/oxigraph" target="_blank" rel="noopener">Oxigraph&lt;/a> Logo.
&lt;/figcaption>&lt;/figure>
&lt;p>Das Projekt &lt;a href="https://github.com/oxigraph/oxigraph" target="_blank" rel="noopener">Oxigraph&lt;/a> ermöglicht uns ein ähnliches Setup, wie wir es mit &lt;a href="https://jena.apache.org/" target="_blank" rel="noopener">Apache Jena&lt;/a> aufgebaut haben.
Anders als Apache Jena basiert Oxigraph auf der Programmiersprache &lt;a href="https://www.rust-lang.org/" target="_blank" rel="noopener">Rust&lt;/a> und verwendet &lt;a href="https://rocksdb.org/" target="_blank" rel="noopener">RocksDB&lt;/a> als Datenbank im Hintergrund.
Das ist für den Endanwender jedoch nicht sichtbar, so dass diese technischen Details sich hauptsächlich in einer schnelleren Verarbeitungsgeschwindigkeit bemerkbar machen.&lt;/p>
&lt;h2 id="einlesen-der-daten">Einlesen der Daten&lt;/h2>
&lt;p>Zum Einlesen haben wir uns die Datei &lt;code>authorities-gnd_lds.nt.gz&lt;/code> aus dem &lt;a href="https://data.dnb.de/opendata/" target="_blank" rel="noopener">DNB Data Dump&lt;/a> heruntergeladen.
Anders als in unserem Apache Jena Projekt, müssen wir die Komprimierung der Daten vor dem Einlesen mit &lt;code>gzip -d authorities-gnd_lds.nt.gz&lt;/code> auflösen. &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Wir arbeiten mit der folgenden Ordnerstruktur:&lt;/p>
&lt;div class="mermaid">---
title: Ordnerstruktur
config:
look: handDrawn
theme: neutral
---
flowchart TD
subgraph data[far:fa-folder-open data]
fuseki[far:fa-folder oxigraph]
gnd_triples[far:fa-folder gnd_triples]
end
root[far:fa-folder-open oxigraph_test] --> data
root --> README[far:fa-file README.md]
&lt;/div>
&lt;ul>
&lt;li>&lt;strong>README.md&lt;/strong>: Überblick über das Projekt und die Daten geben!&lt;/li>
&lt;li>&lt;strong>oxigraph&lt;/strong>: Ordner zum Persistieren der Datenbank von Oxigraph.&lt;/li>
&lt;li>&lt;strong>gnd_triples&lt;/strong>: Speicherort der &lt;code>.nt&lt;/code> Datei.&lt;/li>
&lt;/ul>
&lt;h3 id="einlese-variante-1">Einlese-Variante 1&lt;/h3>
&lt;p>In dieser Variante lassen wir zuerst die Daten in einem Container einlesen und dann in einem neuen Container anzeigen.
Der folgende Befehl startet einen Docker Container mit dem Verzeichnis der Daten zum Einlesen und einem Verzeichnis zum Speichern der Datenbank.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run -it --rm --name&lt;span class="o">=&lt;/span>gnd-oxigraph -v &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">PWD&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">/data/gnd_triples:/gnd_triples&amp;#34;&lt;/span> -v &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">PWD&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">/data/oxigraph:/data&amp;#34;&lt;/span> oxigraph/oxigraph --location /data load --file /gnd_triples/authorities-gnd_lds.nt
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Sobald der Einleseprozess beendet wurde und der Container sich schließt, können wir einen neuen Container zum Arbeiten mit den Daten starten.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run -d --rm --name&lt;span class="o">=&lt;/span>gnd-oxigraph -p 8080:7878 -v &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">PWD&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">/data/oxigraph:/data&amp;#34;&lt;/span> oxigraph/oxigraph --location /data serve --bind&lt;span class="o">=&lt;/span>0.0.0.0:7878
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Anschließend können wir die Benutzeroberfläche in einem Webbrowser über &lt;code>http://localhost:8080&lt;/code> aufrufen.
Der Port &lt;code>8080&lt;/code> wurde hierbei von uns im &lt;code>docker run&lt;/code> Befehl gesetzt und kann angepasst werden.&lt;/p>
&lt;h3 id="einlese-variante-2">Einlese-Variante 2&lt;/h3>
&lt;p>Wir können die Daten auch direkt &lt;strong>in&lt;/strong> dem Arbeitscontainer einlesen lassen.
Beim Starten des Containers müssen wir dabei zusätzlich den Pfad zu den GND Daten einbinden.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run -d --rm --name&lt;span class="o">=&lt;/span>gnd-oxigraph -p 8080:7878 -v &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">PWD&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">/data/gnd_triples:/gnd_triples&amp;#34;&lt;/span> -v &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">PWD&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">/data/oxigraph:/data&amp;#34;&lt;/span> oxigraph/oxigraph --location /data serve --bind&lt;span class="o">=&lt;/span>0.0.0.0:7878
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Anschließend starten wir den Einleseprozess, indem wir den Befehl &lt;code>oxigraph_server load&lt;/code> in dem laufenden Container ausführen.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker &lt;span class="nb">exec&lt;/span> -it gnd-oxigraph /usr/local/bin/oxigraph load --location /data --file /gnd_triples/authorities-gnd_lds.nt
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="3-anzeigen-der-daten">3. Anzeigen der Daten&lt;/h3>
&lt;p>Abschließend testen wir exemplarisch, ob die Daten nutzbar sind.
Hierfür verwenden wir eine SPARQL Abfrage mit einem Standardbeispiel aus der &lt;a href="https://d-nb.info/standards/elementset/gnd" target="_blank" rel="noopener">GND Ontology&lt;/a>.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sparql" data-lang="sparql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">SELECT&lt;/span> &lt;span class="nv">?p&lt;/span> &lt;span class="nv">?o&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">WHERE&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nl">&amp;lt;https://d-nb.info/gnd/118514091&amp;gt;&lt;/span> &lt;span class="nv">?p&lt;/span> &lt;span class="nv">?o&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="zusammenfassung-und-ausblick">Zusammenfassung und Ausblick&lt;/h2>
&lt;p>Oxigraph ist im Vergleich zu Apache Jena noch etwas grob an manchen Stellen und befindet sich noch in der aktiven Entwicklung.
Es ist also gut möglich, dass die hier verwendeten Befehle in einer späteren Version nicht mehr so funktioniert oder Schritte wie das Auflösen der &lt;code>.gz&lt;/code>-Komprimierung nicht mehr notwendig sind. &lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/p>
&lt;figure id="figure-bildschirmfoto-der-weboberfläche-von-oxigraph">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Bildschirmfoto der Weboberfläche von Oxigraph." srcset="
/post/2022-12-gnd-in-lokale-datenbank-laden-reloaded/oxigraph-screenshot_hu46c0a90aff7302944c5b3bc96ca6bf21_89821_9a012596cf5469f100ebbf1a0ff06c8a.webp 400w,
/post/2022-12-gnd-in-lokale-datenbank-laden-reloaded/oxigraph-screenshot_hu46c0a90aff7302944c5b3bc96ca6bf21_89821_eca82f98e844b81442eb250a334bbf3e.webp 760w,
/post/2022-12-gnd-in-lokale-datenbank-laden-reloaded/oxigraph-screenshot_hu46c0a90aff7302944c5b3bc96ca6bf21_89821_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/post/2022-12-gnd-in-lokale-datenbank-laden-reloaded/oxigraph-screenshot_hu46c0a90aff7302944c5b3bc96ca6bf21_89821_9a012596cf5469f100ebbf1a0ff06c8a.webp"
width="760"
height="485"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Bildschirmfoto der Weboberfläche von Oxigraph.
&lt;/figcaption>&lt;/figure>
&lt;p>Überrascht waren wir von der Geschwindigkeit, mit der die Daten der GND eingelesen und Abfragen ausgeführt werden können.
In der folgenden Tabelle ist ein direkter Vergleich mit unserem Apache Jena Setup für das Einlesens der GND und das Durchführens der Abfrage aus &lt;a href="https://fdmlab.landesarchiv-bw.de/post/2021-06-erste-experimente-mit-der-gnd/">Erste Experimente mit der GND&lt;/a> gelistet.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;/th>
&lt;th style="text-align:right">GND laden&lt;/th>
&lt;th style="text-align:right">Testabfrage&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Apache Jena&lt;/td>
&lt;td style="text-align:right">5.329,1s&lt;/td>
&lt;td style="text-align:right">17,5s&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Oxigraph&lt;/td>
&lt;td style="text-align:right">391,0s&lt;/td>
&lt;td style="text-align:right">3,6s&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Das ist natürlich kein ausführlicher oder repräsentativer Benchmark, zeigt aber direkt den Geschwindigkeitsunterschied mit den Daten mit denen wir aktuell arbeiten. Das ermöglichst uns zukünftig Umgebungen für Ad-Hoc Experimente mit der GND zu erstellen.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Wir haben für diesen Blogbeitrag Oxigraph in Version v0.3.8 und den GND Dump vom 13. Oktober 2022 verwendet.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://github.com/oxigraph/oxigraph/tree/main/server#using-a-docker-image" target="_blank" rel="noopener">Dokumentation zur Verwendung des Oxigraph Docker Image&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>NER Modell mit GND Starthilfe trainieren</title><link>https://fdmlab.landesarchiv-bw.de/post/2022-09-ner-modell-mit-gnd-starthilfe-trainieren/</link><pubDate>Tue, 27 Sep 2022 00:00:00 +0000</pubDate><guid>https://fdmlab.landesarchiv-bw.de/post/2022-09-ner-modell-mit-gnd-starthilfe-trainieren/</guid><description>&lt;p>In diesem Artikel beschäftigen wir uns mit dem Thema &lt;em>Named Entity Recognition&lt;/em>.
Wir trainieren ein eigenes Modell zur Erkennung von Kunst- und Kulturobjekten in unseren Erschließungsdaten und verwenden als Starthilfe die Gemeinsame Normdatei.&lt;/p>
&lt;h2 id="ner-und-erschließung">NER und Erschließung&lt;/h2>
&lt;p>Ein Arbeitsschritt bei der Erschließung ist die Erstellung von Deskriptoren, also die Identifikation von relevanten Entitäten in den zu verzeichnenden Archivalien.
Dazu gehören relevante Körperschaften, Personen, Orte und Dinge.
Wenn möglich, werden die identifizierten Entitäten zusätzlich mit passenden IDs aus der Gemeinsamen Normdatei (GND) versehen und somit semantisch verknüpft (Linked Data).
Im Bereich des maschinellen Lernens werden diese beiden Schritte &lt;em>Named Entity Recognition&lt;/em> (NER) und &lt;em>Named Entity Linking&lt;/em> (NEL) genannt.&lt;/p>
&lt;p>Dieser Arbeitsschritt findet in der Realität nicht unbedingt direkt bei der initialen Erfassung statt.
Wir haben im Landesarchiv noch analoge Findmittel, die wir Retrodigitalisieren, und digitale Findbücher, bei der die Schlagworte (Deskriptoren) fehlen oder unvollständig sind.&lt;/p>
&lt;p>In einem Experiment zur Vorbereitung eines Projektes im Kontext der Provenienzforschung testeten wir verschiedene Möglichkeiten NER zur Identifikation von beschriebenen Kunst- und Kulturobjekten in unseren Erschließungsdaten zu verwenden. &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;h2 id="ner-im-kontext-archiv">NER im Kontext Archiv&lt;/h2>
&lt;p>&lt;em>Named Entity Recognition&lt;/em> gehört zu den stabilen und gern genutzten KI Verfahren zur Extraktion von Informationen.
Dafür gibt es schon vortrainierte Modelle, die innerhalb eines &lt;em>Natural Language Processing&lt;/em> (NLP) Frameworks wie &lt;a href="https://spacy.io/" target="_blank" rel="noopener">spaCy&lt;/a> oder &lt;a href="https://github.com/flairNLP/flair" target="_blank" rel="noopener">flair&lt;/a> verwendet werden können.
Für unser Experiment haben wir uns für &lt;a href="https://spacy.io/" target="_blank" rel="noopener">spaCy&lt;/a> als NLP Framework entschieden, da es ein für uns passendes Ökosystem mitbringt.&lt;/p>
&lt;p>Hier ein mit NER verarbeiteter Beispieltext über das Landesarchiv Baden-Württemberg, welcher von der englischsprachigen Wikipedia angepasst wurde. &lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/p>
&lt;div class="entities" style="line-height: 2.5; direction: ltr">&lt;br>
&lt;mark class="entity" style="background: #cedb9c; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">
The State Archives
&lt;span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">ORG&lt;/span>
&lt;/mark>
of Baden-Württemberg (
&lt;mark class="entity" style="background: #cedb9c; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">
LABW
&lt;span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">ORG&lt;/span>
&lt;/mark>
) encompasses all state archives in
&lt;mark class="entity" style="background: #e7ba52; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">
Baden-Württemberg
&lt;span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">GPE&lt;/span>
&lt;/mark>
.&lt;br>
&lt;mark class="entity" style="background: #cedb9c; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">
The State Archives
&lt;span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">ORG&lt;/span>
&lt;/mark>
of Baden-Württemberg is part of the portfolio of
&lt;mark class="entity" style="background: #d6616b; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">
the Baden-Württemberg Ministry for Science, Research and Arts
&lt;span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">FAC&lt;/span>
&lt;/mark>
.&lt;br>It keeps historic documents that reach back to
&lt;mark class="entity" style="background: #e7cb94; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">
the middle ages
&lt;span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">DATE&lt;/span>
&lt;/mark>
.&lt;br>The current President of
&lt;mark class="entity" style="background: #cedb9c; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">
the State Archives
&lt;span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">ORG&lt;/span>
&lt;/mark>
of Baden-Württemberg has been Prof. Dr.
&lt;mark class="entity" style="background: #a55194; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">
Gerald Maier
&lt;span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">PERSON&lt;/span>
&lt;/mark>
since
&lt;mark class="entity" style="background: #e7cb94; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">
February 1st, 2018
&lt;span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">DATE&lt;/span>
&lt;/mark>
.&lt;br>It employs
&lt;mark class="entity" style="background: #843c39; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">
around 250
&lt;span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">CARDINAL&lt;/span>
&lt;/mark>
people at
&lt;mark class="entity" style="background: #843c39; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">
8
&lt;span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">CARDINAL&lt;/span>
&lt;/mark>
locations.&lt;br>&lt;/div>
&lt;hr>
&lt;p>Das Model &lt;em>en_core_web_lg&lt;/em> hat generell einen &lt;strong>f-score&lt;/strong> von &lt;strong>0,85&lt;/strong> und unterscheidet &lt;strong>18&lt;/strong> Arten von &lt;strong>Entitäten&lt;/strong>: CARDINAL, DATE, EVENT, FAC, GPE, LANGUAGE, LAW, LOC, MONEY, NORP, ORDINAL, ORG, PERCENT, PERSON, PRODUCT, QUANTITY, TIME und WORK_OF_ART. &lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>&lt;/p>
&lt;hr>
&lt;p>Farblich hervorgehoben sind die vom Modell erkannten Entitäten und leicht abgesetzt der bestimmte Entitätentyp.
Der &lt;strong>f-score&lt;/strong> besagt in diesem Fall (vereinfacht!), dass in der Evaluation des Modells, von den gesuchten Entitäten etwa 85% gefunden wurden (&lt;em>Recall&lt;/em>) und von den markierten Entitäten etwa 85% richtig markiert wurden (&lt;em>Precision&lt;/em>). &lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>
In unserem von Wikipedia angepassten Beispieltext bestätigten sich diese Werte.&lt;/p>
&lt;p>Hier ein mit NER verarbeiteter Beispieltext über das Landesarchiv Baden-Württemberg, welcher von der deutschsprachigen Wikipedia angepasst wurde. &lt;sup id="fnref:5">&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref">5&lt;/a>&lt;/sup>&lt;/p>
&lt;div class="entities" style="line-height: 2.5; direction: ltr">&lt;br>Das
&lt;mark class="entity" style="background: #8c6d31; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">
Landesarchiv Baden-Württemberg
&lt;span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">LOC&lt;/span>
&lt;/mark>
(LABW) umfasst alle
&lt;mark class="entity" style="background: #b5cf6b; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">
baden-württembergischen
&lt;span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">MISC&lt;/span>
&lt;/mark>
Staatsarchive.&lt;br>Es gehört zum Geschäftsbereich des
&lt;mark class="entity" style="background: #cedb9c; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">
Ministeriums für Wissenschaft, Forschung und Kunst Baden-Württemberg.
&lt;span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">ORG&lt;/span>
&lt;/mark>
&lt;br>Es verwahrt historische Dokumente, die bis zum Mittelalter zurückreichen.&lt;br>Der amtierende Präsident des
&lt;mark class="entity" style="background: #a55194; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">
Landesarchives
&lt;span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">PER&lt;/span>
&lt;/mark>
ist seit dem 01. Februar 2018 Prof. Dr.
&lt;mark class="entity" style="background: #a55194; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">
Gerald Maier.
&lt;span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">PER&lt;/span>
&lt;/mark>
&lt;br>Es beschäftigt circa 250 Mitarbeiter an 8 Standorten.&lt;br>&lt;/div>
&lt;hr>
&lt;p>Das Model &lt;em>de_core_news_lg&lt;/em> hat einen &lt;strong>f-score&lt;/strong> von &lt;strong>0,85&lt;/strong> und unterscheidet &lt;strong>4&lt;/strong> Arten von &lt;strong>Entitäten&lt;/strong>: LOC, MISC, ORG, PER. &lt;sup id="fnref:6">&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref">6&lt;/a>&lt;/sup>&lt;/p>
&lt;hr>
&lt;p>Das Modell für die deutsche Sprache erkennt und unterscheidet deutlich weniger Arten von Entitäten.
Das hat damit zu tun, dass es für die deutsche Sprache keine so umfangreichen und frei verfügbaren Trainingsdaten gibt.
Die Qualität der Erkennung (&lt;strong>f-score&lt;/strong>) ist mit dem des englischsprachigen Modells vergleichbar.
Aus Sicht deutschsprachiger Anwender ist es jedoch frustrierend sich auf vier Arten von Entitäten beschränken zu müssen.&lt;/p>
&lt;p>Wenden wir das deutschsprachige Modell auf Texte in unseren Erschließungsdaten an, so gibt es noch ein weiteres Problem. &lt;sup id="fnref:7">&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref">7&lt;/a>&lt;/sup>&lt;/p>
&lt;div class="entities" style="line-height: 2.5; direction: ltr">&lt;br>Besitzhinweis auf Mobiliar (hauptsächlich gekauft bei der
&lt;mark class="entity" style="background: #8c6d31; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">
Möbelfirma
&lt;span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">LOC&lt;/span>
&lt;/mark>
&lt;mark class="entity" style="background: #a55194; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">
Winfried Mueller, Stuttgart
&lt;span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">PER&lt;/span>
&lt;/mark>
), 1 vollständigen Silberkasten und mindestens 4 Silber-Becher.&lt;br>Zahlung von 11100 fl. samt rückständigen neunjährigen Zinsen in Höhe von 4999 fl. oder Einsetzung in das adelige Gut Werenwag.&lt;br>Gen. Forderung stammt aus Streit über Erbe des im November 1595 verst. K[C]aspar (von)
&lt;mark class="entity" style="background: #b5cf6b; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">
Laubenberg.
&lt;span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">MISC&lt;/span>
&lt;/mark>
&lt;br>Entzug des ordentlichen Richters und Verstoß gegen Haigerlocher
&lt;mark class="entity" style="background: #a55194; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">
Evokationsprivileg
&lt;span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">PER&lt;/span>
&lt;/mark>
durch Verschleppung kläg. Sohns gen. &amp;quot;junger Lenz&amp;quot; nach Sigmaringen, wo gegen ihn
&lt;mark class="entity" style="background: #a55194; padding: 0.45em 0.6em; margin: 0 0.25em; line-height: 1; border-radius: 0.35em;">
Kriminalprozeß
&lt;span style="font-size: 0.8em; font-weight: bold; line-height: 1; border-radius: 0.35em; vertical-align: middle; margin-left: 0.5rem">PER&lt;/span>
&lt;/mark>
angestrengt wurde.&lt;br>&lt;/div>
&lt;hr>
&lt;p>Bei unseren Texten hat das Modell praktisch einen &lt;strong>f-score&lt;/strong> von (nahe) 0.
Das ist jedoch kein Problem des spaCy Modells, sondern ein generelles Problem von NER (&lt;strong>Domänenproblem&lt;/strong>).
Das auf allgemeinen Texten trainierte Modell funktioniert wie erwartet auf Wikipedia Texten, hat jedoch Probleme mit der speziellen Domäne der &amp;ldquo;Erschließungsdaten im LABW&amp;rdquo;.&lt;/p>
&lt;p>Das bedeutet, dass wir für die meisten unserer Probleme keine vortrainierten Modelle verwenden können, sondern Modelle speziell für unsere Anwendungszwecke neu erstellen oder nachtrainieren müssen.
Das erfordert aktuell&lt;/p>
&lt;ul>
&lt;li>Technisch versierte Personen, die Daten Pipelines und Workflows erstellen können.&lt;/li>
&lt;li>Fachpersonal, welches die entsprechenden Trainingsdaten erstellen kann.&lt;/li>
&lt;li>Eine Softwareumgebung zur Erstellung der Trainingsdaten.&lt;/li>
&lt;li>Eine Hardwareumgebung zum Trainieren der Modelle.&lt;/li>
&lt;/ul>
&lt;p>Da dies von den meisten kulturellen Einrichtungen nicht geleistet werden kann, arbeiten mehrere NFDI Konsortien, darunter &lt;a href="https://nfdi4culture.de/" target="_blank" rel="noopener">NFDI4Culture&lt;/a> und je nach Genehmigungsstatus ab nächstem Jahr &lt;a href="https://4memory.de/" target="_blank" rel="noopener">NFDI4Memory&lt;/a> daran, mögliche Lösungen für diese Anforderungen zu entwickeln und zur Verfügung zu stellen.&lt;/p>
&lt;p>Da das FDMLab explizit dafür ausgelegt ist, solche Probleme zu untersuchen und damit wertvolle Vorarbeiten zu leisten, konnten wir uns dieses Problem ansehen und exemplarisch an einer konkreten Aufgabe durcharbeiten.&lt;/p>
&lt;h2 id="trainieren-eines-ner-modells">Trainieren eines NER Modells&lt;/h2>
&lt;p>Bei der Erstellung von Trainingsdaten für unser NER Modell waren wir mit dem so genannten &amp;ldquo;Kaltstart&amp;rdquo;-Problem konfrontiert.
Das bedeutet, dass wir noch keine Trainingsdaten hatten und auch keine Möglichkeit diese auf einfache Art- und Weise zu &amp;ldquo;synthetisieren&amp;rdquo;.
Da wir es in unserem speziellen Fall explizit mit Kunst- und Kulturobjekten zu tun haben und es in der GND einen umfangreichen Thesaurus mit Sachschlagworten gibt, hatten wir die Idee die Sachschlagworte in der GND als erste Grundlage zu verwenden und anschließend in einem aktiven Lernverfahren den Trainingsprozess für das Fachpersonal zu vereinfachen. &lt;sup id="fnref:8">&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref">8&lt;/a>&lt;/sup>&lt;/p>
&lt;h3 id="vorbereitungen">Vorbereitungen&lt;/h3>
&lt;p>Wir verwenden &lt;a href="https://spacy.io/" target="_blank" rel="noopener">spaCy&lt;/a> als NLP Framework und &lt;a href="https://prodi.gy/" target="_blank" rel="noopener">prodigy&lt;/a> zur Erstellung der Trainingsdaten.
Damit können wir basierend auf den Begriffen aus der GND eine Sammlung von Regeln hinterlegen, die automatisch Begriffe vorauswählen. &lt;sup id="fnref:9">&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref">9&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Dafür müssen die Daten aus der GND erst noch extrahiert und aufbereitet werden.&lt;/p>
&lt;h4 id="gnd-daten-extrahieren">GND Daten extrahieren&lt;/h4>
&lt;p>Wie wir die &lt;a href="https://fdmlab.landesarchiv-bw.de/post/2021-06-gnd-in-lokale-datenbank-laden/">GND in ihrer Linked Open Data (LOD) Form in einen lokalen Apache Jena Server laden&lt;/a>, haben wir bereits ausführlich beschrieben.
Die Schlagworte extrahieren wir anschließend via SPARQL zusammen mit ihren Varianten und GND Sachgruppen.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sparql" data-lang="sparql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gnd&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/gnd/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/standards/elementset/gnd#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gndCat&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/standards/vocab/gnd/gnd-sc#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">rdf&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">skos&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;http://www.w3.org/2004/02/skos/core#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">SELECT&lt;/span> &lt;span class="k">DISTINCT&lt;/span> &lt;span class="nv">?gndID&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nf">SAMPLE&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">?namex&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">AS&lt;/span> &lt;span class="nv">?name&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nf">SAMPLE&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">?variantsx&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nv">?variants&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nf">GROUP_CONCAT&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">?categoryName&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="nf">SEPARATOR&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;|&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">AS&lt;/span> &lt;span class="nv">?categories&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">WHERE&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?gndID&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">gndSubjectCategory&lt;/span> &lt;span class="nv">?category&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?category&lt;/span> &lt;span class="nn">skos&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">prefLabel&lt;/span> &lt;span class="nv">?categoryName&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">FILTER&lt;/span> &lt;span class="p">(&lt;/span> &lt;span class="nf">lang&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">?categoryName&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s">&amp;#34;de&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">SELECT&lt;/span> &lt;span class="k">DISTINCT&lt;/span> &lt;span class="nv">?gndID&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nf">SAMPLE&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">?prefName&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">AS&lt;/span> &lt;span class="nv">?namex&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nf">GROUP_CONCAT&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">?variant&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="nf">SEPARATOR&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;|&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">AS&lt;/span> &lt;span class="nv">?variantsx&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">WHERE&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">VALUES&lt;/span> &lt;span class="nv">?subjectType&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">SubjectHeading&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">SubjectHeadingSensoStricto&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">ProductNameOrBrandName&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?gndID&lt;/span> &lt;span class="nn">rdf&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">type&lt;/span> &lt;span class="nv">?subjectType&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">preferredNameForTheSubjectHeading&lt;/span> &lt;span class="nv">?prefName&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">OPTIONAL&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nv">?gndID&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">variantNameForTheSubjectHeading&lt;/span> &lt;span class="nv">?variant&lt;/span> &lt;span class="p">}&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">GROUP BY&lt;/span> &lt;span class="nv">?gndID&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">GROUP BY&lt;/span> &lt;span class="nv">?gndID&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Bei der Abfrage beschränken wir uns auf die Typen &lt;a href="https://d-nb.info/standards/elementset/gnd#SubjectHeading" target="_blank" rel="noopener">SubjectHeading&lt;/a>, &lt;a href="https://d-nb.info/standards/elementset/gnd#SubjectHeadingSensoStricto" target="_blank" rel="noopener">SubjectHeadingSensoStricto&lt;/a> und &lt;a href="https://d-nb.info/standards/elementset/gnd#ProductNameOrBrandName" target="_blank" rel="noopener">ProductNameOrBrandName&lt;/a>.
Ein Begriff kann in der GND auch mit alternativen Benennungen gelistet werden (&lt;em>variants&lt;/em>).
Diese sind zwar hilfreich, jedoch nicht so umfassend wie die Daten im englischsprachen &lt;a href="https://de.wikipedia.org/wiki/WordNet" target="_blank" rel="noopener">WordNet&lt;/a> oder im lizenzpflichtigen deutschsprachigen &lt;a href="https://de.wikipedia.org/wiki/GermaNet" target="_blank" rel="noopener">GermaNet&lt;/a>.
Ein Begriff ist einer oder mehreren &lt;a href="https://d-nb.info/standards/vocab/gnd/gnd-sc.html" target="_blank" rel="noopener">Sachgruppen&lt;/a> zugeordnet.&lt;/p>
&lt;p>In der folgenden Tabelle ist das Ergebnis der SPARQL-Abfrage mit fünf Ergebnissen gezeigt.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>gndID&lt;/th>
&lt;th>name&lt;/th>
&lt;th>variants&lt;/th>
&lt;th>categories&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>4300598-6&lt;/td>
&lt;td>Tonnelierter Raum&lt;/td>
&lt;td>Barrelled spaces &lt;strong>|&lt;/strong> Espace tonnelé&lt;/td>
&lt;td>Mathematik&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4207912-3&lt;/td>
&lt;td>Götter &amp;lt;Motiv&amp;gt;&lt;/td>
&lt;td>&lt;/td>
&lt;td>Sachliche Motive in der Kunst &lt;strong>|&lt;/strong> Literarische Motive, Stoffe, Gestalten&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>7528956-8&lt;/td>
&lt;td>Pflanzenbeobachtung&lt;/td>
&lt;td>Pflanzen / Beobachtung&lt;/td>
&lt;td>Botanik (Allgemeines)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4379234-0&lt;/td>
&lt;td>Freiwillige Selbstkontrolle&lt;/td>
&lt;td>FSK &lt;strong>|&lt;/strong> Selbstkontrolle &amp;lt;Publizistik&amp;gt;&lt;/td>
&lt;td>Film &lt;strong>|&lt;/strong> Presse &lt;strong>|&lt;/strong> Rundfunk, Neue Medien&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4173231-5&lt;/td>
&lt;td>Papstkrönung&lt;/td>
&lt;td>Papst / Krönung&lt;/td>
&lt;td>Kirchengeschichte &lt;strong>|&lt;/strong> Geschichte überregionaler Gebiete&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h4 id="gnd-daten-aufbereiten">GND Daten aufbereiten&lt;/h4>
&lt;p>Die in Tabellenform extrahierten Begriffe werden anschließend in OpenRefine aufbereitet und markiert.
Dafür werden die mit &lt;strong>|&lt;/strong> getrennten Varianten und Sachgruppen in einer &lt;a href="https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/10-arbeiten-mit-records/">Record-Struktur&lt;/a> aufgelöst, sowie Ergänzungen in Klammern (&lt;em>&amp;lt;Motiv&amp;gt;&lt;/em>, &lt;em>(Allgemeines)&lt;/em>, &amp;hellip;) und Hierarchiezeichen (&lt;em>Papst / Krönung&lt;/em> =&amp;gt; &lt;em>Papst Krönung&lt;/em>) mit &lt;a href="https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/08-regulaere-ausdruecke/">regulären Ausdrücken&lt;/a> entfernt.&lt;/p>
&lt;p>Anschließend werden drei Datensätze erstellt:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>GND ALL&lt;/strong>: enthält &lt;strong>alle&lt;/strong> extrahierten Begriffe und Varianten&lt;/li>
&lt;li>&lt;strong>GND Groups&lt;/strong>: enthält alle Begriffe und Varianten in von uns &lt;strong>markierten Sachgruppen&lt;/strong>&lt;/li>
&lt;li>&lt;strong>GND Selected&lt;/strong>: enthält alle separat von uns &lt;strong>markierte Begriffe&lt;/strong> mit ihren Varianten&lt;/li>
&lt;/ul>
&lt;div class="alert alert-note">
&lt;div>
Bei der Identifikation von relevanten Sachgruppen ist unser &lt;a href="https://fdmlab.landesarchiv-bw.de/post/2022-05-experiment-mit-gnd-visualisierungen/">Experiment zur GND Hierarchie Visualisierung&lt;/a> eine große Hilfe.
&lt;/div>
&lt;/div>
&lt;p>Für jeden Datensatz wird mit Python anschließend ein einfacher Regelsatz (&lt;strong>Simple&lt;/strong>) und ein komplexer Regelsatz (&lt;strong>Complex&lt;/strong>) für spaCy erstellt.&lt;/p>
&lt;p>Für den &lt;strong>einfachen&lt;/strong> Regelsatz wird eine Regel mit dem Begriff in seiner bevorzugten Schreibweise erstellt.
Besteht der Begriff aus mehreren Worten, so wird zusätzlich eine Regel für eine Schreibweise mit Bindestrichen und eine Regel für eine Schreibweise ohne Bindestriche oder Leerzeichen erstellt.&lt;/p>
&lt;p>Hier am Beispiel des Begriffes &lt;em>Ludwigsburger Porzellan&lt;/em>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;label&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;OBJ&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;pattern&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Ludwigsburger Porzellan&amp;#34;&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;label&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;OBJ&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;pattern&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Ludwigsburger-Porzellan&amp;#34;&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;label&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;OBJ&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;pattern&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Ludwigsburgerporzellan&amp;#34;&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Damit decken wir unterschiedliche Schreibweisen für zusammengesetzte Wörter und ggf. fehlende Leerzeichen ab.
Tippfehler, andere grammatikalische Formen und Synonyme werden dadurch nicht gefunden.&lt;/p>
&lt;p>Für den &lt;strong>komplexen&lt;/strong> Regelsatz wird via regulären Ausdrücken zusätzlich die Option berücksichtigt, dass es weitere mit Bindestrich verbundene Wortbestandteile geben kann (Ludwigsburger-Porzellan-Tasse) und zusätzlich die Grundform des Wortes (Lemma) als Vergleichskriterium verwendet. &lt;sup id="fnref:10">&lt;a href="#fn:10" class="footnote-ref" role="doc-noteref">10&lt;/a>&lt;/sup>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;label&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;OBJ&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;pattern&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[{&lt;/span>&lt;span class="nt">&amp;#34;LEMMA&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Ludwigsburger&amp;#34;&lt;/span>&lt;span class="p">},&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;LEMMA&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Porzellan&amp;#34;&lt;/span>&lt;span class="p">}]}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;label&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;OBJ&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;pattern&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[{&lt;/span>&lt;span class="nt">&amp;#34;LEMMA&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;REGEX&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Ludwigsburger\\-Porzellan((-|\\s)\\w+)?&amp;#34;&lt;/span>&lt;span class="p">}}]}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;label&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;OBJ&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;pattern&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[{&lt;/span>&lt;span class="nt">&amp;#34;LEMMA&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;REGEX&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Ludwigsburgerporzellan((-|\\s)\\w+)?&amp;#34;&lt;/span>&lt;span class="p">}}]}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="durchführung">Durchführung&lt;/h3>
&lt;h4 id="annotation-mit-regeln-und-aktivem-lernen">Annotation mit Regeln und aktivem Lernen&lt;/h4>
&lt;p>Mit dem Regelsatz &lt;strong>GND Selected Simple&lt;/strong> wurden 1.000 Sätze mit regelbasierter Unterstützung manuell annotiert. &lt;sup id="fnref:11">&lt;a href="#fn:11" class="footnote-ref" role="doc-noteref">11&lt;/a>&lt;/sup>
Mit diesen wurde anschließend ein temporäres Modell trainiert, welches dabei unterstützte weitere 2.000 Sätze zu annotieren.&lt;sup id="fnref:12">&lt;a href="#fn:12" class="footnote-ref" role="doc-noteref">12&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Je nach verwendeter Beschreibungsform im Findbuch (Fließtext, Aufzählung, Liste, Tabelle, &amp;hellip;) kann ein Satz zwischen 0 und mehr als 30 Entitäten enthalten.&lt;/p>
&lt;p>Auf Grund von Duplikaten entstanden dadurch etwa 2.600 annotierte Sätze für das Training.&lt;/p>
&lt;p>Zusätzlich wurden aus jedem der 59 untersuchten Findbüchern 2 zufällig ausgewählte Findbuchbeiträge extrahiert, wodurch ein Evaluations Datenset mit 1.677 eindeutigen Sätzen entstand. Dieses wurde von 2 Personen getrennt annotiert und anschließend die Unterschiede noch einmal besprochen und aufgelöst. &lt;sup id="fnref:13">&lt;a href="#fn:13" class="footnote-ref" role="doc-noteref">13&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Das NER Modell wurde anschließend auf den Trainingsbeispielen neu trainiert und gegen das Evaluationsdatenset evaluiert. &lt;sup id="fnref:14">&lt;a href="#fn:14" class="footnote-ref" role="doc-noteref">14&lt;/a>&lt;/sup>&lt;/p>
&lt;h4 id="evaluation-regelbasierter-modelle">Evaluation regelbasierter &amp;ldquo;Modelle&amp;rdquo;&lt;/h4>
&lt;p>Aus jedem der 6 Regeldatensätze wurde eine eigene spaCy Pipeline mit einer &lt;em>EntityRuler&lt;/em> Komponente erstellt. &lt;sup id="fnref:15">&lt;a href="#fn:15" class="footnote-ref" role="doc-noteref">15&lt;/a>&lt;/sup>
Diese 6 Pipelines wurden anschließend gegen das Trainings- &lt;strong>und&lt;/strong> Evaluationsdatenset evaluiert. &lt;sup id="fnref:16">&lt;a href="#fn:16" class="footnote-ref" role="doc-noteref">16&lt;/a>&lt;/sup>&lt;/p>
&lt;h3 id="ergebnisse">Ergebnisse&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;/th>
&lt;th style="text-align:right">Begriffe&lt;/th>
&lt;th style="text-align:right">&lt;/th>
&lt;th style="text-align:right">Gruppen&lt;/th>
&lt;th style="text-align:right">&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>GND ALL&lt;/strong>&lt;/td>
&lt;td style="text-align:right">143.064&lt;/td>
&lt;td style="text-align:right">(100,00%)&lt;/td>
&lt;td style="text-align:right">339&lt;/td>
&lt;td style="text-align:right">(100,00%)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>GND Groups&lt;/strong>&lt;/td>
&lt;td style="text-align:right">33.461&lt;/td>
&lt;td style="text-align:right">(23,39%)&lt;/td>
&lt;td style="text-align:right">27&lt;/td>
&lt;td style="text-align:right">(7,96%)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>GND Selected&lt;/strong>&lt;/td>
&lt;td style="text-align:right">604&lt;/td>
&lt;td style="text-align:right">(0,42%)&lt;/td>
&lt;td style="text-align:right">80&lt;/td>
&lt;td style="text-align:right">(23,60%)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Insgesamt arbeiteten wir mit 143.061 Begriffen aus der GND (Varianten nicht mitgezählt).
Bei der manuellen Auswahl der Sachgruppen wurden 27 Sachgruppen als relevant markiert.
Bei der manuellen Auswahl der Begriffe wurden 604 Begriffe als relevant markiert.&lt;/p>
&lt;p>Die 604 manuell markierten Begriffe sind insgesamt 80 unterschiedlichen Sachgruppen zugeordnet, wobei ein Begriff mehreren Sachgruppen zugeordnet werden kann.&lt;/p>
&lt;p>Es war deutlich einfacher (und schneller) die 27 relevanten Sachgruppen zu identifizieren, als die 604 relevanten Begriffe herauszusuchen.
Bei beiden Ansätzen war uns klar, dass wir aus Zeitgründen keine vollständige Auswahl treffen werden, so dass wir uns in der dafür aufgewendeten Zeit einschränkten.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Dataset&lt;/th>
&lt;th style="text-align:right">Precision&lt;/th>
&lt;th style="text-align:right">Recall&lt;/th>
&lt;th style="text-align:right">F1&lt;/th>
&lt;th>Dataset&lt;/th>
&lt;th style="text-align:right">Precision&lt;/th>
&lt;th style="text-align:right">Recall&lt;/th>
&lt;th style="text-align:right">F1&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>GND ALL &lt;strong>Simple&lt;/strong>&lt;/td>
&lt;td style="text-align:right">0,23&lt;/td>
&lt;td style="text-align:right">0,37&lt;/td>
&lt;td style="text-align:right">0,29&lt;/td>
&lt;td>&lt;strong>Complex&lt;/strong>&lt;/td>
&lt;td style="text-align:right">0,19&lt;/td>
&lt;td style="text-align:right">0,84&lt;/td>
&lt;td style="text-align:right">0,31&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GND Groups &lt;strong>Simple&lt;/strong>&lt;/td>
&lt;td style="text-align:right">0,33&lt;/td>
&lt;td style="text-align:right">0,34&lt;/td>
&lt;td style="text-align:right">0,34&lt;/td>
&lt;td>&lt;strong>Complex&lt;/strong>&lt;/td>
&lt;td style="text-align:right">0,31&lt;/td>
&lt;td style="text-align:right">0,76&lt;/td>
&lt;td style="text-align:right">0,44&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GND Selected &lt;strong>Simple&lt;/strong>&lt;/td>
&lt;td style="text-align:right">0,71&lt;/td>
&lt;td style="text-align:right">0,19&lt;/td>
&lt;td style="text-align:right">0,30&lt;/td>
&lt;td>&lt;strong>Complex&lt;/strong>&lt;/td>
&lt;td style="text-align:right">0,69&lt;/td>
&lt;td style="text-align:right">0,37&lt;/td>
&lt;td style="text-align:right">0,48&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>NER OBJ&lt;/td>
&lt;td style="text-align:right">0,96&lt;/td>
&lt;td style="text-align:right">0,94&lt;/td>
&lt;td style="text-align:right">0,95&lt;/td>
&lt;td>&lt;/td>
&lt;td style="text-align:right">&lt;/td>
&lt;td style="text-align:right">&lt;/td>
&lt;td style="text-align:right">&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Die Ergebnisse der obigen Tabelle sind in Abbildung 1 visualisiert und werden dort besprochen.&lt;/p>
&lt;figure id="figure-scatterplot-für-precision-und-recall-für-die-einzelnen-datensätze">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Scatterplot für Precision und Recall für die einzelnen Datensätze." srcset="
/post/2022-09-ner-modell-mit-gnd-starthilfe-trainieren/metrics_hu25f59ad08821a07f7e62d84347c9b3d7_25695_670776311626ecdef0eb7da8ead0b65c.webp 400w,
/post/2022-09-ner-modell-mit-gnd-starthilfe-trainieren/metrics_hu25f59ad08821a07f7e62d84347c9b3d7_25695_015a3bc5bbc9919d78426f9f78d34840.webp 760w,
/post/2022-09-ner-modell-mit-gnd-starthilfe-trainieren/metrics_hu25f59ad08821a07f7e62d84347c9b3d7_25695_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/post/2022-09-ner-modell-mit-gnd-starthilfe-trainieren/metrics_hu25f59ad08821a07f7e62d84347c9b3d7_25695_670776311626ecdef0eb7da8ead0b65c.webp"
width="423"
height="432"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Scatterplot für Precision und Recall für die einzelnen Datensätze.
&lt;/figcaption>&lt;/figure>
&lt;p>In Abbildung 1 lässt sich ablesen, dass die Verwendung der komplexen im Vergleich zu den einfachen Regeln den &lt;em>Recall&lt;/em>, also den Anteil gefundener Begriffe, deutlich erhöht, wobei die &lt;em>Precision&lt;/em>, also der Anteil an falsch markierten Begriffen, im Vergleich nur unwesentlich sinkt.&lt;/p>
&lt;p>Es lässt sich ebenfalls ablesen, dass die Verwendung aller Begriffe in der GND (&lt;strong>ALL&lt;/strong>) im Vergleich zur Verwendung der Begriffe ausgewählter Gruppen (&lt;strong>Groups&lt;/strong>) den &lt;em>Recall&lt;/em> erhöht, aber nicht so wesentlich, als dass es die deutlich schlechtere &lt;em>Precision&lt;/em> ausgleichen könnte.&lt;/p>
&lt;p>Mit einem &lt;strong>f1-score&lt;/strong> von &lt;strong>0,48&lt;/strong> erhält der Ansatz mit den ausgewählten Begriffen (&lt;strong>Selected&lt;/strong>) den besten Wert der regelbasierten Ansätze.
Mit einem &lt;strong>f1-score&lt;/strong> von &lt;strong>0,95&lt;/strong> ist das &lt;strong>NER Modell&lt;/strong> den regelbasierten Ansätzen jedoch weit überlegen.&lt;/p>
&lt;h3 id="diskussion">Diskussion&lt;/h3>
&lt;p>Grundsätzlich lässt sich sagen, dass sich die Idee die GND als Starthilfe für das Anlernen eines neuen NER Models zu verwenden, als erfolgreich erwiesen hat. Mit einem &lt;em>Recall&lt;/em> und einer &lt;em>Precision&lt;/em> über 90 Prozent könnten wir das anschließend trainierte NER Modell direkt produktiv anwenden.
Auch die Verwendung der Sachbegriffe in der GND als Starthilfe hat deutlich besser funktioniert, als wir das erwartet hatten.&lt;/p>
&lt;p>Ein wesentlicher Faktor, den wir bei diesem Experiment bewusst nicht erfasst haben, ist der zeitliche Aufwand für die einzelnen manuellen oder automatisierten Arbeitsschritte.&lt;/p>
&lt;p>Hier machte eine genaue Erfassung in unserem Fall von daher keinen Sinn, da bei den manuellen Aufgaben ein großer Faktor der einmalige Einarbeitungsaufwand darstellt und die automatisierten Schritte auf Grund unterschiedlicher Lasten auf unserem Testsystem nicht deterministisch waren. Außerdem durchliefen wir verschiedene Iterationen, bis wir einem für uns passenden Workflow gefunden hatten.&lt;/p>
&lt;p>Generell würden wir nach unserer Erfahrung davon abraten &lt;strong>alle&lt;/strong> Sachbegriffe der GND, oder mehr als die von uns verwendeten circa 33.500 Begriffe zur Regelgenerierung zu verwenden. Nach unserer Beobachtung ist bei diesen Mengen und bei der Verwendung von regulären Ausdrücken in den Regeln das Laufzeitverhalten der Regelauswertung nicht mehr linear.&lt;/p>
&lt;p>Bei der Abwägung, ob mit ausgewählten Begriffen oder ausgewählten Sachgruppen gearbeitet wird, sollte auch die Präferenz des Fachpersonals im Annotationsprozess berücksichtigt werden. Bei einer hohen &lt;em>Precision&lt;/em> müssen hauptsächlich zusätzliche Begriffe markiert werden. Bei einem hohen &lt;em>Recall&lt;/em> (und niedriger &lt;em>Precision&lt;/em>) müssen hauptsächlich falsch markierte Begriffe entfernt werden.&lt;/p>
&lt;p>Außerdem haben wir uns bei der initialen Auswahl der Sachbegriffe aus der GND auf bestimmte Typen beschränkt (&lt;a href="https://d-nb.info/standards/elementset/gnd#SubjectHeading" target="_blank" rel="noopener">SubjectHeading&lt;/a>, &lt;a href="https://d-nb.info/standards/elementset/gnd#SubjectHeadingSensoStricto" target="_blank" rel="noopener">SubjectHeadingSensoStricto&lt;/a> und &lt;a href="https://d-nb.info/standards/elementset/gnd#ProductNameOrBrandName" target="_blank" rel="noopener">ProductNameOrBrandName&lt;/a>). Diese Einschränkung machte für uns Sinn, jedoch sind manche der von uns gesuchten Objekte auch unter den Typen &lt;a href="https://d-nb.info/standards/elementset/gnd#Work" target="_blank" rel="noopener">Work&lt;/a> bzw. dessen Unterklassen zu finden, oder in der GND als &lt;a href="https://d-nb.info/standards/elementset/gnd#CorporateBody" target="_blank" rel="noopener">Corporate Body&lt;/a> klassifiziert.&lt;/p>
&lt;p>Die Entscheidung aus jedem Bestand 2 zufällige Findbucheinträge für das Evaluationsdatenset zu verwenden, sorgte für ein ungünstiges Größenverhältnis zwischen Trainings- und Evaluationsdatenset. Zum einen ist das Evaluationsdatenset recht groß im Vergleich zum Trainingsdatenset. Zum anderen ist es durch die Unterschiede zwischen den einzelnen Beständen nicht repräsentativ. So gibt es eine große Varianz in der Größe der einzelnen Bestände (1 - 1321 Findbucheinträge) und der unterschiedlichen Länge der einzelnen Findbucheinträge (6 - 47.249 Zeichen).&lt;/p>
&lt;p>Bei der praktischen Anwendung des trainierten Modells konnten wir feststellen, dass die Performanz des Modells auf den größeren Beständen merkbar schlechter war, so dass wir in der praktischen Anwendung eher mit einer &lt;em>Precision&lt;/em> und einem &lt;em>Recall&lt;/em> im Bereich von etwa 90 Prozent rechnen.&lt;/p>
&lt;p>Theoretisch könnte die Performanz des Modells noch deutlich verbessert werden, indem unter anderem weitere Trainingsbeispiele erstellt werden und zusätzlich eine Hyperparameteroptimierung durchgeführt wird.&lt;/p>
&lt;h2 id="fazit">Fazit&lt;/h2>
&lt;p>&lt;em>Named Entity Recognition&lt;/em> kann bei der Erstellung von Metadaten von textbasierten Material eine große Hilfe sein.
Leider lassen sich auf allgemeinen Texten trainierte Modelle meist nicht auf Texte im Archiv übertragen.
Ein Trainieren von eigenen NER-Modellen ist mit guten Ergebnissen und vertretbarem Aufwand möglich.
Dabei ist die Gemeinsame Normdatei eine hilfreiche Datenquelle.
Jedoch fehlt es vielen kulturellen Institutionen an einem Zugang zu technischem Personal und Infrastruktur.
Wir hoffen, dass Lösungen von der &lt;a href="https://www.nfdi.de/" target="_blank" rel="noopener">NFDI&lt;/a> zukünftig diese Lücken schließen können.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Da die bearbeiteten Daten teilweise noch einer Sperrfrist unterliegen, können wir zu diesem Zeitpunkt weder die Daten noch die Modelle bzw. konkrete Ergebnislisten veröffentlichen. Es macht daher auch keinen Sinn eine reproduzierbaren Workflow zu veröffentlichen.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>Wikipedia Autoren, „Landesarchiv Baden-Württemberg“, Wikipedia – Die freie Enzyklopädie, &lt;a href="https://de.wikipedia.org/w/index.php?title=Landesarchiv_Baden-W%C3%BCrttemberg&amp;amp;oldid=223510351" target="_blank" rel="noopener">https://de.wikipedia.org/w/index.php?title=Landesarchiv_Baden-W%C3%BCrttemberg&amp;oldid=223510351&lt;/a> (aufgerufen am 20. Juli 2022).&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>NER erstellt mit spaCy 3.3 &lt;a href="https://spacy.io/models/en#en_core_web_lg" target="_blank" rel="noopener">en_core_web_lg&lt;/a>.&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>Siehe &lt;a href="https://en.wikipedia.org/wiki/Precision_and_recall" target="_blank" rel="noopener">Wikipedia - Precision and recall&lt;/a> für Details.&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:5">
&lt;p>Wikipedia Autoren, „Landesarchiv Baden-Württemberg“, Wikipedia – Die freie Enzyklopädie, &lt;a href="https://de.wikipedia.org/w/index.php?title=Landesarchiv_Baden-W%C3%BCrttemberg&amp;amp;oldid=223510351" target="_blank" rel="noopener">https://de.wikipedia.org/w/index.php?title=Landesarchiv_Baden-W%C3%BCrttemberg&amp;oldid=223510351&lt;/a> (aufgerufen am 20. Juli 2022).&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:6">
&lt;p>NER erstellt mit spaCy 3.3 &lt;a href="https://spacy.io/models/de#de_core_news_lg" target="_blank" rel="noopener">de_core_news_lg&lt;/a>.&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:7">
&lt;p>NER erstellt mit spaCy 3.3 &lt;a href="https://spacy.io/models/de#de_core_news_lg" target="_blank" rel="noopener">de_core_news_lg&lt;/a>.&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:8">
&lt;p>Siehe &lt;a href="https://en.wikipedia.org/wiki/Active_learning_%28machine_learning%29" target="_blank" rel="noopener">Wikipedia - Active Learning&lt;/a>.&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:9">
&lt;p>Siehe &lt;a href="https://spacy.io/usage/rule-based-matching" target="_blank" rel="noopener">Rule-based matching&lt;/a> und &lt;a href="https://prodi.gy/docs/named-entity-recognition#manual-patterns" target="_blank" rel="noopener">Manual annotation with patters&lt;/a>.&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:10">
&lt;p>Siehe Wikipedia - &lt;a href="https://de.wikipedia.org/wiki/Lemma_%28Lexikographie%29" target="_blank" rel="noopener">Lemma (Lexikographie)&lt;/a>&amp;#160;&lt;a href="#fnref:10" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:11">
&lt;p>&lt;a href="https://prodi.gy/docs/named-entity-recognition#manual-patterns" target="_blank" rel="noopener">Manual annotation with patters&lt;/a> bzw. &lt;a href="https://prodi.gy/docs/recipes/#ner-manual" target="_blank" rel="noopener">Prodigy Rezept ner.manual&lt;/a>.&amp;#160;&lt;a href="#fnref:11" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:12">
&lt;p>&lt;a href="https://prodi.gy/docs/named-entity-recognition#manual-model" target="_blank" rel="noopener">Manual annotation with suggestions from a model&lt;/a> bzw. &lt;a href="https://prodi.gy/docs/recipes/#ner-correct" target="_blank" rel="noopener">Prodigy Rezept ner.correct&lt;/a>.&amp;#160;&lt;a href="#fnref:12" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:13">
&lt;p>&lt;a href="https://prodi.gy/docs/recipes/#review" target="_blank" rel="noopener">Prodigy Rezept review&lt;/a>&amp;#160;&lt;a href="#fnref:13" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:14">
&lt;p>&lt;a href="https://spacy.io/api/cli#evaluate" target="_blank" rel="noopener">spaCy CLI evaluate&lt;/a>&amp;#160;&lt;a href="#fnref:14" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:15">
&lt;p>&lt;a href="https://spacy.io/usage/processing-pipelines" target="_blank" rel="noopener">Language Processing Pipelines&lt;/a> bzw. &lt;a href="https://spacy.io/usage/rule-based-matching" target="_blank" rel="noopener">Rule-based matching&lt;/a> bzw. &lt;a href="https://spacy.io/api/entityruler" target="_blank" rel="noopener">EntityRuler&lt;/a>.&amp;#160;&lt;a href="#fnref:15" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:16">
&lt;p>Bei dem regelbasierten Ansatz ist eine &lt;a href="https://de.wikipedia.org/wiki/%C3%9Cberanpassung" target="_blank" rel="noopener">Überanpassung&lt;/a> nicht zu befürchten, da es sich hier um &lt;strong>keinen&lt;/strong> selbst lernenden Prozess handelt.&amp;#160;&lt;a href="#fnref:16" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Experiment zur Identifikation von doppelten Orten in der GND</title><link>https://fdmlab.landesarchiv-bw.de/post/2022-06-doppelte-orte-in-gnd/</link><pubDate>Tue, 21 Jun 2022 00:00:00 +0000</pubDate><guid>https://fdmlab.landesarchiv-bw.de/post/2022-06-doppelte-orte-in-gnd/</guid><description>&lt;p>Bei unserer Arbeit mit Orten in der &lt;em>Gemeinsamen Normdatei&lt;/em> (GND) stolperten wir hin und wieder über Dubletten.
Also Orte, die in der GND mehrfach vorhanden waren.
Dieser Beitrag beschreibt, wie wir in einem praktischen Experiment versuchten diese Dubletten innerhalb des Bundeslandes Baden-Württemberg zu identifizieren.&lt;/p>
&lt;blockquote>
&lt;p>Bildnachweis&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;/blockquote>
&lt;h2 id="hintergrund">Hintergrund&lt;/h2>
&lt;p>In der GND sind nicht nur aktuelle Orte mit einer eindeutigen GND-Nummer verzeichnet, sondern auch historische Orte.
Beispielsweise wurde &lt;a href="https://d-nb.info/gnd/4069840-3" target="_blank" rel="noopener">Cannstatt&lt;/a> mit Stuttgart vereinigt und ist seit dem 1. April 1905 als &lt;a href="https://d-nb.info/gnd/4077993-2" target="_blank" rel="noopener">Stuttgart-Cannstatt&lt;/a> und später &lt;a href="https://d-nb.info/gnd/4077993-2" target="_blank" rel="noopener">Bad Cannstatt&lt;/a> ein Stadtteil von &lt;a href="https://d-nb.info/gnd/4058282-6" target="_blank" rel="noopener">Stuttgart&lt;/a>.&lt;/p>
&lt;p>Auch wurden Gemeinden und Städte im Zuge von Kreis- und Gemeindereformen eingemeindet oder neu gebildet.
Beispielsweise wurden &lt;a href="https://d-nb.info/gnd/4088388-7" target="_blank" rel="noopener">Bissingen&lt;/a> und &lt;a href="https://d-nb.info/gnd/4088300-0" target="_blank" rel="noopener">Bietigheim&lt;/a> im Jahre 1975 zu &lt;a href="https://d-nb.info/gnd/4006554-6" target="_blank" rel="noopener">Bietigheim-Bissingen&lt;/a> zusammengelegt.&lt;/p>
&lt;p>Diese Form von Mehrfachnennung meinen wir &lt;strong>nicht&lt;/strong>.
Wir sind darüber gestolpert, dass es speziell zu historischen Orten in Baden-Württemberg mehrere Einträge gab.&lt;/p>
&lt;h2 id="idee">Idee&lt;/h2>
&lt;p>Wir wollen basierend auf der &lt;em>Ortsnamensdatenbank Baden-Württemberg&lt;/em> (ONDB) mögliche Dubletten von Orten in Baden-Württemberg in der GND identifizieren. Die ONDB wurde in einem anderen Projekt in Form einer Datenspende in die GND eingespielt, so dass wir davon ausgehen, dass wir sie als &amp;ldquo;Referenz&amp;rdquo; verwenden können. Dafür identifizieren wir alle mit Baden-Württemberg verknüpften Orte in der GND, markieren die Orte, die in der ONDB vorliegen und betrachten anschließend die Restmenge.&lt;/p>
&lt;h2 id="vorgehen">Vorgehen&lt;/h2>
&lt;h4 id="1-ondb-aufbereitung">1. ONDB Aufbereitung&lt;/h4>
&lt;p>Ein Abzug der ONDB wurde im Kontext eines anderen Projektes mit &lt;a href="https://openrefine.org/" target="_blank" rel="noopener">OpenRefine&lt;/a> aufgearbeitet, so dass ein Mapping von GND-ID auf ONDB-ID möglich ist.
Wie so ein Mapping funktioniert, ist unter &lt;a href="https://fdmlab.landesarchiv-bw.de/workshop/openrefine-fortgeschrittene/12-daten-zwischen-projekten-abgleichen/">Daten zwischen Projekten in OpenRefine abgleichen&lt;/a> beschrieben.&lt;/p>
&lt;h4 id="2-gnd-in-triple-store-laden">2. GND in Triple-Store laden&lt;/h4>
&lt;p>Wie unter &lt;a href="https://fdmlab.landesarchiv-bw.de/post/2021-06-erste-experimente-mit-der-gnd/">Erste Experimente mit der GND&lt;/a> beschrieben, wurde die GND in ihrer LOD-Form in einen &lt;a href="https://jena.apache.org/" target="_blank" rel="noopener">Apache Jena&lt;/a> Docker Container geladen. &lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/p>
&lt;h4 id="3-daten-aus-triple-store-laden">3. Daten aus Triple-Store laden&lt;/h4>
&lt;p>Mit &lt;a href="https://www.w3.org/TR/sparql11-overview/" target="_blank" rel="noopener">SPARQL-Abfragen&lt;/a> werden die Daten aus dem Apache Jena Triple-Store extrahiert.&lt;/p>
&lt;h4 id="4-dubletten-identifizieren">4. Dubletten identifizieren&lt;/h4>
&lt;p>Mit Hilfe der ODNB, &lt;a href="https://fdmlab.landesarchiv-bw.de/workshop/openrefine-einsteiger/05-clustering/">Clustering Methoden in OpenRefine&lt;/a> und externen Skripten mögliche Dubletten identifizieren und manuell prüfen.&lt;/p>
&lt;h2 id="sparql-abfragen">SPARQL Abfrage(n)&lt;/h2>
&lt;p>wir haben verschiedene Methoden getestet, verworfen und kombiniert, um die für uns relevanten Orte in der GND zu identifizieren und via SPARQL aus dem Apache Jena Triple-Store laden zu können.&lt;/p>
&lt;h3 id="angaben-zur-quelle">Angaben zur Quelle&lt;/h3>
&lt;p>In der GND ist auch die Quelle einer Dateninformation erfasst, also zum Beispiel die ONDB oder das Landesarchiv Baden-Württemberg als Datenquelle genannt. Diese Information ist in der LOD-Form der GND leider nicht enthalten.
Daher konnten wir diese Information nicht als zusätzliche Informationsquelle für unsere Filter nutzen.&lt;/p>
&lt;h3 id="verknüpfung-über-hierarchie">Verknüpfung über Hierarchie&lt;/h3>
&lt;p>Theoretisch sollten wir über den Property-Path &lt;a href="https://d-nb.info/standards/elementset/gnd#hierarchicalSuperiorOfPlaceOrGeographicName" target="_blank" rel="noopener">Hierarchical superior of place or geographic name&lt;/a> alle untergeordneten Orte von &lt;a href="https://d-nb.info/gnd/4004176-1" target="_blank" rel="noopener">Baden-Württemberg&lt;/a> finden können.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sparql" data-lang="sparql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gnd&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/gnd/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/standards/elementset/gnd#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">SELECT&lt;/span> &lt;span class="k">DISTINCT&lt;/span> &lt;span class="nv">?place&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">WHERE&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?place&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">hierarchicalSuperiorOfPlaceOrGeographicName&lt;/span>&lt;span class="o">+&lt;/span> &lt;span class="nn">gnd&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">4004176-1&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Diese Eigenschaft ist jedoch nicht konsequent und speziell für historische Orte gar nicht erfasst.
Daher haben wir diesen Ansatz verworfen.&lt;/p>
&lt;h3 id="verknüpfung-über-ländercode">Verknüpfung über Ländercode&lt;/h3>
&lt;p>Theoretisch sollten wir über die Verknüpfung mit dem Ländercode (&lt;a href="https://d-nb.info/standards/elementset/gnd#geographicAreaCode" target="_blank" rel="noopener">Geographic Area Code&lt;/a>) alle mit Baden-Württemberg (&lt;a href="https://d-nb.info/standards/vocab/gnd/geographic-area-code.html#XA-DE-BW" target="_blank" rel="noopener">XA-DE-BW&lt;/a>) verknüpften Orte erfassen können.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sparql" data-lang="sparql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gnd&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/gnd/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/standards/elementset/gnd#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gnd-area-code&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/standards/vocab/gnd/geographic-area-code#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">rdf&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">rdfs&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;http://www.w3.org/2000/01/rdf-schema#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">SELECT&lt;/span> &lt;span class="k">DISTINCT&lt;/span> &lt;span class="nv">?place&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">WHERE&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?place&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">geographicAreaCode&lt;/span> &lt;span class="nn">gnd-area-code&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">XA-DE-BW&lt;/span> &lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">rdf&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">type&lt;/span> &lt;span class="nv">?type&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?type&lt;/span> &lt;span class="nn">rdfs&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">subClassOf&lt;/span>&lt;span class="o">*&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">PlaceOrGeographicName&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Hier sind uns zwei Probleme aufgefallen:&lt;/p>
&lt;ol>
&lt;li>die Property-Path-Extension &lt;code>rdfs:subclassOf*&lt;/code> funktioniert nicht, wir konnten jedoch nicht klären ob das ein Problem mit Apache Jena oder mit den GND-Daten ist.&lt;/li>
&lt;li>Nicht alle Orte in Baden-Württemberg sind mit dem Ländercode &lt;code>XA-DE-BW&lt;/code> angelegt, sondern einige auch ausschließlich mit dem Ländercode für Deutschland &lt;code>XA-DE&lt;/code>.&lt;/li>
&lt;/ol>
&lt;h3 id="verknüpfung-über-ländercode-mit-aufzählung-aller-sub-klassen">Verknüpfung über Ländercode mit Aufzählung aller (Sub-)Klassen&lt;/h3>
&lt;p>Da die Property-Path Extension auf &lt;code>rdfs:subClassOf&lt;/code> nicht funktioniert hat, listen wir die für uns relevanten (Sub-)Klassen alle einzeln auf.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sparql" data-lang="sparql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gnd&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/gnd/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/standards/elementset/gnd#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gnd-area-code&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/standards/vocab/gnd/geographic-area-code#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">rdf&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">SELECT&lt;/span> &lt;span class="k">DISTINCT&lt;/span> &lt;span class="nv">?place&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">WHERE&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">VALUES&lt;/span> &lt;span class="nv">?geographicType&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">PlaceOrGeographicName&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">AdministrativeUnit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">BuildingOrMemorial&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">NameOfSmallGeographicUnitLyingWithinAnotherGeographicUnit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">NaturalGeographicUnit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">ReligiousTerritory&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">TerritorialCorporateBodyOrAdministrativeUnit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?place&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">geographicAreaCode&lt;/span> &lt;span class="nn">gnd-area-code&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">XA-DE-BW&lt;/span> &lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">rdf&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">type&lt;/span> &lt;span class="nv">?geographicType&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="anzahl-pro-sub-klasse">Anzahl pro (Sub-)Klasse&lt;/h3>
&lt;p>Die folgende Abfrage zählt, wie häufig die entsprechenden Typen für Orte in Baden-Württemberg in der GND vorkommen.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sparql" data-lang="sparql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gnd&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/gnd/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/standards/elementset/gnd#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gnd-area-code&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/standards/vocab/gnd/geographic-area-code#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">rdf&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">SELECT&lt;/span> &lt;span class="k">DISTINCT&lt;/span> &lt;span class="nv">?geographicType&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nf">count&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">?geographicType&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nv">?count&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">WHERE&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">VALUES&lt;/span> &lt;span class="nv">?geographicType&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">PlaceOrGeographicName&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">AdministrativeUnit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">BuildingOrMemorial&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">NameOfSmallGeographicUnitLyingWithinAnotherGeographicUnit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">NaturalGeographicUnit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">ReligiousTerritory&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">TerritorialCorporateBodyOrAdministrativeUnit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?place&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">geographicAreaCode&lt;/span> &lt;span class="nn">gnd-area-code&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">XA-DE-BW&lt;/span> &lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">rdf&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">type&lt;/span> &lt;span class="nv">?geographicType&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span> &lt;span class="k">GROUP BY&lt;/span> &lt;span class="nv">?geographicType&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>In der folgenden Tabelle ist das Ergebnis für die obige SPARQL-Abfrage dargestellt:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>geographicType&lt;/th>
&lt;th>count&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;a href="https://d-nb.info/standards/elementset/gnd#AdministrativeUnit" target="_blank" rel="noopener">AdministrativeUnit&lt;/a>&lt;/td>
&lt;td>423&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="https://d-nb.info/standards/elementset/gnd#NaturalGeographicUnit" target="_blank" rel="noopener">NaturalGeographicUnit&lt;/a>&lt;/td>
&lt;td>537&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="https://d-nb.info/standards/elementset/gnd#PlaceOrGeographicName" target="_blank" rel="noopener">PlaceOrGeographicName&lt;/a>&lt;/td>
&lt;td>4205&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="https://d-nb.info/standards/elementset/gnd#ReligiousTerritory" target="_blank" rel="noopener">ReligiousTerritory&lt;/a>&lt;/td>
&lt;td>68&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="https://d-nb.info/standards/elementset/gnd#TerritorialCorporateBodyOrAdministrativeUnit" target="_blank" rel="noopener">TerritorialCorporateBodyOrAdministrativeUnit&lt;/a>&lt;/td>
&lt;td>23685&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="https://d-nb.info/standards/elementset/gnd#BuildingOrMemorial" target="_blank" rel="noopener">BuildingOrMemorial&lt;/a>&lt;/td>
&lt;td>3711&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="https://d-nb.info/standards/elementset/gnd#NameOfSmallGeographicUnitLyingWithinAnotherGeographicUnit" target="_blank" rel="noopener">NameOfSmallGeographicUnitLyingWithinAnotherGeographicUnit&lt;/a>&lt;/td>
&lt;td>99&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="de-ländercode-mit-nachfolger-oder-vorgänger-in-bw">DE-Ländercode mit Nachfolger (oder Vorgänger) in BW&lt;/h3>
&lt;p>Bei den Orten, die mit dem Ländercode &lt;code>XA-DE&lt;/code> für Deutschland angelegt wurden, ergab sich ein Muster.
Diese hatten häufig einen &lt;a href="https://d-nb.info/standards/elementset/gnd#precedingPlaceOrGeographicName" target="_blank" rel="noopener">Vorgänger&lt;/a> oder &lt;a href="https://d-nb.info/standards/elementset/gnd#succeedingPlaceOrGeographicName" target="_blank" rel="noopener">Nachfolger&lt;/a>, der mit dem Ländercode &lt;code>XA-DE-BW&lt;/code> für Baden-Württemberg verknüpft war.&lt;/p>
&lt;p>Die folgende SPARQL-Abfrage zeigt, wie diese Orte abgefragt werden können.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sparql" data-lang="sparql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gnd&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/gnd/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/standards/elementset/gnd#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gnd-area-code&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/standards/vocab/gnd/geographic-area-code#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">rdf&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">rdfs&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;http://www.w3.org/2000/01/rdf-schema#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">SELECT&lt;/span> &lt;span class="k">DISTINCT&lt;/span> &lt;span class="nv">?place&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">WHERE&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">VALUES&lt;/span> &lt;span class="nv">?geographicType&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">PlaceOrGeographicName&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">AdministrativeUnit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">BuildingOrMemorial&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">NameOfSmallGeographicUnitLyingWithinAnotherGeographicUnit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">NaturalGeographicUnit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">ReligiousTerritory&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">TerritorialCorporateBodyOrAdministrativeUnit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?place&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">geographicAreaCode&lt;/span> &lt;span class="nn">gnd-area-code&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">XA-DE&lt;/span> &lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">rdf&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">type&lt;/span> &lt;span class="nv">?geographicType&lt;/span> &lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">precedingPlaceOrGeographicName&lt;/span>&lt;span class="o">+&lt;/span> &lt;span class="err">|&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">succeedingPlaceOrGeographicName&lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="nv">?relatedPlace&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?relatedPlace&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">geographicAreaCode&lt;/span> &lt;span class="nn">gnd-area-code&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">XA-DE-BW&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="finale-sparql-abfrage">Finale SPARQL-Abfrage&lt;/h3>
&lt;p>Die folgende SPARQL-Abfrage kombiniert die Orte, die mit dem &lt;code>XA-DE-BW&lt;/code> für Baden-Württemberg angelegt wurden mit denen, die einen mit dem Ländercode &lt;code>XA-DE-BW&lt;/code> für Baden-Württemberg verknüpften Vorgänger oder Nachfolger haben.&lt;/p>
&lt;p>Zusätzlich werden noch die Eigenschaften &lt;a href="https://d-nb.info/standards/elementset/gnd#preferredNameForThePlaceOrGeographicName" target="_blank" rel="noopener">Bevorzugter Name des Geographikums&lt;/a> und die &lt;a href="https://d-nb.info/standards/elementset/gnd#definition" target="_blank" rel="noopener">Definition&lt;/a> abgefragt.
Da diese nicht zuverlässig gesetzt wurden, sind sie als &lt;code>OPTIONAL&lt;/code> gekennzeichnet.&lt;/p>
&lt;p>Da wir die GND-ID eindeutig halten wollen, diese aber gegebenenfalls mit mehreren geographischen Typen verknüpft sein kann, nutzen wir eine Gruppierung via &lt;code>GROUP BY&lt;/code> um doppelte GND-IDs zu filtern.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sparql" data-lang="sparql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gnd&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/gnd/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/standards/elementset/gnd#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gnd-area-code&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/standards/vocab/gnd/geographic-area-code#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">rdf&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">SELECT&lt;/span> &lt;span class="nv">?place&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nf">SAMPLE&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">?geographicType&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nv">?GeographicType&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nf">SAMPLE&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">?preferredName&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nv">?PreferredName&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nf">SAMPLE&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">?definition&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nv">?Definition&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">WHERE&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">VALUES&lt;/span> &lt;span class="nv">?geographicType&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">PlaceOrGeographicName&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">AdministrativeUnit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">BuildingOrMemorial&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">NameOfSmallGeographicUnitLyingWithinAnotherGeographicUnit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">NaturalGeographicUnit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">ReligiousTerritory&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">TerritorialCorporateBodyOrAdministrativeUnit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?place&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">geographicAreaCode&lt;/span> &lt;span class="nn">gnd-area-code&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">XA-DE-BW&lt;/span> &lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">rdf&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">type&lt;/span> &lt;span class="nv">?geographicType&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">OPTIONAL&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?place&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">preferredNameForThePlaceOrGeographicName&lt;/span> &lt;span class="nv">?preferredName&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">OPTIONAL&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?place&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">definition&lt;/span> &lt;span class="nv">?definition&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">UNION&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?place&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">geographicAreaCode&lt;/span> &lt;span class="nn">gnd-area-code&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">XA-DE&lt;/span> &lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">rdf&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">type&lt;/span> &lt;span class="nv">?geographicType&lt;/span> &lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">precedingPlaceOrGeographicName&lt;/span>&lt;span class="o">+&lt;/span> &lt;span class="err">|&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">succeedingPlaceOrGeographicName&lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="nv">?relatedPlace&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?relatedPlace&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">geographicAreaCode&lt;/span> &lt;span class="nn">gnd-area-code&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">XA-DE-BW&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">OPTIONAL&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?place&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">preferredNameForThePlaceOrGeographicName&lt;/span> &lt;span class="nv">?preferredName&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">OPTIONAL&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?place&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">definition&lt;/span> &lt;span class="nv">?definition&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span> &lt;span class="k">GROUP BY&lt;/span> &lt;span class="nv">?place&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="ergebnisse">Ergebnisse&lt;/h2>
&lt;p>Mit der oben beschriebenen SPARQL-Abfrage konnten etwa 33.000 zu Baden-Württemberg zuordenbare Orte aus der GND in unserem Apache Jena Triple-Store extrahiert werden.&lt;/p>
&lt;p>Innerhalb dieser Daten konnten etwa 600 eindeutige Dubletten und deren Ursprung identifiziert und der GND Fachstelle zur Korrektur vorgelegt werden. Das entspricht etwa zwei Prozent der gefunden Daten.&lt;/p>
&lt;p>Bei der Analyse der Dubletten ist aufgefallen, dass nach wie vor die historische Vorbelastung der GND durch die Verschmelzung der &lt;a href="https://de.wikipedia.org/wiki/Gemeinsame_K%C3%B6rperschaftsdatei" target="_blank" rel="noopener">Gemeinsamen Körperschaftsdatei&lt;/a> (GKD) mit der &lt;a href="https://de.wikipedia.org/wiki/Schlagwortnormdatei" target="_blank" rel="noopener">Schlagwortnormdatei&lt;/a> (SWD) für einen Großteil der Dubletten verantwortlich war.
Zusätzlich gab es einzelne Datenlieferungen, die ebenfalls für Dubletten geführt haben.&lt;/p>
&lt;p>Beim Identifikationsprozess für Dubletten ist aufgefallen, dass besonders das unterschiedliche Vorgehen bei der &amp;ldquo;Vorzugsbenennung&amp;rdquo; eines Ortes zu den vielen nicht offensichtlichen Dubletten geführt hat. Beispielsweise lässt sich &lt;a href="https://d-nb.info/gnd/4077993-2" target="_blank" rel="noopener">Bad Cannstatt&lt;/a> auch als &lt;em>Stuttgart-Cannstatt&lt;/em> benennen, was weder bei einer alphabetischen Sortierung, noch bei den meisten Standardverfahren zum algorithmischen Abgleich von Dubletten auffällt.&lt;/p>
&lt;p>Insgesamt haben wir vermutlich auch nur einen Teil der Dubletten für Orte in Baden-Württemberg in der GND identifiziert.
Unter anderem fallen alle Orte durch unsere Suchfilter, die Baden-Württemberg nicht als &lt;em>Geographic Area Code&lt;/em> definiert haben und auch keine mit Baden-Württemberg verknüpften Vorgänger oder Nachfolger haben.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Das Bild &amp;ldquo;Doppelte Orte in der GND identifizieren&amp;rdquo; wurde erstellt mit Bildern von &lt;a href="https://pixabay.com/de/users/peggy_marco-1553824/" target="_blank" rel="noopener">Peggy und Marco Lachmann-Anke&lt;/a> und &lt;a href="https://pixabay.com/de/users/geralt-9301/" target="_blank" rel="noopener">Gerd Altmann&lt;/a> auf &lt;a href="https://pixabay.com/" target="_blank" rel="noopener">Pixabay&lt;/a> und dem &lt;a href="https://commons.wikimedia.org/wiki/File:Logo_Gemeinsame_Normdatei_%28GND%29.svg" target="_blank" rel="noopener">&amp;ldquo;Logo Gemeinsame Normdatei (GND)&amp;rdquo;&lt;/a> von &lt;a href="https://www.dnb.de/" target="_blank" rel="noopener">Deutsche Nationalbibliothek (DNB)&lt;/a>, welches lizenziert ist unter einer &lt;a href="https://creativecommons.org/licenses/by-sa/4.0/deed.de" target="_blank" rel="noopener">CC BY-SA 4.0&lt;/a> Lizenz. Das Bild &amp;ldquo;Doppelte Orte in der GND identifizieren&amp;rdquo; ist ebenfalls lizenziert unter einer &lt;a href="https://creativecommons.org/licenses/by-sa/4.0/deed.de" target="_blank" rel="noopener">CC BY-SA 4.0&lt;/a> Lizenz.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>Der für dieses Experiment verwendete Abzug ist &lt;a href="https://data.dnb.de/opendata/authorities_lds_20211013.nt.gz" target="_blank" rel="noopener">authorities_lds_20211013.nt.gz&lt;/a>.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Erste Experimente mit der GND</title><link>https://fdmlab.landesarchiv-bw.de/post/2021-06-erste-experimente-mit-der-gnd/</link><pubDate>Tue, 29 Jun 2021 00:00:00 +0000</pubDate><guid>https://fdmlab.landesarchiv-bw.de/post/2021-06-erste-experimente-mit-der-gnd/</guid><description>&lt;p>Die &lt;em>Gemeinsame Normdatei&lt;/em> (GND) enthält unter anderem semantische Daten zu Personen und Orten.
In diesem Beitrag verwenden wir &lt;em>SPARQL&lt;/em> um die Daten und die Ontologie dahinter besser kennen zu lernen.&lt;/p>
&lt;p>Wir versuchen mit der GND die folgende Frage zu beantworten:&lt;/p>
&lt;blockquote>
&lt;p>Welche Berufe gab es Nürnberg im 17. Jahrhundert.&lt;/p>
&lt;/blockquote>
&lt;p>Zur Beantwortung dieser Frage verwenden wir &lt;a href="https://fdmlab.landesarchiv-bw.de/post/2021-06-gnd-in-lokale-datenbank-laden/">unseren lokalen Apache Jena Server&lt;/a>.
Die SPARQL-Anfragen können entweder in der Web GUI von Apache Jena ausgeführt werden, oder mit einer der vielen SPARQL-Clients&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>.&lt;/p>
&lt;h2 id="lade-beispielperson">Lade Beispielperson&lt;/h2>
&lt;p>In der &lt;a href="https://d-nb.info/standards/elementset/gnd" target="_blank" rel="noopener">GND Ontology&lt;/a> sind einige Beispiel &lt;em>Entities&lt;/em> genannt.
Wir laden hier das Beispiel für eine &lt;em>Individualisierte Person&lt;/em> der &lt;em>GND ID&lt;/em> &lt;code>118514091&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sparql" data-lang="sparql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gnd&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/gnd/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/standards/elementset/gnd#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">SELECT&lt;/span> &lt;span class="nv">?p&lt;/span> &lt;span class="nv">?o&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">WHERE&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gnd&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">118514091&lt;/span> &lt;span class="nv">?p&lt;/span> &lt;span class="nv">?o&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>p&lt;/th>
&lt;th>o&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;a href="http://www.w3.org/1999/02/22-rdf-syntax-ns#type" target="_blank" rel="noopener">http://www.w3.org/1999/02/22-rdf-syntax-ns#type&lt;/a>&lt;/td>
&lt;td>gndo:DifferentiatedPerson&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;a href="http://www.w3.org/2002/07/owl#sameAs" target="_blank" rel="noopener">http://www.w3.org/2002/07/owl#sameAs&lt;/a>&lt;/td>
&lt;td>&lt;a href="http://www.wikidata.org/entity/Q5383" target="_blank" rel="noopener">http://www.wikidata.org/entity/Q5383&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>gndo:gndIdentifier&lt;/td>
&lt;td>118514091&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>gndo:preferredNameForThePerson&lt;/td>
&lt;td>Bowie, David&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>gndo:biographicalOrHistoricalInformation&lt;/td>
&lt;td>spielt zahlreiche Instrumente&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>gndo:homepage&lt;/td>
&lt;td>&lt;a href="http://www.davidbowie.com" target="_blank" rel="noopener">http://www.davidbowie.com&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>gndo:placeOfBirth&lt;/td>
&lt;td>gnd:4074335-4&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>gndo:placeOfDeath&lt;/td>
&lt;td>gnd:4042011-5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>gndo:dateOfBirth&lt;/td>
&lt;td>1947-01-08&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>gndo:dateOfDeath&lt;/td>
&lt;td>2016-01-10&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>gndo:professionOrOccupation&lt;/td>
&lt;td>gnd:4040841-3&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>gndo:professionOrOccupation&lt;/td>
&lt;td>gnd:4032009-1&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>gndo:professionOrOccupation&lt;/td>
&lt;td>gnd:4052154-0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>gndo:professionOrOccupation&lt;/td>
&lt;td>gnd:4124099-6&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>gndo:professionOrOccupation&lt;/td>
&lt;td>gnd:4167564-2&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>gndo:professionOrOccupation&lt;/td>
&lt;td>gnd:7628944-8&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&amp;hellip;&lt;/td>
&lt;td>&amp;hellip;&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Die Anzahl der Trippel wurde aus Darstellungsgründen gekürzt.
Bei der Person handelt es sich um &lt;em>David Bowie&lt;/em>.
Wir erhalten unter anderem weitere Verweise auf andere Graphen mit Informationen über &lt;em>David Bowie&lt;/em>, persönliche Daten über ihn, sowie eine Liste in der &lt;em>GND&lt;/em> definierter &lt;em>Berufe&lt;/em> und &lt;em>Tätigkeiten&lt;/em>, die er ausgeübt hat.&lt;/p>
&lt;h2 id="berufe-und-tätigkeiten-von-david-bowie">Berufe und Tätigkeiten von David Bowie&lt;/h2>
&lt;p>Als Nächstes suchen wir die Berufe und Tätigkeiten von &lt;em>David Bowie&lt;/em> und berücksichtigen dabei auch alternativen Schreibweisen und Bezeichnungen der Berufe.
Dafür verwenden wir die Verbindung &lt;a href="https://d-nb.info/standards/elementset/gnd#professionOrOccupation" target="_blank" rel="noopener">professionOrOccupation&lt;/a>.
Alternativ gibt es die Verbindung &lt;a href="https://d-nb.info/standards/elementset/gnd#professionOrOccupationAsLiteral" target="_blank" rel="noopener">professionOrOccupationAsLiteral&lt;/a>, die in unseren Tests aber einige fehlerhaft geparste Daten beinhaltete (Zahlen, Buchstaben, &amp;hellip;) oder Zusatzinformationen lieferte (z.B. Zeitraum in der eine Tätigkeit ausgeübt wurde).
Der Beruf ist in der &lt;em>GND&lt;/em> als &lt;a href="https://d-nb.info/standards/elementset/gnd#SubjectHeading" target="_blank" rel="noopener">Schlagwort&lt;/a> (engl. &lt;em>subject heading&lt;/em>) hinterlegt.
Daher holen wir uns für das Schlagwort die bevorzugte Bezeichnung und alternative Bezeichnungen.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sparql" data-lang="sparql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gnd&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/gnd/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/standards/elementset/gnd#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">SELECT&lt;/span> &lt;span class="k">DISTINCT&lt;/span> &lt;span class="nv">?job&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">WHERE&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gnd&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">118514091&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">professionOrOccupation&lt;/span> &lt;span class="nv">?jobId&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?jobId&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">preferredNameForTheSubjectHeading&lt;/span>&lt;span class="err">|&lt;/span>&lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">variantNameForTheSubjectHeading&lt;/span> &lt;span class="nv">?job&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>Musiker, Musikschaffender, Komponist, Tonsetzer, Schauspieler, Darsteller (Schauspieler), Sänger, Konzertsänger, Librettist, Textdichter (Librettist), Bandleader, ld&lt;/p>
&lt;/blockquote>
&lt;p>Zur Übersichtlichkeit haben wir an dieser Stelle eine Listendarstellung für die Ergebnisse gewählt.&lt;/p>
&lt;h2 id="berufe-und-tätigkeiten-in-nürnberg-fixiert">Berufe und Tätigkeiten in Nürnberg (fixiert)&lt;/h2>
&lt;p>Nachdem wir herausgefunden haben, wie wir die Berufe und Tätigkeiten einer Person aus der GND auslesen können,
verknüpfen wir diese Information mit einem Ort. Konkret mit dem Ort Nürnberg, welches die &lt;em>GND ID&lt;/em> &lt;code>4042742-0&lt;/code> hat.
Hierfür suchen wir zuerst nach Personen, die über eine Auswahl von Eigenschaften (z.B. Geburtsort) mit Nürnberg verknüpft sind
und suchen dann nach deren Berufsbezeichnungen.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sparql" data-lang="sparql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gnd&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/gnd/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/standards/elementset/gnd#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">SELECT&lt;/span> &lt;span class="k">DISTINCT&lt;/span> &lt;span class="nv">?job&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">WHERE&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?person&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">placeOfBirth&lt;/span>&lt;span class="err">|&lt;/span>&lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">placeOfDeath&lt;/span>&lt;span class="err">|&lt;/span>&lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">placeOfActivity&lt;/span>&lt;span class="err">|&lt;/span>&lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">placeOfExile&lt;/span>&lt;span class="err">|&lt;/span>&lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">characteristicPlace&lt;/span> &lt;span class="nn">gnd&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">4042742-0&lt;/span> &lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">professionOrOccupation&lt;/span> &lt;span class="nv">?jobId&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?jobId&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">preferredNameForTheSubjectHeading&lt;/span>&lt;span class="err">|&lt;/span>&lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">variantNameForTheSubjectHeading&lt;/span> &lt;span class="nv">?job&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">LIMIT&lt;/span> &lt;span class="mi">20&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>Künstler, Bildender Künstler, Künstlertum, Kunstschaffender, Grafiker, Graphiker, Kupferstecher, Maler, Mathematiker, Diplommathematiker, Zeichner, Musiker, Musikschaffender, Dirigent, Orchesterleiter, Chorleiter, Chorregent, Chordirektor, Chormeister, Chordirigent&lt;/p>
&lt;/blockquote>
&lt;p>Um eine übersichtliche Ergebnismenge zu erhalten, haben wir die Anzahl der Ergebnisse auf 20 limitiert.&lt;/p>
&lt;h2 id="berufe-und-tätigkeiten-in-nürnberg-frei">Berufe und Tätigkeiten in Nürnberg (frei)&lt;/h2>
&lt;p>In der letzten Anfrage haben wir die Art der Verknüpfung von Personen mit dem Ort Nürnberg fixiert.
Dazu gehört ein intensives Studieren der GND Ontoloy.&lt;/p>
&lt;p>Es geht auch einfacher. In der folgenden Anfrage suchen wir nach Personen,
die in irgendeiner Beziehung zu Nürnberg stehen (&lt;code>?person ?p gnd:4042742-0&lt;/code>)
und suchen dann die Berufsbezeichnungen.&lt;/p>
&lt;p>Theoretisch erhöhen wir dadurch die Trefferquote, verringern aber die Genauigkeit.
Praktisch spielte das in unseren Experimenten keine Rolle.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sparql" data-lang="sparql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gnd&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/gnd/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/standards/elementset/gnd#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">SELECT&lt;/span> &lt;span class="k">DISTINCT&lt;/span> &lt;span class="nv">?job&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">WHERE&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?person&lt;/span> &lt;span class="nv">?p&lt;/span> &lt;span class="nn">gnd&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">4042742-0&lt;/span> &lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">professionOrOccupation&lt;/span> &lt;span class="nv">?jobId&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?jobId&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">preferredNameForTheSubjectHeading&lt;/span>&lt;span class="err">|&lt;/span>&lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">variantNameForTheSubjectHeading&lt;/span> &lt;span class="nv">?job&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">LIMIT&lt;/span> &lt;span class="mi">20&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>Künstler, Bildender Künstler, Künstlertum, Kunstschaffender, Grafiker, Graphiker, Kupferstecher, Maler, Mathematiker, Diplommathematiker, Zeichner, Physiker, Astronom, Astronomen, Kartograf, Kartograph, Pfarrer, Pastor, Evangelischer Theologe, Theologe / Evangelische Kirche&lt;/p>
&lt;/blockquote>
&lt;p>Die Ergebnisse dieser Vorschau unterscheiden sich von der letzten Abfrage, da der Graph in einer anderen Reihenfolge traversiert wird.
Vergleicht man die Gesamtmenge der Ergebnisse, dann unterscheiden sie sich nur in der Reihenfolge der Elemente.&lt;/p>
&lt;h2 id="berufe-und-tätigkeiten-in-nürnberg-im-17-jahrhundert">Berufe und Tätigkeiten in Nürnberg im 17. Jahrhundert&lt;/h2>
&lt;p>Um die Anfrage aus dem letzten Beispiel auf das 17. Jahrhundert einzuschränken,
fügen wir einen Filter für das Geburtsdatum und das Sterbedatum der Personen hinzu.&lt;/p>
&lt;p>Der Vollständigkeit halber, haben wir &lt;code>gndo:dateOfBirth&lt;/code> und &lt;code>gndo:dateOfDeath&lt;/code> optional gesetzt.
Das verhindert, dass wir ungewollt Personen filtern, bei denen eines der beiden Daten fehlt.
Daher brauchen wir noch ein extra Filterkriterium, welches das Geburtsdatum nach unten und das Todesdatum nach oben beschränkt&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sparql" data-lang="sparql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gnd&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/gnd/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/standards/elementset/gnd#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">xsd&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;http://www.w3.org/2001/XMLSchema#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">SELECT&lt;/span> &lt;span class="k">DISTINCT&lt;/span> &lt;span class="nv">?job&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">WHERE&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?person&lt;/span> &lt;span class="nv">?p&lt;/span> &lt;span class="nn">gnd&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">4042742-0&lt;/span> &lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">professionOrOccupation&lt;/span> &lt;span class="nv">?jobId&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?jobId&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">preferredNameForTheSubjectHeading&lt;/span>&lt;span class="err">|&lt;/span>&lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">variantNameForTheSubjectHeading&lt;/span> &lt;span class="nv">?job&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">OPTIONAL&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nv">?person&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">dateOfBirth&lt;/span> &lt;span class="nv">?birthDay&lt;/span> &lt;span class="p">.&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">OPTIONAL&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nv">?person&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">dateOfDeath&lt;/span> &lt;span class="nv">?deathDay&lt;/span> &lt;span class="p">.&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">FILTER&lt;/span> &lt;span class="p">(&lt;/span> &lt;span class="nf">bound&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">?birthDay&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">||&lt;/span> &lt;span class="nf">bound&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">?deathDay&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">)&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">FILTER&lt;/span> &lt;span class="p">(&lt;/span> &lt;span class="nf">bound&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">?birthDay&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nv">?birthDay&lt;/span> &lt;span class="o">&amp;gt;=&lt;/span> &lt;span class="s">&amp;#34;1501-01-01&amp;#34;&lt;/span>&lt;span class="o">^^&lt;/span>&lt;span class="nn">xsd&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">date&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nv">?birthDay&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;1701-01-01&amp;#34;&lt;/span>&lt;span class="o">^^&lt;/span>&lt;span class="nn">xsd&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">date&lt;/span> &lt;span class="p">)&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">FILTER&lt;/span> &lt;span class="p">(&lt;/span> &lt;span class="nf">bound&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">?deathDay&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nv">?deathDay&lt;/span> &lt;span class="o">&amp;gt;=&lt;/span> &lt;span class="s">&amp;#34;1601-01-01&amp;#34;&lt;/span>&lt;span class="o">^^&lt;/span>&lt;span class="nn">xsd&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">date&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nv">?deathDay&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;1801-01-01&amp;#34;&lt;/span>&lt;span class="o">^^&lt;/span>&lt;span class="nn">xsd&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">date&lt;/span> &lt;span class="p">)&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">LIMIT&lt;/span> &lt;span class="mi">20&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>Kupferstecher, Zeichner, Künstler, Bildender Künstler, Künstlertum, Kunstschaffender, Maler, Radierer, Buchhändler, Buchführer, Drucker, Buchdrucker, Verleger, Verlagsbuchhändler, Verlagsleiter, Musikverleger, Pfarrer, Pastor, Jurist, Rechtswissenschaftler&lt;/p>
&lt;/blockquote>
&lt;h2 id="methodische-probleme">Methodische Probleme&lt;/h2>
&lt;p>Bevor wir mit diesen Ergebnissen versuchen spezifische Aussagen zu treffen, sollten wir zuerst einige methodische Probleme betrachten.&lt;/p>
&lt;h3 id="-beruf-und--ort">💼 Beruf und 🏠 Ort&lt;/h3>
&lt;p>Die Verknüpfung von Beruf und Ort lässt sich in der GND nur über eine 👤 Person herstellen.
Mit den vorliegenden Daten kann jedoch nicht festgestellt werden, ob die 👤 Person den Beruf (oder die Tätigkeit) auch an diesem Ort ausgeübt hat.
Zum Beispiel wurde Albert Einstein in Ulm geboren, hat den Beruf des Physikers dort jedoch nie ausgeübt.&lt;/p>
&lt;h3 id="-zeit-und--ort">📅 Zeit und 🏠 Ort&lt;/h3>
&lt;p>Mit dem Filter auf Geburtsdatum und Sterbedatum haben wir zwar eine grobe Einschränkung getroffen.
Es ist jedoch nicht zu bestimmen, ob eine 👤 Person mit Sterbedatum 1601 ihren Beruf im 17. Jahrhundert noch ausgeübt hat.
Es ist sicherlich auszuschließen, dass die meisten 👥 Personen mit einem Geburtsdatum von 1699 ihren Beruf im 17. Jahrhundert schon ausgeübt haben.&lt;/p>
&lt;h3 id="-datengrundlage">📜 Datengrundlage&lt;/h3>
&lt;p>Die GND beinhaltet (noch) keinen repräsentative Darstellung der Gesamtbevölkerung.
Es gibt einen starken Bias in Richtung 👥 Personen, die schriftliche Erzeugnisse produzierten, oder künstlerisch tätig waren.
Das wird im folgenden Beispiel deutlich.&lt;/p>
&lt;h2 id="berufe-und-tätigkeiten-in-nürnberg-im-17-jahrhundert-mit-häufigkeit">Berufe und Tätigkeiten in Nürnberg im 17. Jahrhundert mit Häufigkeit&lt;/h2>
&lt;p>Anstatt wie zuvor alle Berufe und Tätigkeiten mit alternativen Bezeichnungen zu sammeln, schreiben wir hier eine Auswertung, die die Häufigkeit der einzelnen Berufe und Tätigkeiten bestimmt. Die alternativen Bezeichnungen, werden in einer separaten Spalte der Ausgabetabelle gesammelt.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sparql" data-lang="sparql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gnd&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/gnd/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;https://d-nb.info/standards/elementset/gnd#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">PREFIX&lt;/span> &lt;span class="nn">xsd&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nl">&amp;lt;http://www.w3.org/2001/XMLSchema#&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">SELECT&lt;/span> &lt;span class="nv">?job&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nf">COUNT&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">?job&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">AS&lt;/span> &lt;span class="nv">?count&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nf">GROUP_CONCAT&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">DISTINCT&lt;/span> &lt;span class="nv">?jobAlternative&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="nf">SEPARATOR&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;, &amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">AS&lt;/span> &lt;span class="nv">?alternatives&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">WHERE&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?person&lt;/span> &lt;span class="nv">?p&lt;/span> &lt;span class="nn">gnd&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">4042742-0&lt;/span> &lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">professionOrOccupation&lt;/span> &lt;span class="nv">?jobId&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?jobId&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">preferredNameForTheSubjectHeading&lt;/span> &lt;span class="nv">?job&lt;/span> &lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">variantNameForTheSubjectHeading&lt;/span> &lt;span class="nv">?jobAlternative&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">OPTIONAL&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nv">?person&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">dateOfBirth&lt;/span> &lt;span class="nv">?birthDay&lt;/span> &lt;span class="p">.&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">OPTIONAL&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nv">?person&lt;/span> &lt;span class="nn">gndo&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">dateOfDeath&lt;/span> &lt;span class="nv">?deathDay&lt;/span> &lt;span class="p">.&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">FILTER&lt;/span> &lt;span class="p">(&lt;/span> &lt;span class="nf">bound&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">?birthDay&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">||&lt;/span> &lt;span class="nf">bound&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">?deathDay&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">)&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">FILTER&lt;/span> &lt;span class="p">(&lt;/span> &lt;span class="nf">bound&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">?birthDay&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nv">?birthDay&lt;/span> &lt;span class="o">&amp;gt;=&lt;/span> &lt;span class="s">&amp;#34;1501-01-01&amp;#34;&lt;/span>&lt;span class="o">^^&lt;/span>&lt;span class="nn">xsd&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">date&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nv">?birthDay&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;1701-01-01&amp;#34;&lt;/span>&lt;span class="o">^^&lt;/span>&lt;span class="nn">xsd&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">date&lt;/span> &lt;span class="p">)&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">FILTER&lt;/span> &lt;span class="p">(&lt;/span> &lt;span class="nf">bound&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">?deathDay&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nv">?deathDay&lt;/span> &lt;span class="o">&amp;gt;=&lt;/span> &lt;span class="s">&amp;#34;1601-01-01&amp;#34;&lt;/span>&lt;span class="o">^^&lt;/span>&lt;span class="nn">xsd&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">date&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nv">?deathDay&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;1801-01-01&amp;#34;&lt;/span>&lt;span class="o">^^&lt;/span>&lt;span class="nn">xsd&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="nt">date&lt;/span> &lt;span class="p">)&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">GROUP BY&lt;/span> &lt;span class="nv">?job&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">ORDER BY&lt;/span> &lt;span class="k">DESC&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">?count&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>job&lt;/th>
&lt;th>count&lt;/th>
&lt;th>alternatives&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Kaufmann&lt;/td>
&lt;td>270&lt;/td>
&lt;td>Kaufleute, Fernkaufmann, Fernhandelskaufmann, Großkaufmann, Handelsmann&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Jurist&lt;/td>
&lt;td>270&lt;/td>
&lt;td>Rechtswissenschaftler, Juristischer Beruf, Juristen&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Patriziat&lt;/td>
&lt;td>164&lt;/td>
&lt;td>Patrizier, Stadtadel&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Schriftsteller&lt;/td>
&lt;td>156&lt;/td>
&lt;td>Dichter, Literaturproduzent, Literat, Homme de lettres&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Hochschullehrer&lt;/td>
&lt;td>120&lt;/td>
&lt;td>Professor (Hochschule), Lehrkörper / Hochschule, Lehrpersonal / Hochschule, Universitätsprofessor, Hochschulprofessor&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Verleger&lt;/td>
&lt;td>104&lt;/td>
&lt;td>Verlagsbuchhändler, Verlagsleiter&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Pfarrer&lt;/td>
&lt;td>94&lt;/td>
&lt;td>Pastor&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Arzt&lt;/td>
&lt;td>76&lt;/td>
&lt;td>Mediziner, Ärzte&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Künstler&lt;/td>
&lt;td>72&lt;/td>
&lt;td>Bildender Künstler, Künstlertum, Kunstschaffender&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Unternehmer&lt;/td>
&lt;td>57&lt;/td>
&lt;td>Industrieller, Fabrikant, Entrepreneur&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&amp;hellip;&lt;/td>
&lt;td>&amp;hellip;&lt;/td>
&lt;td>&amp;hellip;&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Zur Übersichtlichkeit haben wir die Tabelle auf 10 Einträge reduziert, sie kann als&lt;/p>
&lt;a href="https://fdmlab.landesarchiv-bw.de/data/nuernberg-jobs-1700.csv">
&lt;i class="fas fa-file-csv pr-1 fa-fw">&lt;/i>CSV komplett&lt;/a>
heruntergeladen werden.
&lt;figure id="figure-silhouette-der-kaiserburg-in-nürnberg-mit-nach-häufigkeit-gewichteter-wortwolke-der-in-der-gnd-gelisteten-berufe-und-tätigkeiten-im-17-jahrhundert-mit-einer-verbindung-zu-nürnberg">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Silhouette der Kaiserburg in Nürnberg, mit nach Häufigkeit gewichteter Wortwolke, der in der GND gelisteten Berufe und Tätigkeiten im 17. Jahrhundert, mit einer Verbindung zu Nürnberg." srcset="
/post/2021-06-erste-experimente-mit-der-gnd/featured_hu9de53fc8c4372273836a8ef7220996a7_256456_ab851dcc72f12f70d2a42e79273a6701.webp 400w,
/post/2021-06-erste-experimente-mit-der-gnd/featured_hu9de53fc8c4372273836a8ef7220996a7_256456_657d5e2dc1cc3c72e35f578ecc54008b.webp 760w,
/post/2021-06-erste-experimente-mit-der-gnd/featured_hu9de53fc8c4372273836a8ef7220996a7_256456_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/post/2021-06-erste-experimente-mit-der-gnd/featured_hu9de53fc8c4372273836a8ef7220996a7_256456_ab851dcc72f12f70d2a42e79273a6701.webp"
width="760"
height="505"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Silhouette der Kaiserburg in Nürnberg, mit nach Häufigkeit gewichteter Wortwolke, der in der GND gelisteten Berufe und Tätigkeiten im 17. Jahrhundert, mit einer Verbindung zu Nürnberg.
&lt;/figcaption>&lt;/figure>
&lt;p>Wenn man einen Blick auf diese Auswertung wirft, wird schnell klar, dass dies weder eine repräsentative, noch eine vollständige Darstellung der Berufe und Tätigkeiten im 17. Jahrhundert in Nürnberg darstellt.
Für unseren Streifzug durch die Daten der GND war die Fragestellung jedoch sehr hilfreich.
Und auch im Archivalltag haben wir immer wieder Rechercheaufgaben, in denen konkret nach Personen mit einem bestimmten Beruf gesucht werden, die in einem bestimmten Zeitraum in einer Stadt gelebt haben.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Wir verwenden &lt;a href="https://pypi.org/project/sparql-dataframe/" target="_blank" rel="noopener">sparql_dataframe&lt;/a>.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>Die 100 Jahre sind etwas großzügig, wir erhöhen damit die Trefferquote und verringern die Genauigkeit.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>GND in lokale Datenbank laden</title><link>https://fdmlab.landesarchiv-bw.de/post/2021-06-gnd-in-lokale-datenbank-laden/</link><pubDate>Tue, 22 Jun 2021 00:00:00 +0000</pubDate><guid>https://fdmlab.landesarchiv-bw.de/post/2021-06-gnd-in-lokale-datenbank-laden/</guid><description>&lt;p>Normdaten sind hilfreiche und notwendige Datenquellen zum Aufbereiten, Erschließen und Finden von Archivmaterial.
In diesem Beitrag laden wir die &lt;em>Gemeinsame Normdatei&lt;/em> (GND) zur Weiterverarbeitung in einen lokalen &lt;em>Triple Store&lt;/em> von &lt;em>Apache Jena&lt;/em>.&lt;/p>
&lt;figure class="float-right" id="figure-gnd-logohttpswwwdnbdegnd-von-derdnb-unter-cc-by-sa-lizenzhttpscreativecommonsorglicensesby-sa40">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="[GND Logo](https://www.dnb.de/gnd) von der
DNB unter [CC BY-SA Lizenz](https://creativecommons.org/licenses/by-sa/4.0/)." srcset="
/post/2021-06-gnd-in-lokale-datenbank-laden/gnd_hubf082f7bbdaac622ea39cd2aed6726e1_38178_89e8517eb08384fb4e1deb9cb8ec3e07.webp 400w,
/post/2021-06-gnd-in-lokale-datenbank-laden/gnd_hubf082f7bbdaac622ea39cd2aed6726e1_38178_1b5aa3fd08c0facd7faebc94c2e45e69.webp 760w,
/post/2021-06-gnd-in-lokale-datenbank-laden/gnd_hubf082f7bbdaac622ea39cd2aed6726e1_38178_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/post/2021-06-gnd-in-lokale-datenbank-laden/gnd_hubf082f7bbdaac622ea39cd2aed6726e1_38178_89e8517eb08384fb4e1deb9cb8ec3e07.webp"
width="200"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
&lt;a href="https://www.dnb.de/gnd" target="_blank" rel="noopener">GND Logo&lt;/a> von der&lt;br>DNB unter &lt;a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank" rel="noopener">CC BY-SA Lizenz&lt;/a>.
&lt;/figcaption>&lt;/figure>
&lt;h2 id="über-die-gemeinsame-normdatei">Über die Gemeinsame Normdatei&lt;/h2>
&lt;p>Die &lt;a href="https://www.dnb.de/gnd" target="_blank" rel="noopener">GND&lt;/a> ist ein von der Deutschen National Bibliothek (DNB) betreuter Dienst zur kooperativen Nutzung von Normdaten.
Im Archivbereich interessieren wir uns insbesondere für eindeutig zu identifizierende Personen, Orte und Dinge.&lt;/p>
&lt;p>Die GND liegt im Format &lt;a href="https://www.loc.gov/marc/" target="_blank" rel="noopener">MARC 21&lt;/a> und in &lt;a href="https://www.w3.org/RDF/" target="_blank" rel="noopener">RDF&lt;/a> vor und kann über unterschiedliche Schnittstellen abgerufen werden.
Wir konzentrieren uns hier auf die &lt;a href="https://www.dnb.de/DE/Professionell/Metadatendienste/Datenbezug/LDS/lds_node.html" target="_blank" rel="noopener">GND Daten im RDF Format&lt;/a>, da wir diese effektiver durchsuchen können.
Zum heutigen Stand gibt es von Seiten der DNB keinen SPARQL Endpoint für den Zugriff auf die Daten&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>.
Daher spielen wir einen Daten Dump in eine lokale Datenbank ein.
Die Verwendung der Daten in einem Memory basierten Graphen z.B. mit &lt;a href="https://rdflib.readthedocs.io" target="_blank" rel="noopener">RDFlib&lt;/a> funktioniert auf Grund der Größe des Graphen nicht.&lt;/p>
&lt;h2 id="datenbank-apache-jena-fuseki">Datenbank: Apache Jena Fuseki&lt;/h2>
&lt;figure class="float-right" id="figure-apache-jena-logohttpsjenaapacheorg-von-derapache-software-foundation">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="[Apache Jena Logo](https://jena.apache.org/) von der
Apache® Software Foundation." srcset="
/post/2021-06-gnd-in-lokale-datenbank-laden/jena_hu2356985c631d3f3d54e2729962d749aa_49736_9d3ca77f0e108edf462976f508cce2a0.webp 400w,
/post/2021-06-gnd-in-lokale-datenbank-laden/jena_hu2356985c631d3f3d54e2729962d749aa_49736_097e5ee1d49ca7c0cf8db86174ba32cd.webp 760w,
/post/2021-06-gnd-in-lokale-datenbank-laden/jena_hu2356985c631d3f3d54e2729962d749aa_49736_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/post/2021-06-gnd-in-lokale-datenbank-laden/jena_hu2356985c631d3f3d54e2729962d749aa_49736_9d3ca77f0e108edf462976f508cce2a0.webp"
width="200"
height="525"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
&lt;a href="https://jena.apache.org/" target="_blank" rel="noopener">Apache Jena Logo&lt;/a> von der&lt;br>Apache&lt;sup>®&lt;/sup> Software Foundation.
&lt;/figcaption>&lt;/figure>
&lt;p>Als lokale Datenbank für unser Experiment haben wir uns für &lt;a href="https://jena.apache.org/" target="_blank" rel="noopener">Apache Jena&lt;/a> entschieden.
Das Projekt vereint einen Triple Store (TDB) zum Speichern und Verwalten der RDF Triple der GND,
eine Implementierung von &lt;a href="https://www.w3.org/TR/sparql11-overview/" target="_blank" rel="noopener">SPARQL&lt;/a> namens ARQ, sowie einen SPARQL Endpoint mit Fuseki.
Zusätzlich gib es auch noch Tools zum Arbeiten mit RDF und &lt;a href="https://www.w3.org/OWL/" target="_blank" rel="noopener">OWL&lt;/a>, die wir erstmal nicht nutzen werden.
Da wir &lt;a href="https://fdmlab.landesarchiv-bw.de/post/2021-06-wie-wir-docker-einsetzen/">gerne mit Docker arbeiten&lt;/a>,
es aber kein offizielles Docker Image des Apache Projektes gibt,
verwenden wir das Docker Image &lt;a href="https://hub.docker.com/r/stain/jena-fuseki" target="_blank" rel="noopener">stain/jena-fuseki&lt;/a> aus dem Docker Hub&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>.&lt;/p>
&lt;h2 id="einlesen-der-daten">Einlesen der Daten&lt;/h2>
&lt;div class="alert alert-note">
&lt;div>
Da das Einlesen der Daten mehrere Stunden dauern kann, empfehlen wir den Workflow zuerst mit einem kleineren Testdatensatz auszuführen.
&lt;/div>
&lt;/div>
&lt;p>Zum Einlesen haben wir uns die Datei &lt;code>authorities_lds.nt.gz&lt;/code> aus dem &lt;a href="https://data.dnb.de/opendata/" target="_blank" rel="noopener">DNB Data Dump&lt;/a> heruntergeladen&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>.&lt;/p>
&lt;p>Wir arbeiten mit der folgenden Ordnerstruktur:&lt;/p>
&lt;div class="mermaid">---
title: Ordnerstruktur
config:
look: handDrawn
theme: neutral
---
flowchart TD
subgraph data[far:fa-folder-open data]
fuseki[far:fa-folder fuseki]
fuseki_test[far:fa-folder fuseki_test]
gnd_triples[far:fa-folder gnd_triples]
test_triples[far:fa-folder test_triples]
end
root[far:fa-folder-open gnd_test] --> data
root --> README[far:fa-file README.md]
&lt;/div>
&lt;ul>
&lt;li>&lt;strong>README.md&lt;/strong>: Überblick über das Projekt und die Daten geben!&lt;/li>
&lt;li>&lt;strong>fuseki&lt;/strong>: Ordner zum Persistieren der Datenbank von Apache Jena.&lt;/li>
&lt;li>&lt;strong>fuseki_test&lt;/strong>: Ordner für den Test mit Apache Jena.&lt;/li>
&lt;li>&lt;strong>gnd_triples&lt;/strong>: Speicherort der &lt;code>.nt.gz&lt;/code> Datei.&lt;/li>
&lt;li>&lt;strong>test_triples&lt;/strong>: Speicherort von Testdateien im &lt;code>.ttl&lt;/code> Format.&lt;/li>
&lt;/ul>
&lt;h3 id="testdaten-einlesen">Testdaten einlesen&lt;/h3>
&lt;p>Als erstes starten wir einen Docker Container mit dem Namen &lt;code>fuseki&lt;/code>,
machen die Web GUI verfügbar über &lt;a href="http://localhost:8080" target="_blank" rel="noopener">http://localhost:8080&lt;/a>, setzen
das Administrator Passwort auf &lt;code>123123&lt;/code> und &lt;em>mounten&lt;/em> unsere Testordner in den Container&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup>.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">docker&lt;/span> &lt;span class="n">run&lt;/span> &lt;span class="n">-it&lt;/span> &lt;span class="p">-&lt;/span>&lt;span class="n">-rm&lt;/span> &lt;span class="p">-&lt;/span>&lt;span class="n">-name&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="n">fuseki&lt;/span> &lt;span class="n">-p&lt;/span> &lt;span class="mf">8080&lt;/span>&lt;span class="err">:&lt;/span>&lt;span class="mf">3030&lt;/span> &lt;span class="n">-e&lt;/span> &lt;span class="n">ADMIN_PASSWORD&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="mf">123123&lt;/span> &lt;span class="n">-v&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">$(&lt;/span>&lt;span class="n">PWD&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="s2">\data\test_triples:/staging&amp;#34;&lt;/span> &lt;span class="n">-v&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">$(&lt;/span>&lt;span class="n">PWD&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="s2">\data\fuseki_test:/fuseki&amp;#34;&lt;/span> &lt;span class="n">stain&lt;/span>&lt;span class="p">/&lt;/span>&lt;span class="nb">jena-fuseki&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Den Docker Container lassen wir laufen und öffnen ein zweites Terminal (Shell, PowerShell, &amp;hellip;).
Von diesem aus können wir uns mit dem Container verbinden und den Einlesevorgang starten.
Hierfür gibt es zwei Varianten. In der ersten wird das bereitgestellte &lt;code>load.sh&lt;/code> Skript verwendet, welches auf &lt;code>tdbloader&lt;/code> verweist.
Wir verzichten darauf dem &lt;code>load.sh&lt;/code> Skript spezifische Dateien vorzugeben, sondern lesen alle kompatiblen Formate im &lt;code>fuseki_test&lt;/code> Ordner in die &lt;code>test&lt;/code> Datenbank ein.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">docker&lt;/span> &lt;span class="n">exec&lt;/span> &lt;span class="n">-it&lt;/span> &lt;span class="n">fuseki&lt;/span> &lt;span class="p">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="p">/&lt;/span>&lt;span class="n">bash&lt;/span> &lt;span class="n">-c&lt;/span> &lt;span class="s1">&amp;#39;./load.sh test&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Abschließend wird der geladene Datensatz in der Web GUI angelegt. In dem folgenden Bildschirmfoto in Abbildung 1 wird ein &lt;code>TDB&lt;/code> Datensatz mit dem Namen &lt;code>test&lt;/code> angelegt. Hier ist der gleiche Bezeichner zu wählen, wie er auch beim Laden verwendet wurde.&lt;/p>
&lt;figure id="figure-hinzufügen-des-test-datensatzes-in-der-web-gui">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Hinzufügen des Test Datensatzes in der Web GUI." srcset="
/post/2021-06-gnd-in-lokale-datenbank-laden/apache-jena-add-test-dataset_hu7de0ec55cdf555c075315fa09a7828f7_31568_3ebcb8e78b5e65817acfcaa7832ab045.webp 400w,
/post/2021-06-gnd-in-lokale-datenbank-laden/apache-jena-add-test-dataset_hu7de0ec55cdf555c075315fa09a7828f7_31568_44ec608008c18bf6afac67dd2ee66eec.webp 760w,
/post/2021-06-gnd-in-lokale-datenbank-laden/apache-jena-add-test-dataset_hu7de0ec55cdf555c075315fa09a7828f7_31568_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/post/2021-06-gnd-in-lokale-datenbank-laden/apache-jena-add-test-dataset_hu7de0ec55cdf555c075315fa09a7828f7_31568_3ebcb8e78b5e65817acfcaa7832ab045.webp"
width="760"
height="249"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Hinzufügen des Test Datensatzes in der Web GUI.
&lt;/figcaption>&lt;/figure>
&lt;p>Anschließend kann entweder in der Web GUI im Tab &lt;em>info&lt;/em> oder mit dem folgenden SPARQL-Befehl die Anzahl der eingelesenen Trippel bestimmt werden.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sparql" data-lang="sparql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">SELECT&lt;/span> &lt;span class="nf">COUNT&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">WHERE&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">?s&lt;/span> &lt;span class="nv">?p&lt;/span> &lt;span class="nv">?o&lt;/span> &lt;span class="p">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="alternative-mit-tdb2">Alternative mit TDB2&lt;/h4>
&lt;p>Alternativ kann auch der &lt;a href="https://jena.apache.org/documentation/tdb2/" target="_blank" rel="noopener">tdbloader2&lt;/a> verwendet werden. Hier werden explizit nur Dateien im &lt;code>*.ttl&lt;/code> Format eingelesen.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">docker&lt;/span> &lt;span class="n">exec&lt;/span> &lt;span class="n">-it&lt;/span> &lt;span class="n">fuseki&lt;/span> &lt;span class="p">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="p">/&lt;/span>&lt;span class="n">bash&lt;/span> &lt;span class="n">-c&lt;/span> &lt;span class="s1">&amp;#39;./tdbloader2 --loc=/fuseki/databases/test /staging/*.ttl&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>In der Web GUI darauf achten, den Datensatz als &lt;code>TDB2&lt;/code> anzulegen.&lt;/p>
&lt;h3 id="gnd-einlesen">GND einlesen&lt;/h3>
&lt;p>Nach einem erfolgreichen Test lesen wir nun die komplette GND ein.
Wir haben uns für &lt;code>TDB2&lt;/code> entschieden, da wir planen den Datensatz länger zu verwenden. Das Einlesen benötigt mit 6 Stunden und 15 Minuten etwa eine Viertelstunde länger als mit der Vorgängerversion &lt;code>TDB&lt;/code>.&lt;/p>
&lt;h4 id="1-starten-des-containers-mit-daten-zum-einlesen">1. Starten des Containers mit Daten zum Einlesen&lt;/h4>
&lt;p>Der folgende Befehl startet einen Docker Container mit dem Verzeichnis der Daten zum Einlesen und einem Verzeichnis zum Speichern der Datenbank von Apache Jena.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">docker&lt;/span> &lt;span class="n">run&lt;/span> &lt;span class="n">-it&lt;/span> &lt;span class="p">-&lt;/span>&lt;span class="n">-rm&lt;/span> &lt;span class="p">-&lt;/span>&lt;span class="n">-name&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="n">fuseki&lt;/span> &lt;span class="n">-p&lt;/span> &lt;span class="mf">8080&lt;/span>&lt;span class="err">:&lt;/span>&lt;span class="mf">3030&lt;/span> &lt;span class="n">-e&lt;/span> &lt;span class="n">ADMIN_PASSWORD&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="mf">123123&lt;/span> &lt;span class="n">-v&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">$(&lt;/span>&lt;span class="n">PWD&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="s2">\data\gnd_triples:/staging&amp;#34;&lt;/span> &lt;span class="n">-v&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">$(&lt;/span>&lt;span class="n">PWD&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="s2">\data\fuseki:/fuseki&amp;#34;&lt;/span> &lt;span class="n">stain&lt;/span>&lt;span class="p">/&lt;/span>&lt;span class="nb">jena-fuseki&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="2-einlesen-der-daten-im-tdb2-format">2. Einlesen der Daten im &lt;code>TDB2&lt;/code> Format&lt;/h4>
&lt;p>In einem separaten Terminal starten wir den Einlesevorgang der GND Daten mit dem &lt;code>tdbloader2&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">docker&lt;/span> &lt;span class="n">exec&lt;/span> &lt;span class="n">-it&lt;/span> &lt;span class="n">fuseki&lt;/span> &lt;span class="p">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="p">/&lt;/span>&lt;span class="n">bash&lt;/span> &lt;span class="n">-c&lt;/span> &lt;span class="s1">&amp;#39;./tdbloader2 --loc=/fuseki/databases/gnd /staging/*.nt.gz&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="3-anlegen-des-datensatzes-in-der-web-gui">3. Anlegen des Datensatzes in der Web GUI&lt;/h4>
&lt;p>Nach dem erfolgreichen Einlesen legen wir den Datensatz in der Weg GUI an.
Hierbei achten wir darauf, den gleichen Bezeichner zu verwenden, wie beim Einlesen und als Format &lt;code>TDB2&lt;/code> zu wählen.&lt;/p>
&lt;figure id="figure-hinzufügen-des-gnd-datensatzes-in-der-web-gui">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Hinzufügen des GND Datensatzes in der Web GUI." srcset="
/post/2021-06-gnd-in-lokale-datenbank-laden/apache-jena-add-gnd-dataset_hu5d67e5c0519dade124681b5a02d949f1_31074_e44833b33d84e25ec3294609e448e6a8.webp 400w,
/post/2021-06-gnd-in-lokale-datenbank-laden/apache-jena-add-gnd-dataset_hu5d67e5c0519dade124681b5a02d949f1_31074_cc005c6d4dc61bb81a6064c541a09cb3.webp 760w,
/post/2021-06-gnd-in-lokale-datenbank-laden/apache-jena-add-gnd-dataset_hu5d67e5c0519dade124681b5a02d949f1_31074_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://fdmlab.landesarchiv-bw.de/post/2021-06-gnd-in-lokale-datenbank-laden/apache-jena-add-gnd-dataset_hu5d67e5c0519dade124681b5a02d949f1_31074_e44833b33d84e25ec3294609e448e6a8.webp"
width="760"
height="249"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Abbildung&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Hinzufügen des GND Datensatzes in der Web GUI.
&lt;/figcaption>&lt;/figure>
&lt;h4 id="4-exemplarisches-testen-der-eingelesenen-daten">4. Exemplarisches Testen der eingelesenen Daten&lt;/h4>
&lt;p>Anschließend testen wir exemplarisch, ob die Daten nutzbar sind.
Hierfür verwenden wir eine SPARQL Abfrage mit einem Standardbeispiel aus der &lt;a href="https://d-nb.info/standards/elementset/gnd" target="_blank" rel="noopener">GND Ontology&lt;/a>.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sparql" data-lang="sparql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">SELECT&lt;/span> &lt;span class="nv">?p&lt;/span> &lt;span class="nv">?o&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">WHERE&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nl">&amp;lt;https://d-nb.info/gnd/118514091&amp;gt;&lt;/span> &lt;span class="nv">?p&lt;/span> &lt;span class="nv">?o&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Falls zu diesem Zeitpunkt noch keine Ergebnisse angezeigt werden, den Container beenden und wie in Schritt 5 starten.&lt;/p>
&lt;h4 id="5-wiederverwendung-des-containers">5. Wiederverwendung des Containers&lt;/h4>
&lt;p>Um einen neuen Apache Jena Docker Container zu starten und die eingelesenen Daten wiederzuverwenden, kann der folgende Befehl verwendet werden.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">docker&lt;/span> &lt;span class="n">run&lt;/span> &lt;span class="n">-it&lt;/span> &lt;span class="p">-&lt;/span>&lt;span class="n">-rm&lt;/span> &lt;span class="p">-&lt;/span>&lt;span class="n">-name&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="n">fuseki&lt;/span> &lt;span class="n">-p&lt;/span> &lt;span class="mf">8080&lt;/span>&lt;span class="err">:&lt;/span>&lt;span class="mf">3030&lt;/span> &lt;span class="n">-e&lt;/span> &lt;span class="n">ADMIN_PASSWORD&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="mf">123123&lt;/span> &lt;span class="n">-v&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">$(&lt;/span>&lt;span class="n">PWD&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="s2">\data\fuseki:/fuseki&amp;#34;&lt;/span> &lt;span class="n">stain&lt;/span>&lt;span class="p">/&lt;/span>&lt;span class="nb">jena-fuseki&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="zusammenfassung-und-ausblick">Zusammenfassung und Ausblick&lt;/h2>
&lt;p>Zu Beginn war es etwas frustrierend, einen funktionierenden Workflow zum Einlesen der Daten in den Docker Container von Apache Jena aufzubauen.
Kleine Abweichungen der obigen Beschreibung oder der Reihenfolge sorgen dafür, dass der komplette Einlesevorgang neu gestartet werden muss.&lt;/p>
&lt;p>Die Einlesezeit wird sich auf anderen Systemen drastisch unterscheiden.
Das liegt unter anderem daran, dass wir bei unseren Tests die Dateien von einem Windows Dateisystem in ein Linux-Dateisystem im Docker Container eingelesen und dann wieder auf das Windows Dateisystem herausgeschrieben haben.&lt;/p>
&lt;p>Mit der Kombination aus Apache Jena, Docker und GND haben wir jetzt eine lokale Testdatenbank, mit der wir intensiv mit den Daten arbeiten können,
ohne durch Bandbreiten- oder API-Beschränkungen ausgebremst zu werden.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Alternativ gibt es den Dienst &lt;a href="https://lobid.org/gnd" target="_blank" rel="noopener">lobid&lt;/a> des hbz NRW.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>Zum Zeitpunkt unseres Tests gab es mehrere Probleme, die mit &lt;a href="https://github.com/stain/jena-docker/pull/50" target="_blank" rel="noopener">stain/jena-docker#50&lt;/a> gefixt werden sollten.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>Die Daten werden auch im für die Kompression optimierten &lt;a href="https://www.rdfhdt.org/" target="_blank" rel="noopener">HDT&lt;/a> Format angeboten, jedoch hätten wir dafür &lt;a href="https://www.rdfhdt.org/manual-of-hdt-integration-with-jena/" target="_blank" rel="noopener">Apache Jena für HDT anpassen&lt;/a> müssen.&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>Die Sicherheit des Passworts ist hier nicht relevant, da wir die Anwendung lokal auf unserem Rechner testen.&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item></channel></rss>