LOD @ hbz

Linked Open Data, Hochschulbibliothekszentrum NRW (hbz)

hbz, Köln, 2017-04-11

Diese Präsentation:
http://slides.lobid.org/lod-hbz/

Was wir machen

Lobid (linking open bibliographic data), Linked-Data-Dienst des hbz, Web-APIs und Rechercheoberflächen für Titel- und Normdaten

Auf Basis von Lobid: Nordrhein-Westfälische Bibliographie

Transformieren der Ausgangsdaten mit Metafacture in JSON-LD

Open-Source-Entwicklung auf GitHub (Produkte und Tools)

Wer macht was

Bibliothekare: Metadaten-Formate, -Vokabulare, -Mappings, Functional Review (Adrian Pohl, Christoph Ewertowski)

Entwickler: Datentransformation, Administration, Indexierung, Oberflächen (Pascal Christoph, Fabian Steeg)

Rechner: 1 Web-Proxy, 1 Web-Server, 2*2 Index-Cluster, 5 Batch etc.

Web-APIs

Warum?

Libraries are Software

APIs machen Softwareentwicklung handhabbar

modulare Software

stabile Anwendungen

flexible Datenquellen

Lobid API Datenquellen und -formate

Die API entkoppelt Anwendungen von spezifischen
Datenquellen, Formaten und Systemen

API-Nutzung

Bulk-Downloads z.B. Bestand von USB Köln

Fragen z.B. Wie viele Bibliotheken gibt es in Deutschland?

Widgets, z.B. Autosuggest für GND-Entitäten (Name -> ID)

Nutzung in anderen Applikationen, z.B. OpenRefine Reconciliation

Komplette Applikationen, z.B. NWBib

http://slides.lobid.org/swib-15/

APIs

Bilden Infrastruktur für Bibliotheken

Machen die bibliothekarische Arbeit für alle möglichen Anwendungsfälle zugänglich

Datentransformation

Metafacture

Metafacture

Toolkit zur Metadaten-Transformation

Metadaten-Mapping getrennt von Eingabe- und Ausgabeformat: Attribut-Wert-Paar → Attribut-Wert-Paar ('Morph-Datei', XML)

Verschiedene Input-Formate unterstützt (MAB, MARC, METS, etc.) und um eigene erweiterbar (Framework und Module in Java)

Das Gleiche gilt für Output-Formate

Wir beteiligen uns an der Entwicklung verschiedener Module

Workflows

Das Zusammenspiel von Eingabe, Transformationsregeln und Ausgabe bildet den Workflow der Transformation

Der Workflow kann mit Flux, einer einfachen domänenspezifischen Sprache (DSL), deklariert werden (oder direkt mit Java)

Wir beteiligen uns an der Entwicklung von Tools zum einfachen Editieren und Ausführen der Workflows

 
 
 

Metafacture

Transformationsregeln von Eingabe- und Ausgabeformat getrennt

Stream-basiert

Flexibles, komplett erweiterbares Framework

Deklarative Definition der Transformation in Morph- und Flux-Dateien (z.B. für Doku, Veröffentlichung, Austausch)

Links

https://github.com/culturegraph/metafacture-core

https://github.com/hbz/metafacture-java-examples

JSON-LD

JSON-LD in der Lobid-API

JSON


{
  "name": "Hochschulbibliothekszentrum des Landes Nordrhein-Westfalen",
  "isil": "DE-605",
  "fundertype": {
    "id": "http://purl.org/lobid/fundertype#n02",
    "label": {
      "de": "Land",
      "en": "Federal State"
    }
  }
}
					

JSON-Objekte sind auf Attribut-Wert-Struktur abbildbar
(je nach Sprache z.B. als Map, Dictionary, Hash)

JSON-LD

Attribute per Kontext mit eindeutigen URIs assoziieren


{
  "@context": {
    "name": "http://schema.org/name",
    "isil": "http://purl.org/lobid/lv#isil"
  },
  "name": "Hochschulbibliothekszentrum des Landes Nordrhein-Westfalen",
  "isil": "DE-605"
}
					

Kontext kann als externes Dokument referenziert werden:


{
  "@context": "http://lobid.org/organisations/context.jsonld",
  "name": "Hochschulbibliothekszentrum des Landes Nordrhein-Westfalen",
  "isil": "DE-605"
}
					

Warum JSON-LD für die Lobid-API?

JSON für Web-Entwickler vertrautes Format

JSON in Elasticsearch indexierbar

JSON-LD RDF-kompatibel

JSON-LD ist nicht gleich JSON-LD

http://slides.lobid.org/lobid-jsonld/

Indexierung

Elasticsearch z.T. Cluster (lobid-resources), z.T. embedded (kleine Datensets, z.B. lobid-organisations)

Vorteil embedded: Indexänderungen einfach (Daten, Mappings)

Kommunikation mit Elasticsearch primär über Java-API

Administration der Cluster primär über 'head' Plugin

Web-Framework

Play-Framework: ein Web-Framework für Java und Scala, vergleichbar mit Rails, Grails, oder Django

Zur Implementierung der API (URL-Pfade, Parameter, Abfrage von Elasticsearch, Ausliefern der JSON-Antworten, Header etc.)

Zur Implementierung der Rechercheobeflächen (gleiche URLs wie API, aber HTML angefordert, mit Templates umgesetzt)

 
 
 

 
 
 

 
 
 

 
 
 

Anwendungen

 
 
 

 
 
 

 
 
 

 
 
 

Sonstige Tools

Eclipse als IDE für Java- und Web-Entwicklung

Builds mit Maven (Transformationen) und SBT (Web-Anwendungen)

Continuous Integration mit Travis CI (in GitHub integriert)

Server-Automatisierung mit Bash-Skripten und Cron-Jobs

Monitoring der Web-Anwendungen mit Monit und Nagios (RZ)

Entwicklungsprozess

Open-Source-Entwicklung auf GitHub

GitHub

Eine Art Social Network für Softwareentwicklung

Wir entwickeln Open-Source-Software auf GitHub

Nicht nur Ergebnisse veröffentlichen, sondern Prozess dort

d.h. Planen, Issue-Tracking, Code, Testen, Diskussion

 
 
 

GitHub Issues

GitHub hat einen integrierten Issue-Tracker

Primäres Organisationsmittel: beliebige Labels mit Farben

Integriert: Links zu Code, Commits, Usern, Markdown

 
 
 

 
 
 

Mehrere Repos

GitHub-Issues immer mit 1 GitHub-Repo assoziiert

Für einheitlichen Blick auf alle vom Team bearbeiteten Issues: Kanban-Board zur Visualisierung des Workflows

Waffle: Kanban-Board mit GitHub-Integration:
jedes Issue entspricht 1 Karte, Spalten entsprechen Labels

 
 
 

Prozess

Generell: Links → Rechts

Backlog Ready Working Review Deploy Done
Neue Issues ohne Label Bereit, d.h. Anforderungen und Abhängigkeiten sind klar In Bearbeitung In Überprüfung Bereit für Produktion In Produktion

Priorisierte Karten nach oben in der Spalte; Bugs generell priorisiert

Tägliche Treffen

Priorisierung unter anderem in täglichen kurzen Besprechungen
(vor dem Mittagessen, 12 Uhr, 5-15 Minuten)

Jeder: 1) Was zuletzt 2) Was aktuell, ev. Probleme 3) Als nächstes

Wenn alle im hbz sind: im Stehen; sonst online (z.Zt.: Wire)

Planungstreffen

Nach Bedarf, alle paar Monate, längeres Planungstreffen (1-2 Std.)

Gemeinsam am Board Tickets durchgehen und priorisieren

Weitere Infos & Links

https://slides.lobid.org/lobid-entwicklungsprozess/

https://hbz.github.io/#dev-process