Schnittstellen - OAI

In diesem Abschnitt wird die Nutzung der integrierten OAI-Schnittstelle erläutert. Diese Schnittstelle liefert jedoch nicht die konkreten ausgelieferten Datenformate für das eigene Datenmodell wie Dublin Core, MODS, LIDO usw. Die hierfür erforderlichen Stylesheets müssen selbst erstellt werden.

Das Repository als OAI-Data-Provider

Im folgenden soll die Konfiguration der OAI-Schnittstelle beschrieben werden. Zum Austausch von Metadaten unterstützt MyCoRe das Open Archives Initiative Protocol for Metadata Harvesting (OAI-PMH). Die Beschreibung des Standards finden Sie unter http://www.openarchives.org/pmh/. Machen Sie sich zunächst grob mit diesem Standard vertraut. In die Implementierung sind auch Anforderungen aus dem DINI-Zertifikat 2010 ( http://www.dini.de/dini-zertifikat/) eingeflossen.

Die OAI-Schnittstelle ist auch in der MIR-Anwendung bereits integriert und kann dort getestet werden:

Konfiguration des OAI-Providers

Mehrfache Verwendung

Es ist möglich mehrere OAI-Provider parallel zu betreiben. So kann man beispielsweise einen OAIProvider für das Melden der Dissertationen an die Deutsche Nationalbibliothek verwenden und mit einem zweiten OAIProvider den gesamten Dokumentenbestand für OpenAccess-Portale wie OAIster oder BASE bereit stellen.

Als Unterscheidungskriterium gilt der Servlet-Name, wie er in der web.xml verwendet wird. Er ist auch Bestandteil der Property-Namen in den Konfigurationsdateien. Die Verwendung derselben Servletklasse ist möglich.

Aktivierung des Servlets

Das OAI2 Servlet muss in der web.xml aktiviert werden:

<servlet id="OAI2Provider">
  <servlet-name>OAI2</servlet-name>
  <servlet-class>org.mycore.oai.MCROAIDataProvider</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>OAI2</servlet-name>
  <url-pattern>/oai2</url-pattern>
</servlet-mapping>

Properties

Für die Konfiguration der Schnittstelle sind eine Reihe von Properties notwendig. Viele können in der Defaulteinstellung verwendet werden, einige sind jedoch in der eigenen Anwendung zu überschreiben.

Property für die Ausgabeformatierung

Für die Visualisierung der OAI-Requests im Webbrowser wird das OAI2 to HTML XSLT Style Sheet von Eprints verwendet.

Folgendes Property gibt den Pfad zu diesem Stylesheet in der eigenen Anwendung an:

MCR.OAIDataProvider.OAI2.ResponseStylesheet=oai/oai2.xsl

Properties für den Identify-Request

Für die genaue Bedeutung der Properties und ihre möglichen Werte sei ein Blick in den OAI-Standard empfohlen:

# Properties for OAI Identify Request:
MCR.OAIDataProvider.OAI2.RepositoryName=MyCoRe Sample Repository
MCR.OAIDataProvider.OAI2.RepositoryIdentifier=www.mycore.de
MCR.OAIDataProvider.OAI2.AdminEmail=info@mycore.de

MCR.OAIDataProvider.OAI2.EarliestDatestamp=1970-01-01
MCR.OAIDataProvider.OAI2.RecordSampleID=DocPortal_document_07910403
MCR.OAIDataProvider.OAI2.DeletedRecord=transient

MCR.OAIDataProvider.OAI2.Friends.DuEPublico=http://duepublico.uni-duisburg-essen.de/servlets/OAIDataProvider
MCR.OAIDataProvider.OAI2.Friends.DBThueringen=http://www.db-thueringen.de/servlets/OAIDataProvider
      

Properties für Resumption Tokens

Mittels Resumption Tokens kann die Rückgabe großer Mengen an Dokumenten partitioniert werden. Genauere Angaben entnehmen Sie der OAI-Spezifikation.

Für die Konfiguration werden folgende Properties verwendet:

MCR.OAIDataProvider.ResumptionTokens.PartitionSize=100
MCR.OAIDataProvider.ResumptionTokens.MaxAge=1440
      

Properties für den OAIAdapter

Mit dem OAIAdapter wird der einheitliche, protokoll-spezifische Teil der OAImplementierung von den konkreten Anforderungen der Anwendung (MIR, MILESS, PAPYRI usw.) getrennt. Für MyCoRe-Anwendungen steht die Klasse MCROAIAdapter zur Verfügung. In wenigen Ausnahmefällen kann es notwendig sein, diese Klasse neu zu implementieren oder zu erweitern.

MCR.OAIDataProvider.OAI2.Adapter=org.mycore.oai.MCROAIAdapter

Die Erzeugung des Header- und des Metadatenteils eines OAI-Responses erfolgt über Stylesheets, die über den URI-Resolver aufgerufen werden. Im DocPortal befinden sich eine beispielhafte Umsetzung für document2header.xsl. Für jedes Metadatenformat muss ebenfalls ein Stylesheet erzeugt werden (siehe Properties für Metadatenformate).

MCR.OAIDataProvider.OAI2.Adapter.HeaderURIPattern=xslStyle:document2header:mcrobject:{id}
MCR.OAIDataProvider.OAI2.Adapter.RecordURIPattern=xslStyle:{mcrobject_type}2{format}:mcrobject:{id}
      

Properties für die Suche

Mit den folgenden Properties lässt sich die Menge der Dokumente, die über die OAI-Schnittstelle ausgeliefert werden, einschränken und sortieren.

MCR.OAIDataProvider.OAI2.Search.Restriction=objectType:document
MCR.OAIDataProvider.OAI2.Search.SortBy=modified descending, id descending
MCR.OAIDataProvider.OAI2.Search.FromUntil=modified
      

Properties für Sets

Das Konzept der Sets im OAI-Standard lässt sich mit dem Klassifikationskonzept von MyCoRe vergleichen. Daher bietet es sich an, Klassifikationen als Sets zu verwenden.

Mit dem Property FilterEmptySets kann bestimmt werden, ob auch leere Sets bei einem List-Sets-Request zurückgegeben werden.

MCR.OAIDataProvider.OAI2.FilterEmptySets=true

Mit dem folgenden Property werden zunächst alle Sets definiert, die in der Anwendung verwendet werden sollen:

MCR.OAIDataProvider.OAI2.Sets=open_access,doc-type

Mit einem XSLT-Stylesheet und unter Verwendung des URI-Resolvers kann aus einer MyCoRe-Klassifikation die entsprechende Ausgabe für einen OAI-List-Sets-Request generiert werden:

MCR.OAIDataProvider.OAI2.Set.doc-type=xslStyle:classification2sets:classification:metadata:10:noEmptyLeaves:children:diniPublType

Für die Suche nach Dokumenten, die als Inhalt eines Sets zurückgegeben werden sollen, kann einem Setnamen ein Klassifikationsname zugeordnet werden:

MCR.OAIDataProvider.OAI2.MapSetToClassification.doc-type=diniPublType

Alternativ besteht auch die Möglichkeit, per URI-Resolver direkt eine XML-Datei mit der Set-Konfiguration anzugeben:

MCR.OAIDataProvider.OAI2.Set.open_access=webapp:oai/set_open_access.xml

Beispiel für eine statische Sets Datei im XML Format:

<?xml version="1.0" encoding="UTF-8"?>
<ListSets 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">
  <set>
    <setSpec>open_access</setSpec>
    <setName>Open Access publications</setName>
  </set>
</ListSets>

Zu Beachten ist hierbei die Verwendung des OAI Namensraumes.

Bei statisch definierte Sets muss für jeden Eintrag ein Property gesetzt werden, welches eine Suchanfrage auf die Dokumente innerhalb des Sets zurückliefert:

MCR.OAIDataProvider.OAI2.MapSetToQuery.open_access=(objectType = *)

Wenn die ID des Sets (setSpec) Doppelpunkte enthält, werden diese durch Unterstrich (_) ersetzt:

#setName=Personen, setSpec=type:person
MCR.OAIDataProvider.OAI2.MapSetToQuery.type_person=objectType:person
      

Properties für Metadatenformate

Zunächst sind die unterstützten Metadatenformate aufzulisten und dann jeweils Namensraum und URL der XMLSchema-Definition anzugeben:

MCR.OAIDataProvider.OAI2.MetadataFormats=oai_dc,epicur
MCR.OAIDataProvider.MetadataFormat.oai_dc.Schema=http://www.openarchives.org/OAI/2.0/oai_dc.xsd
MCR.OAIDataProvider.MetadataFormat.oai_dc.Namespace=http://www.openarchives.org/OAI/2.0/oai_dc/
MCR.OAIDataProvider.MetadataFormat.epicur.Schema=http://www.persistent-identifier.de/xepicur/version1.0/xepicur.xsd
MCR.OAIDataProvider.MetadataFormat.epicur.Namespace=urn:nbn:de:1111-2004033116
      

Für jedes Metadatenformat ist außerdem ein XSL-Stylesheet zu erstellen, welches aus dem MyCoRe-Datenmodell das entsprechende Ausgabeformat erzeugt. Im MIR befinden sich beispielhafte Implementierungen für document2oai_dc.xsl und document2epicur.xsl. Diese sind jedoch in der Regel an das eigene Datenmodell anzupassen.

OpenAIRE-Compliance

Damit das Repository OpenAIRE-compliant ist, müssen entsprechend der OpenAIRE-Spezifikation Informationen zum Forschungsprojekt erfasst werden. In der MIR-Anwendung stehen dafür die notwendigen Formular-Templates bereit. Auch sind die nötigen Suchfelder und Stylesheets vorhanden, um ein OpenAIRE-kompatibles DublinCore-Format aus dem MODS zu erzeugen. Wenn man dies nutzen und die OAI-Schnittstelle dafür konfigurieren möchte, sind die nachfolgenden Properties zu setzen. Wobei der obere Block für alle Anwendungen gleich bleiben sollte - hier werden nur die Sets an sich definiert. Der zweite Block zeigt die Solr-Anfragen, mit denen die Sets gebildet werden. Diese sind natürlich stark von den Inhalten abhängig. Das hier gezeigte Beispiel gilt für MODS in der MIR-Anwendung.

MCR.OAIDataProvider.OAI2.Sets=open_access,openaire,driver,ec_fundedresources
MCR.OAIDataProvider.OAI2.Sets.open_access=webapp:oai/set_open_access.xml
MCR.OAIDataProvider.OAI2.Sets.openaire=webapp:oai/set_openaire.xml
MCR.OAIDataProvider.OAI2.Sets.driver=webapp:oai/set_driver.xml
MCR.OAIDataProvider.OAI2.Sets.ec_fundedresources=webapp:oai/set_ec_fundedresources.xml

MCR.OAIDataProvider.OAI2.MapSetToQuery.open_access=((derCount:[1 TO *] AND mods.embargo:[* TO NOW]) OR (derCount:[1 TO *] AND NOT mods.embargo:[* TO *])) AND NOT (mods.rights:"Alle Rechte vorbehalten" OR mods.rights:"All rights reserved")
MCR.OAIDataProvider.OAI2.MapSetToQuery.driver=((derCount:[1 TO *] AND mods.embargo:[* TO NOW]) OR (derCount:[1 TO *] AND NOT mods.embargo:[* TO *])) AND NOT (mods.rights:"Alle Rechte vorbehalten" OR mods.rights:"All rights reserved")
MCR.OAIDataProvider.OAI2.MapSetToQuery.openaire=((derCount:[1 TO *] AND mods.embargo:[* TO NOW]) OR (derCount:[1 TO *] AND NOT mods.embargo:[* TO *])) AND (mods.identifier:info\\:eu-repo/grantAgreement*)
MCR.OAIDataProvider.OAI2.MapSetToQuery.ec_fundedresources=((derCount:[1 TO *] AND mods.embargo:[* TO NOW]) OR (derCount:[1 TO *] AND NOT mods.embargo:[* TO *])) AND (mods.identifier:info\\:eu-repo/grantAgreement*)
      

Hat man auch Forschungsdaten im Repository, könnte das datacite-Format interessant werden, dass OpenAIRE von Daten-Archiven verlangt. Auch hierfür ist für MODS bereits alles vorbereitet. Es müssen nur die nachfolgend spezifizierten properties gesetzt werden, um über die OAI-Schnittstelle auch das oai_datacite-Format auszuliefern.

MCR.OAIDataProvider.OAI2.MetadataFormats=oai_dc,epicur,oai_datacite
MCR.OAIDataProvider.MetadataFormat.oai_datacite.Namespace=http://schema.datacite.org/oai/oai-1.0/
MCR.OAIDataProvider.MetadataFormat.oai_datacite.Schema=http://schema.datacite.org/oai/oai-1.0/oai_datacite.xsd
      

OAI-Validatoren

Es gibt verschiedene Validatoren für die eigene OAI-Schnittstelle. Hier eine kurze Liste bekannter Seiten (Stand 10/2015):

 Robert Stephan, Kathleen Neumann - 2016-02-15