Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • 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 Abfragen mehrerer Datensätze
  • ListSets: Abfragen vorhandener Sets

URLs

Datenweitergabe an Europeana

...

Die OAI-Schnittstelle der DDB benutzt die nach außen öffentlich sichtbaren Identifier (ID). 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. Einstweilen werden OAI-Datensetz wie u.g eindeutig identifiziert. (warning)

  • Sammlung: http://www.deutsche-digitale-bibliothek.de/dataset/ABCDEFGHIJKLMNOPQRSTU0123456789

...

OAI-Datensets

Lieferung an Europeana

Die Datensetz wie u.g eindeutig identifiziert. OAI-Datensets

...

werden nach folgenden Kriterien gebildet.

Generelle Datensets

Lieferung an Europeana

Kriterium

Benennung der des Datensets

Kommentar

Beispiele (in Solr-Query-Syntax)

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 “RVLizenz  „RV-FZ” 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 

  1. Das Harvesting einzelner DDB-IDs sollte möglich sein (GetRecord). 
  2. 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

  1. Alle Datumswerte werden als UTC-Zeit (ohne Zeitzone) verwendet.
    Das Format ist „yyyy-mm-ddTHH:mm:ssZ“, z. B. 2016-07-01T09:27:00Z}}
  2. 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.

Code Block
languagexml
linenumberstrue
<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.

Code Block
languagexml
linenumberstrue
<?xml-stylesheet type='text/xsl' 
  href='https://oai.deutsche-digitale-bibliothek.de/oai2.xsl'?>


Expand
titletype_fct




Expand
titlelicense


ElementTerm
rights_001Lizenzgruppe 1
rights_002Lizenzgruppe 2
rights_003Lizenzgruppe 3

siehe auch https://dev.fiz-karlsruhe.de/stash/projects/DDB/repos/ddb-mapping-new/browse/opt/transformationdir/conf/concordance/common/license_group.xml

Anforderungen

Allgemein

  1. Das Harvesting einzelner DDB-IDs ist über die Methode GetRecord möglich. 
  2. Veränderungen innerhalb einen OAI-Datensets über die Zeit können durch einen Timestamp abfragbar sein. 
  3. Deleted Records werden gemäß der OAI/PMH-Spezifikation unterstützt. 
  4. Das Löschen von OAI-Sets ist zunächst nicht vorgesehen, da es eine komplette Neuindexierung notwendig macht. Das ist bisher nicht implementiert.

Blacklisting und Whitelisting

  1. Der (kooperations-) vertragliche Zusammenhang von Europeana-Weitergabe und API-Blacklisting hat keine Auswirkungen auf die OAI-Schnittstelle. 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. Die weitere Klärung obliegt DDB/DNB bzw. SSt.
  2. Eine Freischaltung auf dem OAI-Server (Whitelisting) ist nicht vorgesehen. Jedes DDB-Objekt bekommt auf dem OAI-Server einen OAI/DC-Datensatz, der erst einmal nur die DDB-ID enthält. 

Konventionen/ Festlegungen

  1. Alle Datumswerte werden als UTC-Zeit (ohne Zeitzone) verwendet.
    Das Format ist „yyyy-mm-ddTHH:mm:ssZ“, z. B. 2016-07-01T09:27:00Z}}
  2. 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.
  3. Konfiguration der OAI-Schnittstelle (Logo: DDBpro_Logo_2_s_pos_RGB_G.svg oder DDBpro_Logo_2_s_pos_RGB_G.png oder DDBpro_Logo_2_s_pos_RGB_G_BG.jpg

  4. Anzahl der Objekte in einem Request: 300 (konfigurierbar in der Server-konfiguration bis max 1.000)
  5. Gültigkeit der Resumption-Token: theoretisch ewig (Verwendung der Cursor-Funktionalität von SOLR)
    • Bei einem Update während des Harvestings: Da nach Datum aufsteigend sortiert wird werden geänderte Objekte ans Ende der Liste sortiert und werden ggf. zuletzt noch einmal ausgeliefert.

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

Jira
serverJIRA - Deutsche Digitale Bibliothek
serverId67c0afcf-3564-3fd0-8d4d-a69afd7aed63
keyDDBTASK-1954
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

https://oai.deutsche-digitale-bibliothek.de?verb=GetRecord

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%2FIDEYVAM52SZTJUSL347PX6JUIFR545ZDIDEYVAM52SZTJUSL347PX6JUIFR545ZD

Code Block
languagexml
titleResponse
linenumberstrue
collapsetrue
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type='text/xsl' href='https://oai.deutsche-digitale-bibliothek.de/oai2.xsl'?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
  <responseDate>2017-01-17T13:33:19.399Z</responseDate>
  <request 
    identifier="https://www.deutsche-digitale-bibliothek.de/item/IDEYVAM52SZTJUSL347PX6JUIFR545ZD" 
    metadataPrefix="edm" 
    verb="GetRecord">https://oai.deutsche-digitale-bibliothek.de/</request>
  <GetRecord>
    <record>
      <header>
        <identifier>https://www.deutsche-digitale-bibliothek.de/item/IDEYVAM52SZTJUSL347PX6JUIFR545ZD</<identifier>IDEYVAM52SZTJUSL347PX6JUIFR545ZD</identifier>
        <!-- Datum vom ingestDate -->
        <datestamp>2015-06-15T01:11:30Z</datestamp>
        <!-- Auflistung ALLER Sets in denen der Datensatz vorkommt -->
        <setSpec>5738807392711401XjYt</setSpec>
        <setSpec>5738807392711401XjYt_:VSHJWG7QLS7Y3NS2HKE43E5Q5NJ7OCLS</setSpec>
        <setSpec>5738807392711401XjYt_:mediatype_005</setSpec>
      </header>
      <metadata>
        <!-- Nicht valide. Bessere Vorschläge sind willkommen! Europeana macht es auch so. -->
        <rdf:RDF 
          xmlns:edm="http://www.europeana.eu/schemas/edm/" 
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <!-- ... -->
        </rdf:RDF>
      </metadata>
    </record>
  </GetRecord>
</OAI-PMH>

...

Code Block
languagexml
titleResponse
linenumberstrue
collapsetrue
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type='text/xsl' href='https://oai.deutsche-digitale-bibliothek.de/oai2.xsl'?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
   <responseDate>2017-01-13T08:45:20.794Z</responseDate>
   <request metadataPrefix="oai_dc" verb="ListIdentifiers">https://oai.deutsche-digitale-bibliothek.de/</request>
   <ListIdentifiers>
      <header>
         <identifier>https://www.deutsche-digitale-bibliothek.de/item/IDEYVAM52SZTJUSL347PX6JUIFR545ZD</<identifier>IDEYVAM52SZTJUSL347PX6JUIFR545ZD</identifier>
         <!-- Datum vom ingestDate -->
         <datestamp>2015-06-15T01:11:30Z</datestamp>
         <!-- Auflistung ALLER Sets in denen der Datensatz vorkommt -->
         <setSpec>5738807392711401XjYt</setSpec>
         <setSpec>5738807392711401XjYt_:VSHJWG7QLS7Y3NS2HKE43E5Q5NJ7OCLS</setSpec>
         <setSpec>5738807392711401XjYt_:mediatype_005</setSpec>
      </header>
      <header>
         <identifier>K6UAEV22DSH4GC2VAKPRTF4ZOHIOU6EJ</identifier>
         <datestamp>2015-06-15T01:11:32Z</datestamp>
         <setSpec>5738807392711401XjYt</setSpec>
         <setSpec>5738807392711401XjYt_:VSHJWG7QLS7Y3NS2HKE43E5Q5NJ7OCLS</setSpec>
         <setSpec>5738807392711401XjYt_:mediatype_005</setSpec>
      </header>
      <!-- ... -->
      <resumptionToken completeListSize="6200747" cursor="0" expirationDate="2017-01-13T09:15:20Z">mCgPm-947-0</resumptionToken>
   </ListIdentifiers>
</OAI-PMH>

...

Code Block
languagexml
titleResponse
linenumberstrue
collapsetrue
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type='text/xsl' href='https://oai.deutsche-digitale-bibliothek.de/oai2.xsl'?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
  <responseDate>2017-01-17T15:50:20Z</responseDate>
  <request metadataPrefix="edm" verb="ListRecords">https://oai.deutsche-digitale-bibliothek.de/</request>
  <ListRecords>
    <record>
      <header>
        <identifier>https://www.deutsche-digitale-bibliothek.de/item/IDEYVAM52SZTJUSL347PX6JUIFR545ZD</<identifier>IDEYVAM52SZTJUSL347PX6JUIFR545ZD</identifier>
        <!-- Datum vom ingestDate -->
        <datestamp>2015-06-15T01:11:30Z</datestamp>
        <!-- Auflistung ALLER Sets in denen der Datensatz vorkommt -->
        <setSpec>5738807392711401XjYt</setSpec>
        <setSpec>5738807392711401XjYt_:VSHJWG7QLS7Y3NS2HKE43E5Q5NJ7OCLS</setSpec>
        <setSpec>5738807392711401XjYt_:mediatype_005</setSpec>
      </header>
      <metadata>
        <rdf:RDF 
          xmlns:edm="http://www.europeana.eu/schemas/edm/" 
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <!-- ... -->
        </rdf:RDF>
      </metadata>
    </record>
    <record>
      <!-- ... -->
    </record>
    <resumptionToken completeListSize="16240" cursor="0" expirationDate="2017-01-17T16:20:35Z">mCgPm-1042-0</resumptionToken>
  </ListRecords>
</OAI-PMH>

...

Code Block
languagexml
titleResponse
linenumberstrue
collapsetrue
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type='text/xsl' href='https://oai.deutsche-digitale-bibliothek.de/oai2.xsl'?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
  <responseDate>2017-01-12T13:51:56Z</responseDate>
  <request verb="ListSets">https://oai.deutsche-digitale-bibliothek.de/</request>
  <ListSets>
    <set>
      <setSpec>5738807392711401XjYt</setSpec>
      <setName>...</setName>
    </set>>https://oai.deutsche-digitale-bibliothek.de/</request>
  <ListSets>
    <set>
      <setSpec>5738807392711401XjYt_VSHJWG7QLS7Y3NS2HKE43E5Q5NJ7OCLS<<setSpec>5738807392711401XjYt</setSpec>
      <setName>...</setName>
    </set>
    <set>
      <setSpec>5738807392711401XjYt_mediatype_005<:VSHJWG7QLS7Y3NS2HKE43E5Q5NJ7OCLS</setSpec>
      <setName>...</setName>
    </set>
    <set>
      <setSpec>BZVTR553HLJBDMQD5NCJ6YKP3HMBQRF4:subset-200001-300000<<setSpec>5738807392711401XjYt:mediatype_005</setSpec>
      <setName>...</setName>
    </set>
    <!--  <setName>... -->
  </ListSets>
</OAI-PMH>

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

...

setName>
    </set>
    <!-- ... -->
  </ListSets>
</OAI-PMH>

Daten-Harvesting über die OAI-Schnittstelle der DDB

...