• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Schnittstellen und Webservices
 

Schnittstellen und Webservices

on

  • 5,017 views

Vorlesung zu Schnittstellen und Webservices im Rahmen der Lehrveranstaltung \'Digitale Bibliothek\' an der Fachhochschule Hannover im WS 2008/09

Vorlesung zu Schnittstellen und Webservices im Rahmen der Lehrveranstaltung \'Digitale Bibliothek\' an der Fachhochschule Hannover im WS 2008/09

Statistics

Views

Total Views
5,017
Views on SlideShare
5,014
Embed Views
3

Actions

Likes
1
Downloads
38
Comments
0

1 Embed 3

http://www.slideshare.net 3

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Schnittstellen und Webservices Schnittstellen und Webservices Presentation Transcript

    • Digitale Bibliothek Jakob Voß Schnittstellen und Webservices Digitale Bibliothek WS 2008/2009 Fachhochschule Hannover Informationsmanagement (BA) 13. Oktober 2008
    • Zusammenfassung Datenformate
      • Es gibt viele Wege, die gleichen Informationen zu kodieren
      • Festlegung von Datenformaten geschieht durch aufeinander aufbauende Standards
        • Abstrakte Strukturierung ( Datenmodell )
        • Konkrete Kodierung ( Datenformat )
        • Anwendung ( Werkzeuge und Praxis )
      • Einhaltung von Standards muss mittels Validierung überprüft werden
    • Zeitangabe nach RFC 822*
      • date-time = [ day "," ] date time ; dd mm yy
      • ; hh:mm:ss zzz
      • day = "Mon" / "Tue" / "Wed" / "Thu"
      • / "Fri" / "Sat" / "Sun"
      • date = 1*2DIGIT month 2DIGIT ; day month year
      • ; e.g. 20 Jun 82
      • month = "Jan" / "Feb" / "Mar" / "Apr"
      • / "May" / "Jun" / "Jul" / "Aug"
      • / "Sep" / "Oct" / "Nov" / "Dec"
      • time = hour zone ; ANSI and Military
      • hour = 2DIGIT ":" 2DIGIT [":" 2DIGIT]
      • ; 00:00:00 - 23:59:59
      • zone = "UT" / "GMT" ; Universal Time
      • ; North American : UT
      • / "EST" / "EDT" ; Eastern: - 5/ - 4
      • / "CST" / "CDT" ; Central: - 6/ - 5
      • / "MST" / "MDT" ; Mountain: - 7/ - 6
      • / "PST" / "PDT" ; Pacific: - 8/ - 7
      • / 1ALPHA ; Military: Z = UT;
      • ; A:-1; (J not used)
      • ; M:-12; N:+1; Y:+12
      • / ( ("+" / "-") 4DIGIT ) ; Local differential
      • ; hours+min. (HHMM)
      Formale Regeln in Backus- Naur-Form *STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES (E-Mail) August 13, 1982
    • Motivation
      • Für Aufbau, Weiterentwicklung und Wartung digitaler Bibliotheken sind Kenntnisse von Datenformaten und Schnittstellen (Zweck, Eigenschaften...) unerlässlich.
    • Wie kommen nun die Daten zusammen? Dokumente Nutzer Datenbank Experte Autor Beitrag Dokumente Datensatz Datenbank Datensatz Anwendung Datenbank Unbekanntes System Anwendung
    • Wie kommen nun die Daten zusammen? Dokumente Nutzer Datenbank Experte Anwendung Autor Beitrag Dokumente Datensatz Datenbank Datensatz Anwendung Datenbank Unbekanntes System
    • Schnittstellen Benutzer Benutzerschnittstelle Programmierschnittstelle Informations- system Programm
    • Programmierschnittstellen = Application Programming Interface (API)
      • Spezifikation durch Standards
      • Implementation durch Programme
      • Kompatibilität durch gemeinsame Einhaltung der Spezifikation
      • Nutzung von Diensten (Services) durch andere Programme
      • Grundprinzip: Daten rein, Daten raus
    • Beispiel: HTTP
        • Cache-Control: private
        • Content-Type: text/html; charset=UTF-8
        • Content-Encoding: gzip
        • Server: gws
        • Content-Length: 1845
        • Date: Mon, 01 Oct 2007 09:05:53 GMT
        • 200 OK
        • ...
        • GET /search?q=internet HTTP/1.1
        • Host: www.google.de
        • User-Agent: Mozilla/5.0 (...)
        • ...
        • Referer: http://www.wikipedia.de/wiki/Internet
      Relevant auch für Webserver-Logfiles
        • Antwort
        • Anfrage
    • Beispiel: HTTP
        • Cache-Control: private
        • Content-Type: text/html; charset=UTF-8
        • Content-Encoding: gzip
        • Server: gws
        • Content-Length: 1845
        • Date: Mon, 01 Oct 2007 09:05:53 GMT
        • 200 OK
        • ...
        • GET /search?q=internet HTTP/1.1
        • Host: www.google.de
        • User-Agent: Mozilla/5.0 (...)
        • ...
        • Referer: http://www.wikipedia.de/wiki/Internet
        • Antwort
        • Anfrage
      URL DNS MIME type HTML RFC 822 date-time
    • Relevante Schnittstellen für Digitale Bibliotheken
      • Suchen: Z39.50, SRU/SRW, OpenSearch
      • Sammeln/Verteilen: OAI-PMH, ATOM, RSS
      • Kopieren/Status: unAPI, SeeAlso, DAIA
      • Bearbeiten: SRU Update, ATOMPub
      • Identity Management: Shibboleth, OpenID
      • Außerdem bisher: NCIP, SIP2 ...
      • Initiativen für bessere Schnittstellen:
        • Jangle, OCLC Service Grid ...
    • Beispiel: unAPI
      • Zweck
        • Bereitstellung einzeln identifizierter Objekte
      • Anfragesyntax
        • HTTP-Request mit zwei Parametern
          • id: Identifikator des Objektes
          • format : Gewünschtes Format
      • Antwortsyntax
        • Formatliste in XML oder Objekt in einem gewünschten Format
    • unAPI
      • BASEURL (keine Parameter)
      • Liste von allgemeinen Formaten
      • <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>
      • <formats>
      • <format name=&quot;text&quot; type=&quot;text/plain&quot; />
      • <format name=&quot;marcxml&quot; type=&quot;application/xml&quot; docs=&quot;http://www.loc.gov/standards/marcxml/&quot;/>
      • </formats>
    • unAPI
      • BASEURL ?id= IDENTIFIER (kein Format)
      • Liste von Formaten für dieses Objekt
      • <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>
      • <formats id=&quot; IDENTIFIER &quot;>
      • <format name=&quot;text&quot; type=&quot;text/plain&quot; />
      • <format name=&quot;marcxml&quot; type=&quot;application/xml&quot; docs=&quot;http://www.loc.gov/standards/marcxml/&quot;/>
      • </formats>
    • unAPI
      • BASEURL ?id= IDENTIFIER &format= FORMAT
      • Formatspezifisch (z.B. DC, MARCXML, ...)
      Datensatz unAPI Server
    • Schnittstelle != Datenformat
      • Viele Schnittstellen lassen offen, welche konkreten Datenformate verwendet werden
      • Ähnlich wie bei allgemeinen Kodierungs-formen (XML, JSON, CSV...) und konkreten Kodierungen von Datenformaten
      • „Format X über Schnittstelle Y“
      • Beispiele:
        • HTML, XML ... über HTTP
        • DC, MARCXML ... über unAPI oder OAI-PMH
    • API-Programmbibliotheken
      • Zugriff auf APIs mittels Programmiersprache
      • Beispiele: Z39.50-Client in PHP:
      • $con = yaz_connect ( &quot;z3950.loc.gov:7090/voyager&quot; );
      • yaz_syntax ( $con, &quot;usmarc&quot; );
      • yaz_range ( $con, 1, 10 );
      • yaz_search ( $con, &quot;rpn&quot;, $query );
      • yaz_wait ();
      • $hits = yaz_hits ( $con );
      • for ($p = 1; $p <= 10; $p++) {
      • $rec = yaz_record ( $con, $p, &quot;string&quot; );
      • # ...
      • }
    • zustandslose und zustandsbasiere APIs
      • Alle Anfragen unabhängig voneinander
      • Keine Reihenfolge
      • Eine Anfrage reicht
      • z.B. HTTP, unAPI ...
      • „REST“
      • Anfragen bauen aufeinander auf
      • Stehende Verbindung
      • Beispiel: Login, Suche, Download
      • z.B. Z39.50, OAI resumptionToken ...
    • Beispiel: OAI-PMH
      • Open Archives Initiative (OAI)
      • Protocol for Metadata Harvesting (PMH)
      • REST-API (außer: resumptionToken)
        • Anfrage: HTTP GET (URL)
        • Antwort: XML
      • Nützliche Anfrage: Neue Metadatensätze
      Metadatensatz OAI Data Provider Metadatensätze
    • OAI-PMH
      • Repository als Data Provider
      • Harvester sammelt Metadaten-Records
      • Bereitstellung von Dienstleistungen durch Service-Provider
        • Beispiel: OAIster (http://www.oaister.org/)
    • OAI-PMH
      • Anfrage-Parameter
        • verb (Identify, ListMetadataFormats, GetRecord, ListIdentifier, ListRecords)
        • identifier
        • metadataPrefix (oai_dc, ...)
        • from, until , set (Eingrenzung Datum/Menge)
        • resumptionToken (Ergebnisliste fortsetzen)
      • Ausprobieren: OAI Repository Explorer http://re.cs.uct.ac.za/
    • Beispiel: Search/Retrieve via URL (SRU) Search/Retrieve Web Service (SRW)
      • Neuentwicklung der wichtigsten Z39.50-Funktionalität als Webservice
      • Suchabfrage von Datenbanken
      • verschiedene Operationen ( operation )
        • explain
        • searchRetrieve
        • scan
    • SRU/SRW-searchRetrieve
      • Request aus mehreren optionalen Parametern
      • version ist notwendig, query enthält die Anfrage in Common Query Language (CQL)
      • Beispiel: http://gso.gbv.de/sru/DB=2.1/
    • Beispiel: SeeAlso
      • Basiert auf unAPI und OpenSearch Suggestions
      • Query-Format:
        • wie unAPI mit format=seealso&id=...
      • Response-Format:
        • OpenSearch Suggestions (JSON)
        • [&quot;..id..&quot;,[..titles..],[..descriptions..],[..urls..]]
    • (OpenSearch Suggestions) SeeAlso Linkserver ISBN JSON Links JavaScript
    • (OpenSearch Suggestions) SeeAlso Wrapper Webservice ISBN JSON Verfügbarkeit JavaScript OPAC ISBN
    • Spezifikation durch Standards
      • Ohne etablierte Programmbibliothek: Standard genau lesen!
      • Vertrauen ist gut, Kontrolle ist besser.
        • Z39.50: > 100 Seiten nicht frei verfügbar
        • OAI-PMH: ~ 30 Seiten http://www.openarchives.org/OAI/openarchivesprotocol.html
        • unAPI: 1 (+3) Seiten http://unapi.info/specs/
    • Webservices
      • Informatiker-Buzzword
      • Komplex: SOAP, XML-RPC, WSDL...
      • Einfach: API über HTTP
      • Meist ist XML im Spiel
      • Kombination mehrere Services als „Mashup“
    • Was tun ohne API?
      • Selber machen! (Scraping, Wraping...)
      • Vorteil
        • Lehrreich
      • Nachteil
        • Keine Verlässlichkeit
        • Meist aufwändiger (aber nicht immer)
        • Jemand könnte sich beschweren
      • Oft die einzige Möglichkeit
      • Tip: Firefox DownloadHelper -Plugin
    • Verfügbarkeit ermitteln mittels Screen Scraper
      • Katalog der Bibliothek im Kurt-Schwitters-Forum
      • http://opc4.tib.uni-hannover.de:8080/DB=11/
      • Titeldaten Standort und Ausleihstatus
      • Raussuchen per Hand
    • Verfügbarkeit ermitteln mittels Screen Scraper
      • use LWP::Simple;
      • my $opac = 'http://opc4.tib.uni-hannover.de:8080/DB=11';
      • my $ikt = 1016;
      • my $regexp = '>Ausleihstatus: </strong></td><td[^>]+>([^>]+)<BR>([^>]+)<';
      • my $isbn = shift @ARGV;
      • my @status;
      • if ($isbn) {
      • my $url = $opac . &quot;/CMD?ACT=SRCHA&IKT=&quot; . $ikt . &quot;&TRM=&quot; . $isbn;
      • my $html = get($url);
      • while ($html =~ m/$regexp/g) {
      • push @status, &quot;$isbn: $1, $2&quot;;
      • }
      • @status = (&quot;$isbn: nicht gefunden&quot;) unless @status;
      • print join(&quot; &quot;, @status) . &quot; &quot;;
      • } else {
      • print &quot;Usage: $0 ISBN &quot;;
      • }
    • Verfügbarkeit ermitteln mittels Screen Scraper
      • $ ./isbn-at-schwitters.pl 3-931659-29-1
      • 3-931659-29-1: Ausleihbar, Bitte selbst am Standort Freihand dem Regal entnehmen
      • $ ./isbn-at-schwitters.pl 3-936931-16-X
      • 3-936931-16-X: Praesenzexemplar, -
      • 3-936931-16-X: Ausleihbar, z. Zt. ausgeliehen
      • 3-936931-16-X: Ausleihbar, z. Zt. ausgeliehen
      • $ ./isbn-at-schwitters.pl 978-0-8050-8043-8
      • 978-0-8050-8043-8: beim Buchhandel bestellt, -
      • $ ./isbn-at-schwitters.pl 978-3-446-41208-8
      • 978-3-446-41208-8: Praesenzexemplar, -
      • $ ./isbn-at-schwitters.pl 978-3-937514-42-0
      • 978-3-937514-42-0: nicht gefunden
    • Vorhandensein über- prüfen mittels SRU-API
      • Gesamtkatalog Hannover
        • http://gso.gbv.de/DB=2.92/
      • SRU-Schnittstelle
        • http://gso.gbv.de/sru/DB=2.92/
      • Titel- und Exemplardaten im PICA-Format
    • Vorhandensein über- prüfen mittels SRU-API
      • use PICA::Server;
      • my $isbn = shift @ARGV;
      • my @status;
      • if ($isbn) {
      • my $server = PICA::Server->new(
      • SRU => &quot;http://gso.gbv.de/sru/DB=2.92/&quot;
      • );
      • $server->cqlQuery( 'pica.isb=' . $isbn,
      • Record => sub {
      • $record = shift;
      • my @bib = $record->values('101@$d');
      • push @status, @bib;
      • }
      • );
      • @status = (&quot;$isbn: nicht gefunden&quot;) unless @status;
      • print join(&quot; &quot;, @status) . &quot; &quot;;
      • } else { print &quot;Usage: $0 ISBN &quot;; }
      API-Programmbibliothek
    • Serviceorientierte Architektur (SOA)
      • Eine monolithische Anwendung
      • Geht nicht, unsere Software kann nicht
      • Viele lose gekoppelte Bausteine
      • Probier' es selber aus, hier sind die APIs!
    • Integriertes Bibliothekssystem Suchindex Suchinterface Trefferanzeige Titelanzeige Katalogisierung Ausleihe Benachrichtigung Erwerbung Fernleihe u.v.a.m. Gespeicherte Suchen
    • Modulares Bibliothekssystem Suchinterface Trefferanzeige Titelanzeige Katalogisierung Suchindex Ausleihe Fernleihe Gespeicherte Suchen Erwerbung Benachrichtigung
    • Serviceorientiertes Bibliothekssystem Benachrichtigung Gespeicherte Suchen Katalogisierung Suchinterface Trefferanzeige Suchindex Erwerbung Ausleihe Fernleihe Titelanzeige Externe Anwendung Externe Anwendung Externe Anwendung
    • Zusammenfassung
      • Schnittstellen (APIs) zum Datenaustausch
      • Webservices: APIs über HTTP (meist REST)
      • (Idealerweise) genau spezifiziert und mit Referenz-Programmbibliothek implementiert
      • Zustandslose Protokolle einfacher
      • Relevant für digitale Bibliotheken
        • Suchen: Z39.50, SRU/SRW, OpenSearch...
        • Einsammeln/Verteilen: OAI, ATOM, RSS...
        • Kopieren/Status: unAPI, SeeAlso, DAIA
        • ATOMPub, Shibboleth, OpenID, NCIP, SIP2 ...
      • Oft versch. Datenformate über eine API
      • Wenn keine API vorhanden: Wrapper/Scraper
      • Serviceorientierte Architektir (SOA): Netz-werk aus Diensten & gut dokumentierte APIs
      Zusammenfassung
    • Weitere Quellen
      • Library-related APIs http://techessence.info/apis
      • DLF Working group on digital library APIs
      • Jangle Project
      • Programmable Web
      • ...
    • Bis nächste Woche!