Slide 1

Slide 1 text

lobid: LOD-Dienst und Web-API Köln-API-Treffen. Köln, 11.03.2014. Adrian Pohl

Slide 2

Slide 2 text

Struktur 2 Pohl: lobid - LOD-Dienst und Web-API 1. Hintergrund 2. Web-APIs 3. JSON-LD to the Rescue 4. lobid-API 5. Demo

Slide 3

Slide 3 text

1. Hintergrund 3

Slide 4

Slide 4 text

Das hbz 4 „Hochschulbibliothekszentrum des Landes Nordrhein-Westfalen“ Gegründet 1973 Dem Ministerium für Innovation, Wissenschaft und Forschung zugeordnet Sitz in Köln Dienstleistungen für Bibliotheken (hauptsächlich aus NRW) Produkte: Verbunddatenbank, Fernleihe, DigiBib, Konsortiale Erwerbung, lobid, ... Pohl: lobid - LOD-Dienst und Web-API

Slide 5

Slide 5 text

Linked Open Data (LOD) 5 Grundidee: Interoperabilität durch gemeinsames, flexibles Datenmodell und einheitliche Identifier Datenmodell: Subjekt-Prädikat-Objekt, z. B.: . HTTP-URIs als Identifier für Subjekt, Prädikat und (optional) Objekt: . Pohl: lobid - LOD-Dienst und Web-API

Slide 6

Slide 6 text

Ziele 6 Pohl: lobid - LOD-Dienst und Web-API Warum Bibliotheksdaten als LOD bereitstellen? Vernetzung von Bibliotheksinformationen Indexierung und Auffindbarkeit (z. B. durch Google) Interoperabilität Einfache Wiederverwendung das alles: durch Verwendung von Web-Standards

Slide 7

Slide 7 text

Problem 7 "Semantic Web"-Community sehr akademisch "Linked Open Data" sollte das ändern, was nur bedingt geklappt hat → für viele ist LOD nicht interessant Aber: Web 2.0 und Web-APIs sind erfolgreich Um APIs entsteht App-Ökosystem Nutzung von APIs ist Normalität für Webentwickler Pohl: lobid - LOD-Dienst und Web-API

Slide 8

Slide 8 text

2. Web-APIs 8

Slide 9

Slide 9 text

(Web-)APIs 9 API = "Application Programming Interface" Programmierschnittstelle für andere Anwendungsentwickler Web-APIS: HTTP-basiert, d. h. Zugriff mittels HTTP-Methoden (GET, PUT, POST, DELETE) liefern JSON und/oder XML Pohl: lobid - LOD-Dienst und Web-API

Slide 10

Slide 10 text

API: Motivation 10 APIs sind ein essentieller Bestandteil von wiederverwendbaren Modulen Module kommunizieren über API, kennen keine Implementierungsdetails Implementierung so austauschbar und veränderbar – ohne dass alle API-Clients (=Anwendungen) angepasst werden müssen Pohl: lobid - LOD-Dienst und Web-API

Slide 11

Slide 11 text

Beispiel-Anfrage: github-API 11 GET https://api.github.com/users/acka47 Antwort (JSON): { "login": "acka47", "id": 160292, "url": "https://api.github.com/users/acka47", "name": "Adrian Pohl", "company": "hbz", "blog": "http://www.uebertext.org", "created_at": "2009­12­01T10:29:19Z", "updated_at": "2013­10­09T09:41:07Z" } Pohl: lobid - LOD-Dienst und Web-API

Slide 12

Slide 12 text

LOD vs. Web-APIs 12 Pohl: lobid - LOD-Dienst und Web-API LOD Web-APIs ● HTTP-URIs für Dinge & ihre Beschreibungen ● RDF ● SPARQL ● URLs für Ressourcen & Repräsentation ● JSON und/oder XML ● HTTP-Methoden mit URL-Parametern

Slide 13

Slide 13 text

3. JSON-LD to the Rescue 13

Slide 14

Slide 14 text

14 { "login": "acka47", "id": 160292, "url": "https://api.github.com/users/acka47", "name": "Adrian Pohl", "company": "hbz", "blog": "http://www.uebertext.org" }

Slide 15

Slide 15 text

15 { "@context": { "login": "http://xmlns.com/foaf/0.1/nick", "id": "http://purl.org/dc/terms/identifier", "url": { "@id": "http://xmlns.com/foaf/0.1/page", "@type": "@id" }, "name": "http://xmlns.com/foaf/0.1/name", "company": "http://www.w3.org/ns/org#memberOf", "blog": { "@id": "http://xmlns.com/foaf/0.1/weblog", "@type": "@id" }, "email": "http://xmlns.com/foaf/0.1/mbox" }, "login": "acka47", "id": 160292, "url": "https://api.github.com/users/acka47", "name": "Adrian Pohl", "company": "hbz", "blog": "http://www.uebertext.org" }

Slide 16

Slide 16 text

16 { "@context": { "login": "http://xmlns.com/foaf/0.1/nick", "id": "http://purl.org/dc/terms/identifier", "url": { "@id": "http://xmlns.com/foaf/0.1/page", "@type": "@id" }, "name": "http://xmlns.com/foaf/0.1/name", "company": "http://www.w3.org/ns/org#memberOf", "blog": { "@id": "http://xmlns.com/foaf/0.1/weblog", "@type": "@id" }, "email": "http://xmlns.com/foaf/0.1/mbox" }, "login": "acka47", "id": 160292, "url": "https://api.github.com/users/acka47", "name": "Adrian Pohl", "company": "hbz", "blog": "http://www.uebertext.org" }

Slide 17

Slide 17 text

JSON-LD-Kontext 17 { "@context": { "login": "http://xmlns.com/foaf/0.1/nick", "id": "http://purl.org/dc/terms/identifier", "url": { "@id": "http://xmlns.com/foaf/0.1/page", "@type": "@id" }, "name": "http://xmlns.com/foaf/0.1/name", "company": "http://www.w3.org/ns/org#memberOf", "blog": { "@id": "http://xmlns.com/foaf/0.1/weblog", "@type": "@id" }, } Pohl: lobid - LOD-Dienst und Web-API

Slide 18

Slide 18 text

JSON-LD > Turtle 18 @prefix foaf: . [] 160292 ; "hbz" ; foaf:name "Adrian Pohl" ; foaf:nick "acka47" ; foaf:page ; foaf:weblog . Pohl: lobid - LOD-Dienst und Web-API

Slide 19

Slide 19 text

JSON-LD > Turtle 19 @prefix foaf: . [] 160292 ; "hbz" ; foaf:name "Adrian Pohl" ; foaf:nick "acka47" ; foaf:page ; foaf:weblog . Pohl: lobid - LOD-Dienst und Web-API Kein URI

Slide 20

Slide 20 text

API + JSON-LD = Linked Data 20 JSON-LD: RDF in JSON serialisieren Web-Entwickler können damit sofort etwas anfangen Bestehende Daten können relativ einfach in Linked Data überführt werden: URIs prägen, z.B. https://api.github.com/users/acka47#thing JSON-LD-Kontext ergänzen Vorteil: JSON-LD-Kontext ermöglicht Abstraktion von konkreter RDF-Modellierung Pohl: lobid - LOD-Dienst und Web-API

Slide 21

Slide 21 text

4. lobid-API 21

Slide 22

Slide 22 text

lobid 22 lobid.org: LOD-Dienst des hbz, seit 2010 ('linking open bibliographic data') Titeldaten, Organisationsdaten, Normdaten (Schlagwörter, Personen etc.) Zunächst: Dumps & Triple Store Verschiedene Probleme & neue Anforderungen (z. B. Auto-Suggest für Normdaten) → ab 2012 neues Backend entwickelt Seit November 2013 ist lobid-API produktiv Pohl: lobid - LOD-Dienst und Web-API

Slide 23

Slide 23 text

API anstatt und Triple Store 23 Triple-Store als API? - Triple-Store cool, aber als API problematisch (z.B. Performance) Wegen Performance (z.B. Auto-Suggest) anderer Ansatz: Suchmaschinentechnologie – aber: Suchmaschine als API? API unabhängig von Implementierung! API als stabile Abstraktion über Daten! Pohl: lobid - LOD-Dienst und Web-API

Slide 24

Slide 24 text

API-Anfragen 24 GET /resource?id=0940450003 GET /resource?name=Faust GET /organisation?id=DE­832 GET /organisation?name=fachhochschule+köln GET /person?id=118580604 GET /person?name=loki+schmidt GET /resource?author=118580604 GET /resource?subject=4414195­6 Pohl: lobid - LOD-Dienst und Web-API

Slide 25

Slide 25 text

API-Antworten 25 GET /person?name=Loki+Schmidt&format=full [{ "@id": "http://d­nb.info/gnd/118836617", "gnd:preferredNameForThePerson": "Schmidt, Hannelore", "gnd:variantNameForThePerson“: [ "Glaser, Hannelore", "Schmidt, Loki" ], "gnd:dateOfBirth" : ”1919”, "gnd:dateOfDeath": ”2010”, ... }] Pohl: lobid - LOD-Dienst und Web-API

Slide 26

Slide 26 text

Implementierung I 26 Was rauskommt: JSON-LD über HTTP sowie auch andere RDF-Serialisierungen Hinter API andere Implementierungen denkbar, auch z.B. mit Triple Store Pohl: lobid - LOD-Dienst und Web-API

Slide 27

Slide 27 text

Implementierung II 27 Pohl: lobid - LOD-Dienst und Web-API

Slide 28

Slide 28 text

Live-Demonstration 28 http://lobid.org/api Pohl: lobid - LOD-Dienst und Web-API

Slide 29

Slide 29 text

Danke. Fragen? Gerne jetzt oder auch später an [email protected] oder @lobidOrg. 29

Slide 30

Slide 30 text

Weiterführende Informationen 30 JSON-LD: http://json-ld.org/ hbz-LOD-blog: https://wiki1.hbz-nrw.de/pages/viewrecentblogposts.action?key=SEM lobid-API-Dokumentation: http://lobid.org/api lobid-Code & Issues: https://github.com/lobid/ Pohl: lobid - LOD-Dienst und Web-API

Slide 31

Slide 31 text

Lizenz 31 Pohl: lobid - LOD-Dienst und Web-API Diese Folien stehen unter einer Creative-Commons-Lizenz: http://creativecommons.org/licenses/by/3.0/de/