Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Aufbau einer LOD- basierten Web-API am Beispiel...

lobid
October 10, 2013

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

Vortrag gehalten von Adrian Pohl (hbz) am 10.10.2013 beim ZBIW-Seminar "Semantic Web / Open Catalogue / Linked Open Data für Bibliotheken" in Köln.
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.

lobid

October 10, 2013
Tweet

More Decks by lobid

Other Decks in Technology

Transcript

  1. 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
  2. Struktur 2 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
  3. Ziele 4 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
  4. Problem 5 "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
  5. (Web-)APIs 7 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
  6. API: Motivation 8 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
  7. Beispiel-Anfrage: github-API 9 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
  8. 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
  9. 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" }
  10. 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" }
  11. JSON-LD-Kontext 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" }, } Pohl: LOD-basierte Web-API am Beispiel von api.lobid.org
  12. JSON-LD > Turtle 16 @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
  13. JSON-LD > Turtle 17 @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
  14. API + JSON-LD = Linked Data 18 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
  15. lobid.org 20 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
  16. API anstatt und Triple Store 21 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
  17. API-Anfragen 22 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: LOD-basierte Web-API am Beispiel von api.lobid.org
  18. API-Antworten 23 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
  19. Implementierung I 24 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
  20. Nutzung der API 27 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
  21. Weiterführende Informationen 29 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
  22. Lizenz 30 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/