OAI 
Offenes Anbieten von Informationsprodukten
`Ausprobieren`
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?

Die URL, die er hier angibt, ist die sog. Basis-URL seiner Produktionsstätte. An diese Basis hat man wohlformulierte Wünsche anzuhängen, um bestimmte Auskünfte oder Produkte abzurufen. Z.B. sieht das dann so aus: 
   http://www.mecke.de/oai.php?verb=ListSets 

Das Wort "verb" bedeutet hierbei soviel wie "Wunsch". Der hier formulierte Wunsch, verb=ListSets, erbittet die Zusendung einer Liste der bei Mecke erhältlichen Produkte. Anders als bei Agrarerzeugnissen ist jedoch auf diesem Markt auch das Aussehen der Antworten auf solche Anfragen ganz penibel geregelt! Stets muß die Auskunft, die gegeben wird, in genauestens vorgeschriebener Weise mit XML verbrämt sein. Im genannten Beispiel hat die Antwort im Wesentlichen aus XML-Textabschnitten dieser Gestalt zu bestehen: 
<set> 
    <setSpec>obst:pflaumen</setSpec> 
    <setName>Pflaumen</setName> 
</set> 
<set> 
    <setSpec>gemuese:mohrrueben</setSpec> 
    <setName>Möhren</setName> 
</set>
Das sind nur die obligatorischen Dinge, es kann noch allerhand andere Information hinzutreten. Mecke kann in dieser Weise sein Angebot in Gruppen strukturieren (Obst, Gemüse) und seine konkreten Produkte in diese Gruppen einordnen (Pflaumen, Möhren). Sein Nachbar, Datenwirt Fricke, kann es ganz anders machen, nicht aber die Bezeichnungen (XML-"tags") ändern, die zwischen <...> stehen! Seine Basis-URL wird natürlich anders aussehen, z.B.: 
            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, ...). 

Im nächsten Schritt kann der Kunde seine Bestellung aufgeben. Will er Meckes Möhren beziehen, muß seine Bestellung so aussehen: 

   http://www.mecke.de/oai.php?... 
      ...verb=ListRecords&set=gemuese:mohrrueben&from=2008-12-01&metadataFormat=oai_dc 

Hiermit geschieht das eigentliche Ernten, was also in Wirklichkeit ein Abrufen ist und kein physisches Hingehen mit Schmutzigmachen der Hände - das Krümmen des Fingers für die linke Maustaste genügt! Der Kunde ruft bei Mecke das Produkt Möhren ab, und zwar alle ab 2008-12-01 erzeugten Exemplare. Gewünscht wird hier zudem der Verpackungstyp oai_dc. 
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. 

Das ist schon der Kern des OAI-Regulariums! Was sonst noch geregelt ist, steht in 
     `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`. 

Als allegro-Anwender kann man ab V29.0 sowohl per OAI ernten (und damit "Service Provider" werden) als auch selber als OAI-Erzeuger ("Data Provider") an den Markt gehen: 

1. Für das Erkunden und Ernten von OAI-Produkten gibt es ein eigenes Menü mit eigener Hilfe (`h oai`) 

2. Das eigene Angebot wird mittels avanti ins Netz gestellt. Dafür sind einige PHP-Skripte entwickelt worden, die in PHPAC ab V29 enthalten sind. (Verfügbar ab Mitte Januar 2009.) Es gibt bereits seit 2006 eine Implementierung des OAI-Protokolls in Perl, erstellt von Thomas Berger mit seinem "populo"-Paket:
`http://www.gymel.com/populo/oai-pmh.html`. 

?Ausprobieren=h oai 

?http://www.openarchives.org/OAI/openarchivesprotocol.html=~start http://www.openarchives.org/OAI/openarchivesprotocol.html 
?Openarchives.org=~start http://www.openarchives.org/Register/BrowseSites 
?h oai=h oai 
?XML-relevante Funktionen=h vb212 
?http://www.gymel.com/populo/oai-pmh.html=~start http://www.gymel.com/populo/oai-pmh.html