Linked
Open Data, Hochschulbibliothekszentrum NRW (hbz)
hbz, Köln, 2017-04-11
Diese Präsentation:
http://slides.lobid.org/lod-hbz/
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)
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
Libraries are Software
"Libraries are Software" by @codyh — Good short essay
for dev and non-dev librarians http://t.co/Y9YLmTaZj0
pic.twitter.com/iVGKFaBql8
— Tim Spalding (@librarythingtim) September
17, 2015
modulare Software
stabile Anwendungen
flexible Datenquellen
Die API entkoppelt Anwendungen von spezifischen
Datenquellen, Formaten und Systemen
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
Machen die bibliothekarische Arbeit für alle möglichen Anwendungsfälle zugänglich
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
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
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)
{
"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)
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"
}
JSON für Web-Entwickler vertrautes Format
JSON in Elasticsearch indexierbar
JSON-LD RDF-kompatibel
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
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)
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)
Open-Source-Entwicklung auf 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 hat einen integrierten Issue-Tracker
Primäres Organisationsmittel: beliebige Labels mit Farben
Integriert: Links zu Code, Commits, Usern, Markdown
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
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
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)
Nach Bedarf, alle paar Monate, längeres Planungstreffen (1-2 Std.)
Gemeinsam am Board Tickets durchgehen und priorisieren