Linked Open Data, JSON & OpenRefine in der Praxis
Adrian Pohl &
Fabian Steeg
Offene Infrastruktur,
Hochschulbibliothekszentrum NRW (hbz)
WWW, 2020-10-08
Zentrum für Bibliotheks- und Informationswissenschaftliche Weiterbildung, TH Köln (ZBIW)
Diese Präsentation:
http://slides.lobid.org/2020-zbiw/ (PDF)
Fragen sind stets willkommen
Hilf anderen, wo du kannst
Sei offen für unterschiedliche Fachkenntnisse & Erfahrungen
Sei freundlich
1. Offene Infrastruktur | |
2. Linked Data & JSON-LD | |
3. OpenRefine Reconciliation |
1. Offene Infrastruktur | lobid-Dienste und Nutzungsbeispiele | 10:00–10:30 |
GND, lobid-gnd, Rechercheoberfläche | 10:30–11:00 | |
2. Linked Data & JSON-LD | RDF, Linked Data | 11:00–11:30 |
JSON, JSON-LD, LOUD | 11:30–12:00 | |
Daten und Abfragemöglichkeiten GND | 12:00–12:30 | |
Pause | ||
Daten und Abfragemöglichkeiten Verbundkatalog | 13:30–14:00 | |
3. OpenRefine Reconciliation | Grundlagen von OpenRefine und Reconciliation | 14:00–14:30 |
Verbesserung des Matching auf GND-Einträge | 14:30–15:00 | |
Datenanreicherung auf Basis der Matches | 15:00–15:30 |
lobid | lobid-Dienste und Nutzungsbeispiele | 10:00–10:30 |
GND | GND, lobid-gnd, Rechercheoberfläche | 10:30–11:00 |
Hochschulbibliothekszentrum des Landes Nordrhein-Westfalen, seit 1973
Dienstleistungs- und Entwicklungseinrichtung für digitale Services in Hochschulbibliotheken
Einige Arbeitsbereiche: Verbundkatalog, Suchportal DigiBib, Fernleihe, Konsortiale Erwerbung
Neue Gruppe seit September 2019
Entstanden aus der 3-köpfigen Stabstelle Linked Open Data
Arbeitsschwerpunkt & Hauptprodukt ist lobid
lobid steht für Linking Open Bibliographic Data
Seit fast zehn Jahren die zentrale Komponente der offenen Infrastruktur im hbz
Stellt intuitive, web-basierte Rechercheoberflächen und Schnittstellen bereit
lobid-resources: Daten des hbz-Verbundkatalogs
lobid-organisations: Daten des deutschsprachigen Sigelverzeichnisses und DBS-Stammdaten
lobid-gnd: Gemeinsame Normdatei
Dokumentation der lobid-resources-API:
https://lobid.org/resources/api
Dokumentation der lobid-organisations-API:
https://lobid.org/organisations/api
Dokumentation der lobid-gnd-API:
https://lobid.org/gnd/api
Basiert auf lobid-Organisationsdaten
Basiert auf lobid-Organisationsdaten
Enge Integration der lobid-Verbunddaten und des lobid-Datenmodells
In Publisso auch GND-ID-Lookup via lobid
Webanwendung, die nahezu vollständig auf lobid-Daten basiert
Nutzt das NWBib-Subset in den lobid-Verbunddaten
Informationen zu besitzenden Bibliotheken aus lobid-Organisationsdaten
Themenvorschläge auf Basis von lobid-gnd
Anfrage gegen das NWBib-Subset in lobid-Verbunddaten
Informationen zu besitzenden Bibliotheken (Name, URL, Standort) werden aus lobid geladen
Basiert auf täglich aktualisierten lobid-Daten
Titeldaten zu den Beständen der UB & einiger umliegender Bibliotheken
werden täglich von lobid geholt, transformiert und in den Index geladen
Seit April 2018 ist nwbib.de in die VDL integriert
Anzeige von externen Links (z.B. Wikipedia) aus lobid-gnd auf Personenseiten
Rechercheoberfläche & LOD-API für die GND
Normdatei für Bibliotheken im deutschsprachigen Raum
Datensätze für Personen, Körperschaften, Konferenzen & Veranstaltungen, Geografika, Schlagwörter, Werke
Für die formale Erfassung einer Ressource und für die inhaltliche Erschließung
In den letzten Jahren wird die GND vermehrt auch von Archiven, Museen und Wissenschaftler*innen genutzt
Verantwortlich für die GND ist die GND-Kooperative
Die GND-Kooperative besteht hauptsächlich aus den deutschsprachigen Bibliotheksverbünden, den angeschlossenen Bibliotheken sowie der Deutschen Nationalbibliothek (DNB) als technischer Hoster
Die DNB publiziert die GND unter anderem als Linked Open Data (LOD) unter https://data.dnb.de/opendata/
Zusätzliche Anreicherungen, z.B. Links in EntityFacts
Diese Daten bilden die Grundlage für lobid-gnd
Probiert die auf den vorigen Folien beschriebene Oberfläche von lobid-gnd aus (die Screenshots verlinken auf die entsprechenden Seiten)
Standards | RDF, Linked Data | 11:00–11:30 |
APIs | JSON, JSON-LD, LOUD | 11:30–12:00 |
lobid-gnd | Daten und Abfragemöglichkeiten GND | 12:00–12:30 |
lobid-resources | Daten und Abfragemöglichkeiten Verbundkatalog | 13:30–14:00 |
Verschicke einen Link zum Buch "With Reference to Reference" von Catherine Elgin
1: OPAC -> http://okeanos-www.hbz-nrw.de/F
2: lobid-resources -> https://lobid.org/resources
Überführung traditioneller bibl. Praktiken in das Web
Sichtbarkeit und Auffindbarkeit im Web erreichen
Nachnutzbarkeit ermöglichen
Synergieeffekte durch Verlinkung mit anderen Daten
Verbesserung der Recherchemöglichkeiten
Quelle: Pohl, Adrian / Ostrowski, Felix (2010): 'Linked Data' - und warum wir uns im hbz-Verbund damit beschäftigen." B.I.T. Online 13(3): S. 259-268. Preprint: http://www.hbz- nrw.de/dokumentencenter/produkte/lod/aktuell/pohl_ostrowski_2010_linked-data.pdf
Ultimately, RDF and the Semantic Web are of no interest to Web developers. They also have a really negative public perception problem. We should stop talking about them. Let’s shift the focus to be on Linked Data, explaining the problems that Web developers face today, and concrete, demonstrable solutions to those problems.– Manu Sporny, damals Vorsitzender der RDFa Working Group beim W3C, der JSON-LD Community Group & Mitglied weiterer Semantic-Web-Gruppen, beim Schreiben an der JSON-LD-Spezifikation
Wissen ist offen, wenn jedeR darauf frei zugreifen, es nutzen, verändern und teilen kann – eingeschränkt höchstens durch Maßnahmen, die Ursprung und Offenheit des Wissens bewahren.http://opendefinition.org/od/2.1/de/
Quelle: Rob
Sanderson auf Twitter
Siehe auch Rob Sanderson's Europeanatech 2018 Keynote (Slides, Aufzeichnung)
Daten werden mit existierender Software bearbeitet (ausgewertet, ergänzt, integriert etc.)
Entwicklung neuer Software zur Interaktion mit Daten
LOUD: Orientierung auf Bedürfnisse und Konventionen rund um Software (Entwicklung, Standards, etc.)
Nützliche Daten: Zielgruppe kennen & eigene Angebote auf sie ausrichten
Hauptzielgruppe: Entwickler*innen oder Nutzer*innen von Software für Datenzugriff und -manipulation
Application Programming Interfaces (Programmierschnittstellen)
Software baut auf APIs auf
APIs machen Softwareentwicklung handhabbar
(für 1st- und 2nd-Party-Software)
APIs ermöglichen Nutzung und Integration
von 3rd-Party-Software
JSON über HTTP
Der Web-API-Standard seit Jahren, siehe z.B. Target (2017)
Quellen: Google Trends, Web Data Commons, W3Techs
Ein einfaches Key-Value-Format für strukturierte Daten
Key ist immer ein String
Value ist String, Number, Boolean, Array oder Object
{ "foo": "bar" }
{
"linkedTo" : {
"id" : "http://lobid.org/organisations/DE-601#!",
"label" : "Verbundzentrale des GBV (VZG)"
},
"rs" : "110000000000",
"address" : {
"addressLocality" : "Berlin",
"type" : "PostalAddress",
"addressCountry" : "DE",
"postalCode" : "10772"
}
...
Kommandozeilen-Tool zum Datentransfer mit URLs
https://curl.haxx.se/download.html
https://www.mycompiler.io/new/bash
$ curl --help
cURL |
|
Copy /Paste |
|
History |
|
(Für Copy/Paste in GUI: CTRL+c bzw. CTRL+v.
Im Terminal: SHIFT+CTRL+c bzw. SHIFT+CTRL+v. )
$ curl https://lobid.org/organisations/DE-1a
{
"linkedTo" : {
"id" : "http://lobid.org/organisations/DE-601#!",
"label" : "Verbundzentrale des GBV (VZG)"
},
"rs" : "110000000000",
"address" : {
"addressLocality" : "Berlin",
"type" : "PostalAddress",
"addressCountry" : "DE",
"postalCode" : "10772"
},
...
Ausgabe ist lang, oft wollen wir nur bestimmte Werte
var options = {
url: 'https://lobid.org/organisations/DE-1a'
};
request(options, function (error, response, body) {
var doc = JSON.parse(body);
console.log('postal code:', doc.address.postalCode) // <--
});
> postal code: 10772
Ein flexibles Kommandozeilen-Tool zur JSON-Verarbeitung
https://stedolan.github.io/jq/
$ jq --help
$ curl "https://lobid.org/organisations/DE-1a" \
| jq .name # filter: .name
Kosten- träger |
|
Modifikations- datum |
|
Kosten- träger |
|
Modifikations- datum |
|
"designed to be usable directly as JSON, with no knowledge of RDF" – Es ist richtiges JSON!
"also designed to be usable as RDF"
$ curl -H "Accept: application/json" https://api.github.com/users/acka47
{
"login": "acka47",
"avatar_url": "https://avatars2.githubusercontent.com/u/160292?v=4",
"url": "https://api.github.com/users/acka47",
"type": "User",
"name": "Adrian",
"company": "hbz",
"location": "Cologne, Germany",
"bio": "Metadata, RDF, vocabularies. Working at @hbz. "
}
{
"@context": "http://schema.org/",
"@id": "https://github.com/users/acka47",
"login": "acka47",
"avatar_url": "https://avatars2.githubusercontent.com/u/160292?v=4",
"url": "https://api.github.com/users/acka47",
"type": "User",
"name": "Adrian",
"company": "hbz",
"location": "Cologne, Germany",
"bio": "Metadata, RDF, vocabularies. Working at @hbz. "
}
2010-2013: Alpha-Betrieb mit RDF & SPARQL
2013-2017: lobid v1.x mit JSON-LD aber noch nicht sehr intuitiv nutzbar (JSON-LD als RDF-Serialisierung)
seit 2017: richtig LOUDe lobid v2 plus OpenRefine-Schnittstellen
Von LOD zu LOUD – Erfahrungen aus zehn Jahren Linked-Open-Data-Entwicklung am hbz
JSON-LD-Daten in Elasticsearch-Index
Elasticsearch bzw. Lucene Suchsyntax
Feldsuche |
|
Boolsche Suche |
|
Trunkierung |
|
Intervalle |
|
Existenz |
|
Feldsuche |
|
Boolsche Suche |
|
Trunkierung |
|
Intervalle |
|
Existenz |
|
Suche nach allen Personen in der GND, die in Köln geboren wurden und in Düsseldorf gestorben sind
Suche nach allen Personen in der GND, die in Köln geboren wurden und in Düsseldorf gestorben sind
Tägl. Bezug der XML-Daten über den Aleph-Publishing-Mechanismus
Konversion nach N-Triples mit Metafacture (Morph)
Dabei finden verschiedene Normalisierungsarbeiten statt
Labels für verlinkte Ressourcen ergänzen
Et voilà: Linked Open Usable Data (LOUD)
MARC-Relator-Codes werden aus RAK-Nebeneintragungen generiert (Morph für Personennebeneintragungen)
Normalisierung von Jahresangaben
Mapping von Informationen aus 050, 057, 058, 334, 652a, 9--, 400/403 etc. auf eine Liste von Publikations- und Medientypen (Morph)
JSON-LD-Daten in Elasticsearch-Index
Elasticsearch bzw. Lucene Suchsyntax
Abfrage nach gelöschten Titeln (ab 2018-04-04)
oclcNumber:601339369
title:rda AND
publication.startDate:[2010 TO *]
medium.id:
"http://rdaregistry.info/termList/ RDACarrierType/1018"
AND _exists_:hasItem
subject.source.id:
("https://nwbib.de/subjects" OR
"https://nwbib.de/spatial")
AND inCollection.id:
"http://lobid.org/resources/HT014846970#!"
AND NOT inCollection.id:
"http://lobid.org/resources/HT014176012#!"
AND describedBy.sourceOrganization.id:
"http://lobid.org/organisations/DE-5#!"
describedBy.deleted:[20190214 TO 2019023]
Balkendiagramm: Häufigkeit von Berufsangaben in der GND
Balkendiagramm: Häufigkeit von sameAs-Links in lobid-GND
Kuchendiagramm: Bestand nach Einrichtung in lobid-resources
Balkendiagramm: Publikationsdatum in lobid-resources>
Tagcloud: Top 150 GND-Schlagwörter in lobid-resources
Grundlagen | Grundlagen von OpenRefine und Reconciliation | 14:00–14:30 |
Matching | Verbesserung des Matching auf GND-Einträge | 14:30–15:00 |
Extension | Datenanreicherung auf Basis der Matches | 15:00–15:30 |
"A powerful tool for working with messy data"
"cleaning it; transforming it from one format into another; and extending it with web services and external data"
Oberfläche wie Tabellenkalkulation
Läuft im Browser, lokal oder gehostet
Matchen eigener Daten (z.B. Liste von Namen aus Texten) auf GND-Ressourcen in OpenRefine
Übernahme von Daten aus spezifischen Feldern der gematchten GND-Einträge mittels Data Extension API
name;beruf;ort
J. Weizenbaum;Informatiker;Berlin
Twain, Mark;Schriftsteller;
Kumar, Lalit;;
Jemand;;
https://lobid.org/gnd/reconcile
(Daten und URL per CTRL+C in die Zwischenablage kopieren)
id,name
1,Haddaway
2,Johannes Geßner
3,Judith Kuckart
4,Rosa Luxemburg
5,Albert Einstein
6,Hazel Brugger
7,Anne Cuneo
8,Vitus Huonder
Reconcile, Berufe und Wirkungsorte ergänzen
Properties zur Verbessung der Matches
Auf Basis von konreten Anfragen durch Nutzer
1. Beispiel: Lebensdaten
2. Beispiel: Beruf & Parteizugehörigkeit