Inhalt
Diese Seite dienst als Beschreibung der öffentlichen OAI-Schnittstelle der DDB. Diese Dokumentation soll zum einen als Vorgabe für die Implementierung der Schnittstelle verwendet werden, aber auch später in einer überarbeiteten und konsolidierten Fassung veröffentlicht werden.
Inhalt
Allgemeines
Eine OAI-Schnittstelle bietet die folgenden „Verben“, mit denen Daten abgefragt werden können. Die OAI-PMH 2.0-Spezifikation befindet sich unter http://www.openarchives.org/OAI/openarchivesprotocol.html, weitere einführende Informationen gibt es bei Wikipedia unter https://en.wikipedia.org/wiki/Open_Archives_Initiative_Protocol_for_Metadata_Harvesting.
- GetRecord: Abfragen eines Datensatzes
- Identify: Abfragen grundsätzlicher Informationen über den Provider, hier die DDB
- ListIdentifiers: Abfragen mehrerer Datensatzinformationen (wie beispielsweise die Identifier)
- ListMetadataFormats: Abfrage verfügbarer Metadatenformate, hier oai_dc und edm
- ListRecords: Abgraben mehrerer Datensätze
- ListSets: Abfragen vorhandener Sets
Datenweitergabe an Europeana
Workflow
Vorverarbeitung durch Transformation
Beim Erstellen der Daten für die Weitergabe an Europeana (Datenformat EDM) werden bereits die folgenden Punkt erledigt und müssen folglich durch den OAI/PMH-Server nicht berücksichtig werden.
- bei Objekten mit keiner CC0-Lizenz werden nur Kernmetadaten exportiert (dc:description wird gelöscht)
- bestimmte Hierarchieobjekte (z. B. Kapitel) werden herausgefiltert
- Text-Objekte ohne Sprache werden rausgefiltert
- Objekte ohne Digitalisat werden rausgefiltert
- Objekte ohne edm:type werden rausgefiltert
Spezifikation
Datenformate
Über die OAI-Schnittstelle der DDB werden die folgenden beiden Datenformate angeboten:
- DDB (Primary Format, needed to define set-definitions. as set-definitions are defined by xPath-Expressions)
- OAI-DC
- EDM
Identifier
Die OAI-Schnittstelle der DDB benutzt die nach außen öffentlich sichtbaren Identifier. Das sind (Teile des) URI der DDB-Objekte.
- DDB-Objekt (Peterchens Mondfahrt): http://www.deutsche-digitale-bibliothek.de/item/IDEYVAM52SZTJUSL347PX6JUIFR545ZD
Datenzusammenstellungen, darunter fallen u.a. OAI-Datensets bekommen zukünftig einen eigenen Identifier.
- Sammlung: http://www.deutsche-digitale-bibliothek.de/dataset/ABCDEFGHIJKLMNOPQRSTU0123456789
Einstweilen werden OAI-Datensetz wie u.g eindeutig identifiziert.
OAI-Datensets:
Generelle Datensets
Lieferung an Europeana
Kriterium | Benennung der Datensets | Kommentar | Beispiele |
---|---|---|---|
dataset_id | <dataset_id> | ID des Datensets. (dies wird am häufigsten benutzt) | dataset-id:5738807392711401XjYt |
dataset_id AND provider_id | <dataset_id>_<provider_id> | Ein Datenpartner kann mehrere Provider liefern. Nur einige müssen an Europeana weitergegeben werden (z.B. Digicult) | dataset-id:5738807392711401XjYt AND provider_id:VSHJWG7QLS7Y3NS2HKE43E5Q5NJ7OCLS |
dataset_id AND type_fct | <dataset_id>_<type_fct> | Ein Datenpartner möchte z.B. nur die Videos aus einem Datenset liefern. | dataset-id:5738807392711401XjYt AND type_fct:mediatype_005 |
dataset_id AND license | <dataset_id>_<license> | Ein Datenpartner möchte nur die Objekte mit der Lizenz “RV-FZ” innerhalb eines Datensets liefern | dataset-id:5738807392711401XjYt AND license:"http://www.deutsche-digitale-bibliothek.de/lizenzen/rv-fz/" |
Blacklisting:
TODO Büchner, Michael
Weitere Anforderungen
- Das Harvesting einzelner DDB-IDs sollte möglich sein (GetRecord).
- Veränderungen innerhalb einen OAI-Datensets müssen über die Zeit durch einen Timestamp abfragbar sein.
Fragen & Antworten
- Zusammenhang: Europeana-Weitergabe und Blacklisting
- Stand der Dinge: Das ist ein vertragliches Problem und muss auch an dieser Stelle gelöst werden. Ein Blacklisting (Daten eines Datenpartners lassen sich nicht über die DDB-API abrufen) sollte nicht mit einer Datenlieferung über die DDB an Europeana kombiniert werden können.
Für alle nicht-geblacklisteten Daten werden OAI-Sets erstellt.
- Ist eine Freischaltung auf dem OAI Server noch nötig? (Whitelist)
- Nein, eine zusätzliche Freischaltung ist nicht vorgesehen. Jedes DDB-Objekt bekommt auf dem OAI-Server einen OAI/DC-Datensatz, der erst einmal nur die DDB-ID enthält. J).
- Daten in den Lieferformate harvesten (Anforderung FS Archiv für EAD)
- Anforderung ist erst einmal zurückgestellt.
- Umgang mit Deleted Records
- Deleted Records werden gemäß der OAI/PMH-Spezifikation unterstützt.
- Löschen von OAI-Sets
- Komplette Neuindexierung notwendig. Das ist bisher nicht implementiert
Konventionen/Festlegungen
- Alle Datumswerte werden als UTC-Zeit (ohne Zeitzone) verwendet.
Das Format ist „yyyy-mm-ddTHH:mm:ssZ“, z. B. 2016-07-01T09:27:00Z}} - Die OAI-Schnittstelle der DDB ist unter https://oai.deutsche-digitale-bibliothek.de/ erreichbar. http://oai.deutsche-digitale-bibliothek.de/ leitet auf die verschlüsselte Schnittstelle weiter.
- …
Schemata/XSLT-Stylesheet
Zur besseren Verwendbarkeit der Schnittstelle ist das OAI PMH 2.0-Schema eingebunden.
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
Weiterhin ist mittels einer Prozessoranweisung ein XSLT-Stylesheet eingebunden. Das ermöglicht den meisten Webbrowsern aus den XML-Daten der OAI-Schnittstelle eine HTML-Ansicht zu generieren.
<?xml-stylesheet type='text/xsl' href='https://oai.deutsche-digitale-bibliothek.de/oai2.xsl'?>
Das entsprechende XSLT-Stylesheet kann bspw. unter http://wiki.eprints.org/w/OAI_XSLT heruntergeladen werden und muss durch die OAI-Schnittstelle ausgeliefert werden. Ggf. kann die Datei noch angepasst werden, damit die Anzeige im Corporate-Design der DDB erfolgt.
Beschreibung
GetRecord
URL | ||
Parameter | identifier (benötigt) | |
| metadataPrefix (benötigt) | Metadatenformat: „oai_dc” oder „edm“ |
Request
https://oai.deutsche-digitale-bibliothek.de?verb=GetRecord&metadataPrefix=edm&identifier=https%3A%2F%2Fwww.deutsche-digitale-bibliothek.de%2Fitem%2FIDEYVAM52SZTJUSL347PX6JUIFR545ZD
Identify
Request
https://oai.deutsche-digitale-bibliothek.de?verb=Identify
ListIdentifiers
URL | https://oai.deutsche-digitale-bibliothek.de?verb=ListIdentifiers&metadataPrefix=oai_dc | |
Parameter | metadataPrefix (benötigt) | Metadatenformat: „oai_dc” oder „edm“ |
| from (optional) | UTC-Zeit in der Form „yyyy-mm-ddTHH:mm:ssZ“ |
| until (optional) | UTC-Zeit in der Form „yyyy-mm-ddTHH:mm:ssZ“ |
| set (optional) | OAI-Set-Identifier |
| resumptionToken (optional) | Token zur Wiederaufnahme bei größeren Datensets |
Request
https://oai.deutsche-digitale-bibliothek.de?verb=ListIdentifiers&metadataPrefix=oai_dc
ListMetadataFormats
URL | https://oai.deutsche-digitale-bibliothek.de?verb=ListMetadataFormats | |
Parameter | identifier (optional) | Identifier eines DDB-Objektes (URI) |
Request
https://oai.deutsche-digitale-bibliothek.de?verb=ListMetadataFormats
ListRecords
URL | https://oai.deutsche-digitale-bibliothek.de?verb=ListRecords | |
Parameter | metadataPrefix (benötigt) | Metadatenformat: „oai_dc” oder „edm“ |
| from (optional) | UTC-Zeit in der Form „yyyy-mm-ddTHH:mm:ssZ“ |
| until (optional) | UTC-Zeit in der Form „yyyy-mm-ddTHH:mm:ssZ“ |
| set (optional) | OAI-Set-Identifier |
| resumptionToken (optional) | Token zur Wiederaufnahme bei größeren Datensets |
Request
https://oai.deutsche-digitale-bibliothek.de/?verb=ListRecords&metadataPrefix=edm
ListSets
URL | ||
Parameter | resumptionToken (optional) | Token zur Wiederaufnahme bei größeren Datensets |
Request
https://oai.deutsche-digitale-bibliothek.de?verb=ListSets
StatusCodes
Die OAI-Schnittstelle setzt HTTP-StatusCodes um.
- 200 - OK
- 503 - Service unavailable → Überlastung der Schnittstelle
- 429 - Too Many Requests → Überlastung der Schnittstelle
- 400 - Bad Request → OAI-ErrorConditions
- 404 - Not Found
HTTP compression
Die OAI-PMH-Schnittstelle der DDB unterstützt HTTP-Kompression gzip und br (Brotli). Siehe auch DDBTASK-1954 - Getting issue details... STATUS
Daten-Harvesting über die OAI-Schnittstelle der DDB
Strategie 1: ListRecords mit Set-Identifier
Set-Identifier: 5738807392711401XjYt (gesamtes Dataset)
- Abfrage über Verb „ListRecords“: ?verb=ListRecords&metadataPrefix=edm&set=5738807392711401XjYt
- Wiederholung mit resumptionToken bis das Ende erreicht ist: ?verb=ListRecords&resumptionToken=mCgPm-1073-0
Strategie 2: GetRecord über ListIdentifiers mit Set-Identifier
...