OAI-PMH
Der /oai
Endpunkt stellt einen OAI-PMH (Open Archives Initiative Protocol for Metadata Harvesting) Server zur Verfügung, der einen Großteil der Digitalisate aus dem Kulturpool bereitstellt.
OAI-PMH ist ein Standard-Protokoll für das Harvesting von Metadaten aus digitalen Archiven und Repositorien, das eine standardisierte Schnittstelle für die Übertragung von Metadaten zwischen verschiedenen Systemen bietet.
Basis-URL
GET /oai
OAI-PMH Verben
Das OAI-PMH Protokoll unterstützt sechs Standard-Verben (Befehle):
GetRecord
Ruft einen einzelnen Datensatz ab.
Parameter:
- verb (string):
GetRecord
(Pflicht) - identifier (string): Eindeutige Kennung des gewünschten Datensatzes (Pflicht)
- metadataPrefix (string): Format der Metadaten (Pflicht)
Beispiel:
GET /oai?verb=GetRecord&metadataPrefix=edm&identifier=https://id.kulturpool.at/b1eaac0f-69a1-4174-8ac6-90a61615d0ae
Identify
Gibt grundlegende Informationen über das Repository zurück.
Parameter:
- verb (string):
Identify
(Pflicht)
Beispiel:
GET /oai?verb=Identify
ListIdentifiers
Listet die Identifikatoren aller verfügbaren Datensätze auf.
Parameter:
- verb (string):
ListIdentifiers
(Pflicht) - metadataPrefix (string): Format der Metadaten (Pflicht)
- from (string): Datum ab wann (optional, Format: YYYY-MM-DD)
- until (string): Datum bis wann (optional, Format: YYYY-MM-DD)
- set (string): Spezifisches Set/Sammlung (optional)
- resumptionToken (string): Token für paginierte Ergebnisse (optional)
Beispiel:
GET /oai?verb=ListIdentifiers&metadataPrefix=edm&set=kulturpool-europeana:wien-bibliothek
ListMetadataFormats
Listet alle verfügbaren Metadatenformate auf.
Parameter:
- verb (string):
ListMetadataFormats
(Pflicht) - identifier (string): Spezifischer Datensatz (optional)
Beispiel:
GET /oai?verb=ListMetadataFormats
ListRecords
Ruft die Metadaten aller verfügbaren Datensätze ab.
Parameter:
- verb (string):
ListRecords
(Pflicht) - metadataPrefix (string): Format der Metadaten (Pflicht)
- from (string): Datum ab wann (optional, Format: YYYY-MM-DD)
- until (string): Datum bis wann (optional, Format: YYYY-MM-DD)
- set (string): Spezifisches Set/Sammlung (optional)
- resumptionToken (string): Token für paginierte Ergebnisse (optional)
Beispiel:
GET /oai?verb=ListRecords&metadataPrefix=edm&set=kulturpool-europeana:wien-bibliothek
ListSets
Listet alle verfügbaren Sets (Sammlungen) auf.
Parameter:
- verb (string):
ListSets
(Pflicht) - resumptionToken (string): Token für paginierte Ergebnisse (optional)
Beispiel:
GET /oai?verb=ListSets
Verfügbare Metadatenformate
EDM (Europeana Data Model)
- metadataPrefix:
edm
- Schema: Europeana Data Model
- Namespace: http://www.europeana.eu/schemas/edm/
Dublin Core
- metadataPrefix:
oai_dc
- Schema: Dublin Core Metadata Element Set
- Namespace: http://www.openarchives.org/OAI/2.0/oai_dc/
Beispielanfragen
Repository-Informationen abrufen
GET /oai?verb=Identify
Alle verfügbaren Sets anzeigen
GET /oai?verb=ListSets
Identifikatoren aus der Wienbibliothek
GET /oai?verb=ListIdentifiers&metadataPrefix=edm&set=kulturpool-europeana:wien-bibliothek
Vollständige Datensätze aus der Wienbibliothek
GET /oai?verb=ListRecords&metadataPrefix=edm&set=kulturpool-europeana:wien-bibliothek
Spezifischen Datensatz abrufen
GET /oai?verb=GetRecord&metadataPrefix=edm&identifier=https://id.kulturpool.at/b1eaac0f-69a1-4174-8ac6-90a61615d0ae
Datensätze aus einem bestimmten Zeitraum
GET /oai?verb=ListRecords&metadataPrefix=edm&from=2024-01-01&until=2024-12-31
Antwortformat
Alle OAI-PMH Antworten sind im XML-Format strukturiert:
Erfolgreiche Antwort (GetRecord Beispiel)
<?xml version="1.0" encoding="UTF-8"?>
<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>2025-08-05T10:30:00Z</responseDate>
<request verb="GetRecord" metadataPrefix="edm"
identifier="https://id.kulturpool.at/b1eaac0f-69a1-4174-8ac6-90a61615d0ae">
https://api.kulturpool.at/oai
</request>
<GetRecord>
<record>
<header>
<identifier>https://id.kulturpool.at/b1eaac0f-69a1-4174-8ac6-90a61615d0ae</identifier>
<datestamp>2024-12-15T09:22:13Z</datestamp>
<setSpec>kulturpool-europeana:wien-bibliothek</setSpec>
</header>
<metadata>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:edm="http://www.europeana.eu/schemas/edm/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:ore="http://www.openarchives.org/ore/terms/">
<!-- EDM/RDF Metadaten hier -->
<edm:ProvidedCHO rdf:about="https://id.kulturpool.at/b1eaac0f-69a1-4174-8ac6-90a61615d0ae">
<dc:title>Beispiel Titel</dc:title>
<dc:creator>Beispiel Künstler</dc:creator>
<dc:description>Beispiel Beschreibung</dc:description>
<!-- weitere Metadatenfelder -->
</edm:ProvidedCHO>
</rdf:RDF>
</metadata>
</record>
</GetRecord>
</OAI-PMH>
Fehlerantwort
<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/">
<responseDate>2025-08-05T10:30:00Z</responseDate>
<request>https://api.kulturpool.at/oai</request>
<error code="badVerb">Illegal OAI verb</error>
</OAI-PMH>
Fehlerbehandlung
Das OAI-PMH Protokoll definiert standardisierte Fehlercodes:
- badArgument: Ungültiges Argument
- badResumptionToken: Ungültiger oder abgelaufener Resumption Token
- badVerb: Ungültiges Verb
- cannotDisseminateFormat: Nicht unterstütztes Metadatenformat
- idDoesNotExist: Datensatz existiert nicht
- noMetadataFormats: Keine Metadatenformate verfügbar
- noRecordsMatch: Keine Datensätze entsprechen den Kriterien
- noSetHierarchy: Repository unterstützt keine Sets
Paginierung
Bei großen Datenmengen verwendet OAI-PMH Resumption Tokens für die Paginierung:
<resumptionToken completeListSize="5000" cursor="100">
token123456789
</resumptionToken>
Um die nächste Seite abzurufen:
GET /oai?verb=ListRecords&resumptionToken=token123456789