|
allegro und OAI Offenes Anbieten von Informationsprodukten |
![]() OAI-Homepage |
|
Mit
a99 ausprobieren : h oai eingeben
Worum
geht es? Die
Open Archives
Initiative (OAI) hat vor Jahr und Tag ein Protokoll proklamiert, mit
dem es ein
Leichtes sein soll, zu ernten, wo andere gesät haben. Das
Erfreuliche an den digitalen
Erzeugnissen ist ja, daß man sie verlustfrei duplizieren
kann: wie oft und wie
viel man auch erntet, nachher ist stets noch genausoviel da wie vorher.
Wenn
also der Datenwirt sein Geld mit anderen Dingen verdient, kann er
sich's bequem
und seinen Grund und Boden für jedermann zugänglich
machen, d.h. alles zum
Abernten freigeben. Wie nun aber das Ernten von Feld- und
Gartenfrüchten nicht
auf x-beliebige Art, sondern mit Vor- und Umsicht nach erprobten
Verfahren zu
erfolgen hat, so sind auch beim digitalen Abernten von
Datenfrüchten strikte
Regeln notwendig, bei deren Nichteinhaltung man leer ausgeht. Die Summe
solcher
Regeln wird "Protokoll" genannt. Das OAI-Protokoll soll demnach als
einheitliches Regularium das ressourcenschonende Beziehen von Daten
über
Unternehmensgrenzen hinweg ermöglichen.
Folgendermaßen muß man sich das Ganze
vorstellen: Ein
Datenerzeuger
(engl. "Data Provider"), nennen wir ihn Mecke, kann digitale
Handzettel verbreiten, auf denen steht:
Selber
ernten bei OAI-Datenwirt
Mecke!
Adresse:
http://www.mecke.de/oai.php?...
http://www.mecke.de/oai.php?verb=ListSets
<set>
http://www.datenfricke.eu/datashop.pl? und
seine Angebotsgruppen (Sets) können ganz andere sein, z.B. formal
gegliedert (Aufsätze, Bücher, ...) oder inhaltlich
(Mathematik, Philosophie, ...). Mecke
und Fricke
können unterschiedliche Verpackungen anbieten, jeder
muß aber auf Verlangen
auch den Standard-Verpackungstyp oai_dc liefern können. Stets
handelt es sich beim Verpackungsmaterial um XML, worauf sich die Datenwirtschaft
international eingeschworen hat. Um damit besser umgehen zu
können, wurden in
der Skriptsprache FLEX ein paar XML-relevante
Funktionen
verbessert (s. Vb.212 und Vb.213). http://www.openarchives.org/OAI/openarchivesprotocol.html
Teillieferungen! Eine
wichtige Frage
dürfen wir nicht vergessen! Und zwar: Was ist, wenn die Menge
zu groß ist für
eine Ladung? Denn die Kapazität eines Transportvehikels ist
immer begrenzt,
eine Auslieferung muß daher in mehreren Teilen erfolgen
können. Folgende
Methode hat man sich dafür ausgedacht: Bei
großen
Ertragsmengen kann der Erzeuger, hier also Mecke, bei einer von ihm
gesetzten
Grenze erst mal Schluß machen. Dann muß er im
Lieferschein ein individuelles
Abruf-Kennwort angeben, den sog. "resumption token", kurz RT. Der
Datenbezieher erkennt an der Anwesenheit dieses Kennworts,
daß die Lieferung
unvollständig ist. Mit dem RT kann er den Rest - oder die
nächste Teillieferung
- abrufen. Ist es wieder nur eine Teillieferung, wird sie
wiederum einen RT -
einen anderen natürlich - enthalten. Ein RT kann mehrfach
verwendet werden, um
exakt dieselbe Teillieferung etwa nach einem Fehlversuch nochmals
abzurufen
(ein sehr großer Unterschied zu Agrarprodukten!). Der
Erzeuger kann die RTs
nach einer von ihm selbst zu setzenden Frist löschen, d.h. der
Endanwender kann
nicht davon ausgehen, nach Jahren noch eine bestimmte Teillieferung
erneut
abrufen zu können - auch Möhren sind nicht unbegrenzt
haltbar... Zur
allegro-Realisierung Eine
Liste der
Basisadressen, ca. 490 an der Zahl, wird zur Auswahl
aufgeblättert, wenn man im
OAI-Menü die Funktion "OAI-Server" wählt. Das
Original der
Liste liegt bei der Openarchives.org .
1.
Für das Erkunden
und Ernten von OAI-Produkten gibt es ein eigenes Menü mit
eigener Hilfe ( h
oai )
Hinweis Seit 2006 gibt es eine Perl-Implementierung des OAI-Protokolls von Thomas Berger: http://www.gymel.com/populo/oai-pmh.html Diese beruht auf dem "populo"-Paket des nämlichen Autors, das bei Anbietern von allegro-Web-Katalogen sehr verbreitet eingesetzt wird. Anwender von PHPAC werden möglicherweise nicht geneigt sein, neben PHP auch noch Perl einzusetzen, daher wurde entschieden, eine eigene Implementierung in PHP auszuarbeiten. |
|
Realisierung Tip: Wer Service Provider werden will, kann in a99 das Menü h oai nutzen, um Repositorien zu erkunden und Metadaten abzuernten. Skripte für OAI Data Provider ============================= Die Skripte müssen auf das PHPAC-Verzeichnis zur Datenbank, wo schon die anderen PHP-Skripte liegen. Für jede Datenbank braucht man also je eine Kopie der Dateien. Erzeugt wird in jedem Fall XML. Wenn man den output im Browserfenster sehen will (sinnvoll zu Testzwecken), dann am besten den IE nehmen, weil er XML brauchbar anzeigt. oai.php Das Skript fuer die Basis-URL. Darin keine Anpassungen nötig. Braucht: av_mini.php : Grundwerte der eigenen Datenbank (PHPAC) oai_ini.php : OAI-Angaben zur eigenen Datenbank oai.php muß mit einem der 6 Verbs und den zugehörigen Argumenten aufgerufen werden. Für jedes Verb gibt es darin eine PHP-Funktion, bis auf oai_id() wird darin jeweils eine JOB-Datei gestartet: Identify : oai_id() ListSets : oai_ls() oai_ls.job ListMetadataFormats : oai_lm() oai_lm.job ListIdentifiers : oai_lr("i") oai_lr.job ListRecords : oai_lr("r") oai_lr.job GetRecord : oai_gr() oai_gr.job oai_ini.php OAI-Angaben zur eigenen Datenbank In diese muß der Data Provider für seine Datenbank die nötigen Angaben eintragen. Interne Kommentare erklären alles. ----------------------------------------------------------------------- Bei der Datenbank (also auf dem DbDIr) müssen diese Dateien liegen: oaidc.apr Export im Format oai_dc oailist.apr Export der Datensatz-Idnummern für die Funktion ListIdentifiers Beide sind intern kommentiert und müssen bei anderen Formaten als $A.CFG geeignet umgeschrieben werden. Test: Mit a99 und dem Menü oai.rtf Vorher setzen: $Serv LOCAL $Burl http://localhost/<path>/oai.php dann h oai Zum Thema "Resumption Token" (RT) ---------------------------------- Was ist ein RT? Bei großen Ergebnismengen kann der OAI-Service bei einer vom Admin zu setzenden Grenze erst mal Schluß machen. Dann muß er im gelieferten Datenpaket ein individuelles Kennwort mitliefern, den sog. RT Der Endanwender merkt an der Anwesenheit dieses Kennworts, daß die Lieferung unvollständig ist. Mit dem Kennwort kann er den Rest - oder die nächste Teillieferung - abrufen. Ist es eine Teillieferung, muß sie wiederum einen RT - einen anderen natürlich - enthalten. Ein RT kann mehrfach verwendet werden, um dieselbe Teillieferung etwa nach einem Fehlversuch nochmals abrufen zu können. Der Admin kann die RTs nach einer von ihm selbst zu setzenden Frist löschen, d.h. der Endanwender kann nicht davon ausgehen, nach Jahren noch eine bestimmte Teillieferung erneut abrufen zu können... Realisierung Für die RTs zu einer Datenbank wird an das DbDir ein Unterverzeichnis "rt" angehängt. "avanti" braucht dort Schreibzugriff. Ein RT ist dann der Name einer Datei, die auf DbDir/rt liegt. Der Dateiname ergibt sich aus dem momentanen Datum+Uhrzeit, und zwar allein aus den Ziffern, z.B. 20090201135622. Das dürfte als Dateiname sowohl eindeutig wie auch einfach sein. Die Namensstruktur ermöglicht auch ein schnelles Sichten und vor allem Löschen alter Dateien. Was enthält eine RT-Datei? Es handelt sich dabei um eine Liste der internen Satznummern aller Sätze, die noch nicht ausgeliefert wurden. Hatte also die erste Erg.Menge 10000 Sätze und hat der Admin entschieden, daß jeweils mit 500 Sätzen erstmal Schluß ist, dann enthält die erste solche Datei die restlichen 9500 Nummern, die zweite nur noch 9000 Nummern usw. Die erste Zeile einer RT-Datei enthält folgende Angaben: anfang-ende (ErstellDatum) : Suchbefehl z.B. 501-10000 (2009-01-31) : 2008-01-01 bis 2008-12-31 ACHTUNG Ein Neuaufbau der Datenbank macht die RT-Dateien ungültig! WENN der Admin einen Neuaufbau veranstaltet, muß er die zu dem Zeitpunkt vor- liegenden RT-Dateien alle löschen und eine "Sorry"-Meldung senden, wenn jemand noch eine davon abrufen will. |
2009-01-29