gymel  >> Populo  >> Skripte für OAI-PMH Repositories

OAI-PMH Repositories mit populo

OAI-PMH ist das Protocol for Metadata Harversting der Open Archives Initiative. Die aktuelle Version dieses Protokolls ist Protocol Version 2.0 of 2002-06-14. Frei übersetzt aus der Einleitung der Spezifikation:

OAI-PMH stellt eine Anwendungs-unabhängige Rahmenumgebung für Interoperabilität dar, das auf Metatdata-Harvesting beruht. In dieser Rahmenumgebung gibt es zwei Klassen von Teilnehmern:

Ein OAI-Repository ist nun ein Server oder Dienst des Data Providers, der auf die im Protokoll definierten Anfragen der von den Service-Providern betriebenen Harvester reagiert. Ein OAI-Repository ist (derzeit) nie ein Dienst für Endbenutzer, das Protokoll dient in seiner Grundfunktion dem (blockweisen) Transport der Metadaten aller verfügbaren "Items" vom Repository zum Harvester. Verfeinerungen im Protokoll sind der selektive Transport der Metadaten, die sich in einem vom Harvester spezifizierten Zeitraum geändert haben oder die Einschränkung auf vom Repository definierte Sets, die den Datenbestand sachlich oder formal einschränken. Insbesondere Konzepte wie "Recherche" oder "Verknüpfung" sind völlig ausserhalb der Begriffswelt von OAI-PMH. Transport der Metadaten erfolgt in einem Format, das der Harvester sich aus der Menge der vom Repository unterstützten Formate aussucht, Dublin Core (oai_dc) muss dabei zwingend unterstützt werden um zu gewährleisten, dass Repository und Harvester stets mindestens ein gemeinsames Austauschformat haben.
^Top

Implementierung:

Die Implementierung erfolgt als datenbankabhängiges Perlskript, das Konfigurationsinformation (durch das Protokoll erforderliche Angaben zum Repository, für die Anbindung der konkreten Datenbank benötigte Einstellungen etc.) enthält und populo.pl als Avanti-Client sowie eine weitere Bibliotheksdatei oaipop.pl mit Hilfsfunktionen einbindet. Bei der Verarbeitung von Requests nutzen die Routinen dann populo-Templates für Avanti-Jobs und die diversen Ausgabezustände des Protokolls.

Die typische Vorgehensweise bei der Verarbeitung eines Requests ist, dass in Avanti-Jobs (portionsweise) sämtliche Records der Datenbank geladen und bereits von Avanti daraufhin untersucht werden, ob sie unter den Filterkriterien des aktuellen Requests (Datum "von" bzw. "bis", Zugehörigkeit zu Sets) relevant sind. Derart gefilterte Datensätze werden dann (bis auf den letzten, der als Sicherheitspuffer für die nächste Portion aufbewahrt werden muss) an das Skript zurückgegeben, das dann die Aufbereitung vornimmt oder veranlasst. Sofern die Datenbank geeignet indexiert ist, kann in der Konfigurationsdatei eingetragen werden, wie diese portionsweise "Volltextsuche" durch Avanti- find-Kommandos oder den Einsatz von Restriktionen effizienter gestaltet werden kann. Beim Einsatz von find-Kommandos ist jedoch zu bedenken, dass Avanti auch bei Zwischenergebnissen komplexer Anfragen recht niedrige Limits für die maximale Ergebnismengengrösse hat.

Die untersützte Granularität der Zeitstempel sind Tagesgenaue Daten. Ist die von Avanti genutzte Datenbank nicht die Produktionsdatenbank und wird seltener als täglich aktualisiert, so ist es äusserst wichtig, in der Konfigurationsdatei die Historie sämtlicher Aktualisierungsdaten peinlich genau nachzuführen: Die realen Ersterfassungs- und Änderungsdaten der allegro-Datensätze werden mit dieser Liste sowohl beim Verarbeiten von Requests als auch bei der Präsentation der Ergebnisse in Beziehung gesetzt: Nur so kann im folgenden Ablauf garantiert werden, dass der Datensatz von Dienstag, den der Harvester am Mittwoch noch nicht sehen konnte, ihm am Freitag auf seine Anfrage "alles nach Mittwoch" geliefert wird.
DatumAktion
MontagAvanti-Datenbank wird aktualisiert
DienstagDatensatz wird in der Produktionsdatenbank eingegeben
MittwochHarvester: "Liefere alles bis heute (Mittwoch)"
DonnerstagAvanti-Datenbank wird aktualisiert (Jetzt ist der Satz von Dienstag erstmalig sichtbar)
FreitagHarvester: "Liefere alles von Mittwoch bis heute"

Wird eine komplett reorganisierte Datenbank (bei der sich Satznummen vorhandener Datensätze geändert haben) aktualisiert, so empfiehlt es sich, das Interface anlässlich der Aktualisierung mindestens für die Lebenszeit von Resumption Tokens ($ExpireAfter in der Konfigurationsdatei) stillzulegen, da die Integrität der Folgerequests nicht mehr gewährleistet werden kann.

OAI-PMH hat eine recht breite Definition von "Änderungen" (an einem Datensatz): "[...] changes include, but are not limited to, changes to the metadata of the record, changes to the metadata format of the record, introduction of a new metadata format, termination of support for a metadata format, etc.". In solchen Fällen wird man in der Konfigurationsdatei den Wert $InterfaceDateStamp korrespondierend dem Identify-Element earliesteDatestamp auf das aktuelle Datum setzen müssen.

OAI Sets sind optional ($UseSets = 1) und können explizit in der Konfigurationsdatei angegeben werden, die Demoanbindung oai-cat.cgi enthält Beispiele ($UseFreeSets = 1), wie zusätzlich "Klassen" von Sets direkt über Registerauszüge oder sogar indirekt (unter Rückgriff aus Information in Stammsätzen) generiert werden können. Dies ermöglicht es in vielen Fällen, eine eigene Systematik in (ineinandergeschachtelte) OAI-Sets zu transformieren.

Die Ausgabe der Metadaten erfolgt vorzugsweise durch eine geeignete Parameterdatei (für HANS: e-oai_dc.hpr für Dublin Core und e-hansxml sind Bestandteil der HANS-Distribution und in oai-hans.cgi angebunden; für allegro-NRW: e-mabxml.mpr für Export als MABXML ist verfügbar); dabei muss die Parameterdatei natürlich korrektes XML liefern, das ausserdem den Syntaxvorschriften von OAI-PMH für einzuhägende Fremdformate genügt. Für das vom Protokoll vorgeschriebene (unqualified) Dublin Core unterstützt die Anbindung eine Alternativmethode ohne Parameterdatei: In der Konfigurationsdatei geben Sie zu jedem der relavanten Elemente von Dublin Core jeweils die Avanti-Befehle (etwa "write #20" für title), die diese aus den Kategorien der allegro-Datensätze sinnvoll beschicken.
^Top


Demos:

Avdemo:
"separat": http://avdemo.gymel.com/cgi-bin/oai-avdemo.cgi
"integriert": http://avdemo.gymel.com/cgi-bin/avdemo.pl/oai-pmh/
"shared": http://avdemo.gymel.com/cgi-bin/avdemo_oai-pmh
Unterstützte Metadatenformate: oai_dc
Demodatenbank allegro-HANS:
"separat": http://hansdemo.gymel.com/cgi-bin/oai-hansdemo.cgi
"integriert": http://hansdemo.gymel.com/cgi-bin/hansdemo.pl/oai-pmh/
"shared": http://hansdemo.gymel.com/cgi-bin/oai-pmh
Unterstützte Metadatenformate: oai_dc, hansxml
Demodatenbank allegro-NRW:
http://nrwdemo.gymel.com/cgi-bin/oai-nrwdemo.cgi
Unterstützte Metadatenformate: oai_dc, MABXML

^Top

Installationsvoraussetzungen:

Aktuelle Version: populo OAI v0.9_04 (04.12.2013)

Installation:

Entpacken Sie das Distributionsarchiv populo-oai_n_m.zip unter Erhalt der Unterverzeichnisstruktur in ein CGI-Verzeichnis Ihres Webservers, in das populo.pl installiert ist.

Bauen Sie sich nach dem Muster der drei mitgelieferten Beispielkonfigurationen oai-avdemo.cgi (am vollständigsten kommentiert), oai-hansdemo.cgi (mit Voreinstellungen für allegro-HANS-Datenbanken) bzw. oai-nrwdemo.cgi (mit Voreinstellungen für allegro-NRW-Datenbanken) eine Konfigurationsdatei für Ihre Datenbank, in die Sie

eintragen. oai-minimal.cgi enthält eine Konfiguration (ohne Sets und andere optionale Features), die die absoluten Minimaleinstellungen enthält. Die URL dieser Konfigurationsdatei ist dann die URL Ihres OAI-PMH-Repositories.

Konfiguration

Do's

TBA

Don'ts

Download:

Aktuelle Version:

Diese Version funktioniert mit populo ab v1.21 und aktuellen Avanti-Versionen (v33.5 / Dezember 2013, Grundfunktionalitä möglicherweise ab v29.7).

populo-oai-0.9_04.zip (04.12.2013, 105kB) Enthält die Bibliotheksdatei oaipop.pm sowie ein Unterverzeichnis oai_tpl mit Job- und XML-Templates für populo, ausserdem Beispielinterfaces oai-xxdemo.cgi für die Avanti-Demodatenbank ($A.CFG) sowie die Demodatenbanken von allegro-HANS und allegro-NRW.

Lizensiert unter der GPL v3 oder neuer oder der Artistic License 2.0

Vorige Version:

Diese Version funktioniert mit populo ab v1.16 und äteren Avantis. Die Konfiguration ist inkompatibel zu der der neueren Version.

populo-oai_0_8.zip (23.1.2006, 45kB) Enthält die Bibliotheksdatei oaipop.pl sowie ein Unterverzeichnis oai_tpl mit Job- und XML-Templates für populo, ausserdem Beispielinterfaces oai-xxdemo.cgi für die Avanti-Demodatenbank ($A.CFG) sowie die Demodatenbanken von allegro-HANS und allegro-NRW.

Lizensiert unter der GPL v2

Bugs:

Todo:


^Top

History:

siehe Changes-OAI.txt.


^Top

submit bugs here