30
Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org ZBIW-Seminar „Semantic Web / Open Catalogue / Linked Open Data für Bibliotheken“. Köln, 10.10.2013. Adrian Pohl

Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

Embed Size (px)

DESCRIPTION

Diese Präsentation gibt einen Einblick, wie die oft getrennten Welten von Web-APIs und Linked Open Data miteinander verschmolzen werden können. Nach einer Einleitung zu Web-APIs und JSON, wird gezeigt, wie aus JSON Linked Data (=JSON-LD) gemacht werden kann. Abschließend wird die lobid-API vorgestellt, die JSON-LD und andere RDF-Serialisierungen ausliefert und Auto-Suggest-Funktionen für Organisationen, GND-Normdaten und hbz-Titeldaten anbietet.

Citation preview

Page 1: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

ZBIW-Seminar „Semantic Web / Open Catalogue / Linked Open Data für Bibliotheken“. Köln, 10.10.2013.

Adrian Pohl

Page 2: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

Struktur2

Pohl: LOD-basierte Web-API am Beispiel von api.lobid.org

1. Hintergrund

2. Web-APIs

3. JSON-LD to the Rescue

4. lobid-API

Page 3: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

1. Hintergrund

3

Page 4: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

Ziele4

Pohl: LOD-basierte Web-API am Beispiel von api.lobid.org

Warum Bibliotheksdaten gemäß Web Standards bereitstellen?

Verlinkbarkeit von Bibliotheksinformationen

Indexierung und Auffindbarkeit

Interoperabilität

Einfache Wiederverwendung

Page 5: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

Problem5

"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 RESTful APIs sind erfolgreich

Um APIs entsteht App-Ökosystem, z. B. Twitter.

Nutzung von APIs ist "täglich Brot" von Webentwicklern

LOD und Web-APIs waren lange Zeit getrennte Ansätze

Pohl: LOD-basierte Web-API am Beispiel von api.lobid.org

Page 6: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

2. Web-APIs

6

Page 7: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

(Web-)APIs7

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: LOD-basierte Web-API am Beispiel von api.lobid.org

Page 8: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

API: Motivation8

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: LOD-basierte Web-API am Beispiel von api.lobid.org

Page 9: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

Beispiel-Anfrage: github-API9

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: LOD-basierte Web-API am Beispiel von api.lobid.org

Page 10: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

LOD vs. Web-APIs 10

Pohl: LOD-basierte Web-API am Beispiel von api.lobid.org

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

Page 11: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

3. JSON-LD to the Rescue

11

Page 12: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

12

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

Page 13: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

13

{  "@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"}

Page 14: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

14

{  "@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"}

Page 15: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

JSON-LD-Kontext15

{  "@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: LOD-basierte Web-API am Beispiel von api.lobid.org

Page 16: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

JSON-LD > Turtle16

@prefix foaf: <http://xmlns.com/foaf/0.1/> .

[]    <http://purl.org/dc/terms/identifier> 160292 ;    <http://www.w3.org/ns/org#memberOf> "hbz" ;    foaf:name "Adrian Pohl" ;    foaf:nick "acka47" ;    foaf:page <https://api.github.com/users/acka47> ;    foaf:weblog <http://www.uebertext.org> .

Pohl: LOD-basierte Web-API am Beispiel von api.lobid.org

Page 17: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

JSON-LD > Turtle17

@prefix foaf: <http://xmlns.com/foaf/0.1/> .

[]    <http://purl.org/dc/terms/identifier> 160292 ;    <http://www.w3.org/ns/org#memberOf> "hbz" ;    foaf:name "Adrian Pohl" ;    foaf:nick "acka47" ;    foaf:page <https://api.github.com/users/acka47> ;    foaf:weblog <http://www.uebertext.org> .

Pohl: LOD-basierte Web-API am Beispiel von api.lobid.org

Keine URI

Page 18: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

API + JSON-LD = Linked Data18

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: LOD-basierte Web-API am Beispiel von api.lobid.org

Page 19: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

4. lobid-API

19

Page 20: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

lobid.org20

lobid.org: LOD-Dienst des hbz, seit 2010 (’linking open bibliographic data’)

Titeldaten (lobid-resources), Normdaten (lobid-organisations)

Verschiedene Probleme und neue Anforderungen (z.B. Auto-Suggest für Normdaten) → Entwicklung eines neuen Backends

Pohl: LOD-basierte Web-API am Beispiel von api.lobid.org

Page 21: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

API anstatt und Triple Store21

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: LOD-basierte Web-API am Beispiel von api.lobid.org

Page 22: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

API-Anfragen22

GET /resource?id=0940450003GET /resource?name=Faust

GET /organisation?id=DE­832GET /organisation?name=fachhochschule+köln

GET /person?id=118580604GET /person?name=loki+schmidt

GET /resource?author=118580604GET /resource?subject=4414195­6 

Pohl: LOD-basierte Web-API am Beispiel von api.lobid.org

Page 23: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

API-Antworten23

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: LOD-basierte Web-API am Beispiel von api.lobid.org

Page 24: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

Implementierung I24

Was rauskommt: JSON-LD über HTTP sowie auch andere RDF-Serialisierungen

Hinter API andere Implementierungen denkbar, auch z.B. mit Triple Store

Pohl: LOD-basierte Web-API am Beispiel von api.lobid.org

Page 25: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

Implementierung II25

Pohl: LOD-basierte Web-API am Beispiel von api.lobid.org

Page 26: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

Live-Demonstration 26

http://api.lobid.org

Pohl: LOD-basierte Web-API am Beispiel von api.lobid.org

Page 27: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

Nutzung der API27

Pohl: LOD-basierte Web-API am Beispiel von api.lobid.org

Edoweb3 (hbz-Projekt zur Archivierung elektronischer Dokumente und Websites)

Evtl. openbiblio-Jobs, LIFE (UB Münster)

2014: Aufbau des NWBib-Auftritts auf Basis der lobid-API

Page 28: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

Danke.

Fragen?

Gerne jetzt oder auch später an [email protected] oder @lobidOrg.

28

Page 29: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

Weiterführende Informationen29

JSON-LD: http://json-ld.org/

hbz-LOD-blog: https://wiki1.hbz-nrw.de/pages/viewrecentblogposts.action?key=SEM

lobid-API-Dokumentation: http://api.lobid.org

lobid-Code & Issues: https://github.com/lobid/

Adrian Pohl: Sharing context – publishing application profiles with JSON-LD (Blogbeitrag): https://wiki1.hbz-nrw.de/x/qZCW

Pohl: LOD-basierte Web-API am Beispiel von api.lobid.org

Page 30: Aufbau einer LOD- basierten Web-API am Beispiel von api.lobid.org

Lizenz30

Pohl: LOD-basierte Web-API am Beispiel von api.lobid.org

Diese Folien stehen unter einer Creative-Commons-Lizenz:

http://creativecommons.org/licenses/by/3.0/de/