OAI-PMH

Motivation und Entstehung

Im Jahr 2012 ent­stand an der UB Leip­zig der Wunsch nach einem URN-Ser­ver, der nächt­lich alle über den Tag neu erstell­ten URNs zusam­men­fasst und für die Deut­sche Natio­nal­bi­blio­thek (DNB) abruf­be­reit prä­sen­tiert, damit die­se in den Index der DNB auf­ge­nom­men wer­den kön­nen. Die DNB arbei­te­te damals wie heu­te mit OAI-Cli­ents zum Abru­fen der URNs. Ste­fan Frei­tag, mitt­ler­wei­le Lei­ter der Soft­ware­ent­wick­lung an der UB Leip­zig, hat dar­auf­hin zunächst einen OAI-PMH-Ser­ver für URNs unter Nut­zung des xepi­cur-For­mats imple­men­tiert. In 2018 wur­de die­ser unter Ver­wen­dung aktu­el­le­rer Tech­no­lo­gien (u.a. Java 11, vert.x‑Framework) neu implementiert.

Zur glei­chen Zeit ent­stand der Wunsch, METS/MODS-Datei­en eben­falls öffent­lich ver­füg­bar zu machen. METS/­MODS-Datei­en enste­hen wäh­rend des Kito­do-Digi­ta­li­sie­rungs­work­flows und wer­den zur IIIF-Ver­ar­bei­tung her­an­ge­zo­gen. IIIF ist eine wun­der­ba­re Tech­no­lo­gie zum Aus­tau­schen und Prä­sen­tie­ren von Bild­da­tei­en, es fehlt der Tech­no­lo­gie jedoch an Funk­tio­na­li­tät, um detail­lier­te biblio­gra­fi­sche Infor­ma­tio­nen dar­zu­stel­len, die wie­der­um in den METS/­MODS-Daten agg­re­giert sind. Aus die­sem Grun­de hat Ste­fan Frei­tag den OAI-Ser­ver modi­fi­ziert und eine neue Instanz auf­ge­setzt. Dar­über wer­den seit­dem die METS/­MODS-Daten ver­füg­bar gemacht. Um die­se Schnitt­stel­le per­for­mant zu gestal­ten, wer­den die Daten in einer Daten­bank zwi­schen­ge­spei­chert, die wie­der­um inter­vall­mä­ßig aus einer selbst ent­wi­ckel­ten Schnitt­stel­le (igiL-Backend) mit den Daten ver­sorgt wird. Die UB Leip­zig erreicht dadurch ein sehr per­for­man­tes Zwi­schen­spei­chern (Caching) der Daten für die sehr vie­len und zudem teil­wei­se sehr gro­ßen METS/­MODS-Beschrei­bun­gen.

Nutzung und Nutzungsbeispiel

Open Archi­ves Initia­ti­ve Pro­to­col for Meta­da­ta Har­ve­s­t­ing (OAI-PMH) ist ein web­ba­sier­tes stan­dar­di­sier­tes Pro­to­koll für das Sam­meln von Meta­da­ten und bie­tet ein anwen­dungs­un­ab­hän­gi­ges Inter­ope­ra­bi­li­täts-Frame­work. Mit Hil­fe eines Har­ves­ters (Cli­ent­an­wen­dung), kön­nen Meta­da­ten gesam­melt werden.

Mit­hil­fe von OAI-PMH wer­den bevor­zugt Daten­ab­glei­che zwi­schen Daten­ban­ken voll­zo­gen. Das schließt jedoch nicht aus, Meta­da­ten ohne eige­ne Daten­bank über die Schnitt­stel­le zu bezie­hen. Wie ein­gangs erwähnt, fin­det die Schnitt­stel­le bei uns haupt­säch­lich Anwen­dung beim Daten­ab­gleich mit der DNB. So kön­nen Daten­sät­ze auto­ma­ti­siert und in einem fest­ge­leg­ten Stan­dard zwi­schen den Ein­rich­tun­gen aus­ge­tauscht werden.

Die ein­fachs­te Art eines sol­chen Cli­ents ist bei­spiels­wei­se ein Web­brow­ser. Es kön­nen aber auch Anfra­gen (Requests) in Com­pu­ter­pro­gram­men von Pro­gram­mie­rern inte­griert wer­den, um die­se an den Ser­ver zu sen­den, eine Ant­wort (Respon­se) zu bekom­men und die­se Ant­wort ent­spre­chend im Com­pu­ter­pro­gramm zu verarbeiten.

Im Fol­gen­den zei­gen wir Ihnen, anhand von 2 Bei­spie­len, wie Sie die Schnitt­stel­le nut­zen kön­nen. Eine aus­führ­li­che Beschrei­bung des Pro­to­kolls fin­den Sie unter https://www.openarchives.org/OAI/openarchivesprotocol.html

Request

OAI-PMH-Anfra­gen müs­sen ent­we­der mit den Metho­den HTTP GET oder POST gesen­det wer­den. POST hat den Vor­teil, dass die Län­ge der Argu­men­te nicht ein­ge­schränkt wird. Bei den Anfra­gen muss das URL-Enco­ding beach­tet werden.

Für eine Anfra­ge (Request) wird eine Basis-URL benö­tigt, wel­che durch Schlüs­sel­wort­ar­gu­men­te (key­word argu­ments) ergänzt wird. Zwi­schen der Basis-URL und den Schlüs­sel­wort­ar­gu­men­ten muss eine Tren­nung durch ein Fra­ge­zei­chen [?] erfolgen.

Basis-URL der UB Leipzig

https://services.ub.uni-leipzig.de/digitalcollections/oai2

Keyword Arguments

Zusätz­lich zur Basis-URL bestehen alle Anfra­gen aus einer Lis­te von Schlüs­sel­wort­ar­gu­men­ten (key­word argu­ments), die die Form von Schlüs­sel-Wert-Paa­ren haben (key=value). Die Argu­men­te kön­nen dabei in belie­bi­ger Rei­hen­fol­ge anein­an­der­ge­reiht wer­den. Meh­re­re Argu­men­te müs­sen durch das kauf­män­ni­sche Und [&] getrennt wer­den. Dabei ist zu beach­ten, dass jede OAI-PMH-Anfra­ge min­des­tens ein Schlüs­sel-Wert-Paar ent­hal­ten muss.

Bei­spiel für den Abruf des Impres­sums vom OAI-Ser­ver mit­hil­fe des Wer­tes „Iden­ti­fy”:

https://services.ub.uni-leipzig.de/digitalcollections/oai2?verb=Identify

Basis-URL:

https://services.ub.uni-leipzig.de/digitalcollections/oai2

key­word arguments:

verb=identify

Repo­si­to­ries machen stan­dard­mä­ßig ihre Basis-URL als Wert des baseURL-Ele­ments in der soge­nann­ten Iden­ti­fy-Ant­wort verfügbar.

Bei­spiel für die Ein­gren­zung der Records auf einen bestimm­ten Zeitraum:

https://services.ub.uni-leipzig.de/digitalcollections/oai2?verb=ListRecords&metadataPrefix=mets&from=2020-01-10&until=2020-05-15

Basis-URL:

https://services.ub.uni-leipzig.de/digitalcollections/oai2

key­word arguments:

verb=ListRecords
metadataPrefix=mets
from=2020-01-10
until=2020-05-15

Response

Alle Ant­wor­ten auf OAI-PMH-Anfra­gen sind wohl­ge­form­te XML-Doku­men­te die in UTF-8 codiert sind.

Ver­füg­ba­re Formate:

METS Meta­da­ta Enco­ding & Trans­mis­si­on Standard For­mat zur Beschrei­bung von digi­ta­len Samm­lun­gen von Objek­ten mit Metadaten
MODS Meta­da­ta Object Descrip­ti­on Schema For­mat für biblio­gra­fi­sche Metadaten

Im Fol­gen­den ist ein Aus­schnitt für den Respon­se zum Bei­spiel 2 zu sehen. Das Bei­spiel ent­hält Ele­men­te und Attri­bu­te, wel­che in den Sche­ma­de­fini­tio­nen hin­ter­legt sind. Die­se wer­den mit ent­spre­chen­den Daten gefüllt, wie es die Sche­ma­de­fini­ti­on ver­langt. Betrach­ten wir hier­zu den fol­gen­den Abschnitt, wobei erkenn­bar ist, dass die Bezeich­nung recht ein­deu­tig sind. Hier der Titel des Werks:

<mods:title>Dominica Aduentus Domini, Matth. 21.</mods:title>
<mets:mets xsi:schemaLocation="http://www.loc.gov/standards/premis/ http://www.loc.gov/standards/premis/v2/premis-v2-0.xsd http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-7.xsd http://www.loc.gov/METS/ http://www.loc.gov/standards/mets/version17/mets.v1-7.xsd http://www.loc.gov/standards/mix/ http://www.loc.gov/standards/mix/mix.xsd" >
<mets:metsHdr CREATEDATE="2017-04-25T06:56:22" >
<mets:agent OTHERTYPE="SOFTWARE" ROLE="CREATOR" TYPE="OTHER" >
<mets:name>Goobi - UGH-1.11.0-7b3c2be - 26−March−2015</mets:name>
<mets:note>Goobi</mets:note>
</mets:agent>
</mets:metsHdr>
<mets:dmdSec ID="DMDLOG_0000" >
<mets:mdWrap MDTYPE="MODS" >
<mets:xmlData>
<mods:mods>
<mods:identifier type="goobi" >2552</mods:identifier>
<mods:relatedItem type="series" >
<mods:titleInfo>
<mods:title>VD16</mods:title>
</mods:titleInfo>
</mods:relatedItem>
<mods:identifier type="urn" >urn:nbn:de:bsz:15-0010-122769</mods:identifier>
<mods:identifier type="swb-ppn" >084461748</mods:identifier>
<mods:extension>
<slub:slub>
<slub:id type="source" >084461748</slub:id>
<slub:id type="tsl-ats" >DresPrec</slub:id>
</slub:slub>
</mods:extension>
<mods:identifier type="vd16" >VD16 D 2761</mods:identifier>
<mods:titleInfo>
<mods:title>Precationum formulae Ex Singvlis Evangeliis Dominicorvm, Et Festorvm Diervm Deliberate</mods:title>
<mods:subTitle>Latinè, &amp; Graecè</mods:subTitle>
</mods:titleInfo>
<mods:titleInfo type="alternative" >
<mods:title>Precationum formulae ex singulis Evangeliis Dominicorum, et festorum dierum deliberate</mods:title>
</mods:titleInfo>
<mods:language>
<mods:languageTerm authority="rfc3066" type="code" >grc</mods:languageTerm>
</mods:language>
<mods:language>
<mods:languageTerm authority="rfc3066" type="code" >lat</mods:languageTerm>
</mods:language>
<mods:originInfo>
<mods:place>
<mods:placeTerm type="text" >Lipsiae</mods:placeTerm>
</mods:place>
<mods:dateIssued keyDate="yes" >1596</mods:dateIssued>
<mods:dateOther encoding="w3cdtf" type="order" >1596</mods:dateOther>
<mods:publisher>Lantzenberger</mods:publisher>
</mods:originInfo>
<mods:name type="personal" >
<mods:role>
<mods:roleTerm authority="marcrelator" type="code" >aut</mods:roleTerm>
</mods:role>
<mods:namePart type="family" >Dresser</mods:namePart>
<mods:namePart type="given" >Matthaeus</mods:namePart>
<mods:displayForm>Dresser, Matthaeus</mods:displayForm>
</mods:name>
<mods:physicalDescription>
<mods:extent unit="leaves" >[176] Bl.</mods:extent>
</mods:physicalDescription>
</mods:mods>
</mets:xmlData>
</mets:mdWrap>
</mets:dmdSec>
<mets:dmdSec ID="DMDLOG_0001" >
<mets:mdWrap MDTYPE="MODS" >
<mets:xmlData>
<mods:mods>
<mods:titleInfo>
<mods:title>Dominica Aduentus Domini, Matth. 21.</mods:title>
</mods:titleInfo>
</mods:mods>
</mets:xmlData>
</mets:mdWrap>
</mets:dmdSec>
Kon­takt
Für Fra­gen und Anre­gun­gen zum The­ma wen­den Sie Sich bit­te an die Ansprech­part­ner des UBLabs.