Az Open Archives Initiative Metaadatgyűjtési Protokollja

Magyar fordítás verziója: 1.0, 2004-05-11

Magyarra fordította:   Kiss Gergő <gergo.kiss@sztaki.hu>
MTA SZTAKI Elosztott Rendszerek Osztály
1111 Budapest, Lágymányosi u. 11.
tel: +36 1 279-6212, fax: +36 1 209-5288

A dokumentum eredeti, angol nyelvű változata:
http://www.openarchives.org/OAI/2.0/openarchivesprotocol.htm

Protokollverzió: 2.0, 2002-06-14

Előző protokollverzió: 1.1, 2001-07-02
Áttérési instrukciók az 1.1 verzióról a 2.0-ra
Implementaciós útmutatók

Szerkesztők

OAI-vezetőség:
Carl Lagoze <lagoze@cs.cornell.edu > -- Cornell University - Computer Science
Herbert Van de Sompel <herbertv@lanl.gov > -- Los Alamos National Laboratory - Research Library

Az OAI Technical Committee részéről:
Michael Nelson <m.l.nelson@larc.nasa.gov > -- NASA - Langley Research Center
Simeon Warner <simeon@cs.cornell.edu > -- Cornell University - Computer Science

Fordította

Kiss Gergő <gergo.kiss@sztaki.hu> MTA SZTAKI - Elosztott Rendszerek Osztály

Tartalomjegyzék

1. Bevezetés
2. Definíciók és fogalmak
   2.1. Metaadatgyűjtő
   2.2. Adattár
   2.3. Tétel
   2.4. Egyedi azonosító
   2.5. Rekord
   2.6. Halmaz
   2.7. Szelektív gyűjtés
      2.7.1 Időintervallum-alapú szelektív gyűjtés, időbélyegek
      2.7.2 Halmaz-alapú szelektív gyűjtés
3. Protokolljellemzők
   3.1 Az OAI-PMH kérések beágyazása a HTTP protokollba
       3.1.1. A HTTP kérés formátuma
       3.1.2. A HTTP válasz formátuma
       3.1.3. A válaszok tömörítése
   3.2. Az XML válasz formátuma
       3.2.1. XML séma az OAI-PMH kérésekre adott válaszok szintaxisellenőrzéséhez
   3.3. Az UTCdatetime időbélyegformátum
       3.3.1. UTCdatetime időbélyegek a protokollkérésekben
       3.3.2. UTCdatetime időbélyegek a protokollválaszokban
   3.4. metadataPrefix-ek és metaadatsémák
   3.5. Folyamatvezérlés
       3.5.1 A resumptionToken-ek idempotenciája
   3.6. Hiba- és kivételhelyzetek
4. A protokollparancsok és -válaszok
   4.1. GetRecord
   4.2. Identify
   4.3. ListIdentifiers
   4.4. ListMetadataFormats
   4.5. ListRecords
   4.6. ListSets
5. Dublin Core
6. Implementációs útmutatók
Köszönetnyilvánítás
A dokumentum előtörténete
Szójegyzék a magyar fordításhoz

1. Bevezetés

Az Open Archives Initiative Metaadatgyűjtő Protokollja (Open Archives Initiative Protocol for Metadata Harvesting, OAI-PMH) egy alkalmazásfüggetlen együttműködési keretrendszer, amely metaadatok (metaadatrekordok) begyűjtésén alapul. Az OAI-PMH keretrendszerben a résztvevők két osztályba sorolhatók:

Jelen dokumentum a protokoll előírásait a félkövérrel szedett "kell", "nem szabad", "javasolt", "nem javasolt", "opcionális" szavak, illetve bizonyos magyar igék félkövérrel szedett feltételes módú (állító vagy tagadó) alakja -- pl. "tartalmazhat", "lehet", "nem használható" -- fejezi ki. Ezen előírások az RFC 2119 ajánlásban foglaltaknak megfelelően értelmezendők, a következő nyelvi megfeleltetés szerint: "kell" angolul "must"; "nem szabad", tagadó feltételes módú ige angolul "must not"; "javasolt" angolul "should"; "nem javasolt" angolul "should not"; "opcionális", állító feltételes módú ige angolul "optional", "may". Egy implementáció nem felel meg a protokollnak, ha egy vagy több "kell" szintű követelménynek nem tesz eleget.

E dokumentum több olyan gyakorlatra tesz utalást, amely "közösségspecifikus", tehát egy adott közösségre jellemző; az ilyen gyakorlatokhoz való igazodás opcionális. Ezekről a gyakorlatokról az egyik Implementációs útmutatóban olvasható bővebb leírás.

Bizonyos, a magyar fordításban használt kifejezésekhez az utolsó fejezetben magyarázat olvasható. E kifejezések első előfordulásai mellett egy-egy lábjegyzet-szám mutat a megfelelő magyarázatra.

2. Definíciók és fogalmak

2.1 Metaadatgyűjtő1

A metaadatgyűjtő egy kliensalkalmazás, amely OAI-PMH kéréseket ad ki. A metaadatgyűjtőt a szolgáltatásgazda működteti abból a célból, hogy a metaadatokat az adattárakból begyűjtse.

2.2 Adattár2

Az adattár egy hálózaton elérhető szerver, amely képes kiszolgálni a 6-féle OAI-PMH kérést a jelen dokumentumban leírtaknak megfelelő módon. Az adattárat az adatgazda működteti, hogy metaadatait elérhetővé tegye a metaadatgyűjtők számára. Változatos adattár-konfigurácók kialakítása céljából az OAI-PMH három, a metaadatokhoz kapcsolódó entitást különböztet meg:

2.3 Tétel

A tétel az erőforrás reprezentációja az adattárban, amely alapján az adattár metaadatrekordot képes küldeni az erőforrásról. Fogalmilag egy olyan entitás, amely az erőforrásról szóló (a szóba jövő formátumokban megfogalmazott) metaadatrekordokat tárolja ill. képes dinamikusan legenerálni. Az így rendelkezésre álló metaadatrekordok begyűjthetők az OAI-PMH útján. Mindegyik tétel egy azonosítóval rendelkezik, amely azon az adattáron belül egyedi.

A tétel nem egyezik meg az erőforrással, de reprezentálja azt, ezért a protokollspecifikáció magyar nyelvű változatában -- az egyszerűbb fogalmazás kedvéért -- gyakran egyszerűen csak a "tétel" szót használjuk a "tétel által képviselt erőforrás" helyett.

2.4 Egyedi azonosító

Az egyedi azonosító egyértelműen azonosít egy tételt az adattáron belül; ezzel az azonosítóval hivatkoznak az OAI-PMH kérések is arra a tételre, amelyről metaadatot kívánnak kapni. A tételek többféle formátumban is tárolhatják (ill. lehetnek képesek legenerálni) a metaadatrekordokat. Az egyedi azonosító a tételre irányul, és az összes rekord, amely egy tételre vonatkozóan lekérhető, is hordozza ugyanazt az azonosítót.

Az egyedi azonosító szintaxisa meg kell hogy feleljen az URI (Uniform Resource Identifier) szintaxisának. Egy közösség kidolgozhat egy saját URI sémát, amellyel a közösségen belül használt azonosítók formátumát szabályozza. Az azonosítók séma-komponense nem szabad, hogy megegyezzen valamely ismert URI-sémáéval (pl. http:), kivéve, ha az ilyen azonosítók működése tényleg megfelel annak a sémának (tehát pl. a http: kezdetű azonosítók valóban érvényes URI-ként kezelhetők a HTTP protokollban). Az adattárak implementálhatják az oai-identifier szintaxist, melynek leírása a megfelelő Implementációs útmutatóban olvasható.

Az egyedi azonosítók a protokollban kétféle szituációban fordulnak elő:

  1. válaszban: mind a ListIdentifiers, mind a ListRecords kérésre adott válaszban megkapjuk a kérésnek megfelelő azonosítókat;
  2. kérésben: a GetRecord kérésben egy azonosító egy metadataPrefix-szel kombinálva valamely tétel egy konkrét metaadatformátumú rekordjának lekérésére használható.

Felhívjuk a figyelmet, hogy az itt tárgyalt azonosító nem az erőforrásra vonatkozik. Az erőforrások természetével az OAI-PMH nem foglalkozik. Hogy az adattárak mégis biztosítsanak valamilyen hozzáférést a metaadatrekord által jellemzett erőforráshoz (hogy kapcsolatot teremtsenek egyfelől a rekord ill. a tétel, másfelől az erőforrás között), javasolt kinevezniük a metaadatrekord valamelyik mezőjét az erőforrásra vonatkozó azonosító (URL, URN, DOI stb.) céljára. Az OAI-PMH-implementációkban kötelezően támogatandó Dublin Core metaadatformátum az identifier mezőt biztosítja erre a célra. Az implementációknak is javasolt ezt a mezőt használniuk ezen metaadatformátum esetében.

2.5 Rekord

Az OAI-PMH-ban a rekord egy tétel valamely konkrét formátumban (pl. Dublin Core) megfogalmazott metaadatrekordja. XML kódolású byte-sorozat, amelyet az adattár a protokollkérésre válaszként elküld, hogy az adott tételről egy adott formátumban metaadatot szolgáltasson. A rekordot egyértelműen azonosítja a következő 3 dolog együttesen: azon tétel egyedi azonosítója, amelyről a konkrét metaadatformátumú rekordot kiállították, egy metadataPrefix, amely a rekord metaadatformátumát jelöli, és a rekord időbélyege. Egy rekord XML-kódja a következő részekre tagolódik:

Az alábbi példa egy lehetséges rekord összetételét mutatja be, XML-kódjával együtt:

<header>
    <identifier>oai:arXiv.org:cs/0112017</identifier>
    <datestamp>2002-02-28</datestamp>
    <setSpec>cs</setSpec>
    <setSpec>math</setSpec>
</header>
<metadata>
 <oai_dc:dc 
     xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" 
     xmlns:dc="http://purl.org/dc/elements/1.1/" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ 
     http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
   <dc:title>Using Structural Metadata to Localize Experience of Digital 
             Content</dc:title>
   <dc:creator>Dushay, Naomi</dc:creator>
   <dc:subject>Digital Libraries</dc:subject>
   <dc:description>With the increasing technical sophistication of both 
    information consumers and providers, there is increasing demand for 
    more meaningful experiences of digital information. We present a 
    framework that separates digital object experience, or rendering, 
    from digital object storage and manipulation, so the
    rendering can be tailored to particular communities of users. 
   </dc:description>
   <dc:description>Comment: 23 pages including 2 appendices, 
                   8 figures</dc:description>
   <dc:date>2001-12-14</dc:date>
   <dc:type>e-print</dc:type>
   <dc:identifier>http://arXiv.org/abs/cs/0112017</dc:identifier>
 </oai_dc:dc>
</metadata>
<about> 
 <provenance
     xmlns="http://www.openarchives.org/OAI/2.0/provenance" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/provenance
     http://www.openarchives.org/OAI/2.0/provenance.xsd">
    <originDescription harvestDate="2002-02-02T14:10:02Z" altered="true">
      <baseURL>http://the.oa.org</baseURL>
      <identifier>oai:r2.org:klik001</identifier>
      <datestamp>2002-01-01</datestamp>
      <metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</metadataNamespace>
    </originDescription>
  </provenance>
</about>

2.6 Halmaz4

A halmaz (set) egy opcionális csoportosítási módszer, amely alapján szelektív gyűjtés végezhető. Az adattárak a tételeiket opcionálisan halmazokba szervezhetik. A halmazstruktúra lehet egyszintű -- mint pl. egy egyszerű lista -- vagy hierarchikus. Ugyanabban a halmazstruktúrában több, egymástól független, saját gyökérrel rendelkező hierarchia is létezhet. A halmazok hierarchiája a protokollban az alább részletezett setSpec paraméterek szintaxisában jut kifejezésre. Ha egy adattár a tételeit halmazokba szervezte, a ListIdentifiers, ListRecords és GetRecord kérésekre adott válaszában fel kell tüntetnie a tételek halmazbeli hovatartozását.

Egy adattár halmazstruktúrájának (-hierarchiájának) csomópontjai (a halmazok) a következő leírókkal rendelkeznek:

A következő példa egy lehetséges halmazhierarchiát mutat be:

E halmazhierarchia leírható pl. az alábbi setName és setSpec jelzőkkel:

setName setSpec
Intézmények intezmeny

Budapesti Műszaki Egyetem

intezmeny:bme

Eötvös Lóránd Tudományegyetem

intezmeny:elte
Témakörök temakor

evolúciós pszichológia

temakor:evopszicho

kvantitatív fiziológia

temakor:kfiziologia

Egy tétel tartozhat egyetlen halmazhoz, egyszerre többhöz, vagy egyhez sem. A tételek egy halmazhierarchia belső (nem levél-) csomópontjaihoz is hozzá lehetnek rendelve. A fenti példában elképzelhető, hogy egy adott elem a temakor és az intezmeny:elte halmazoknak egyaránt eleme. Egy metaadatgyűjtőnek nem javasolt azt feltételeznie, hogy az összes halmaz összes tagjának begyűjtésével az adattár valamennyi tételét (illetve a róluk szóló rekordokat) megkapja.

Egy halmaz vagy egy halmaz-elrendezés tényleges jelentésével, értelmezésével a protokoll nem foglalkozik. Az egyes közösségek kialakíthatnak jól definiált halmazkonfigurációkat, egyezményes szókinccsel szabályozhatják a setName és setSpec paraméterek értékkészletét, és kidolgozhatnak mechanizmust arra, hogy mindezt a metaadatgyűjtők számára láthatóvá tegyék. Tehát pl. egy azonos témakörben együttműködő e-archívumokból álló közösség tagjai megállapodhatnak egy közös osztályozási rendszer (hierarchia) használatában.

Egy adattár halmazhierarchiája a protokollban a setSpec-eken keresztül nyilvánul meg. A ListSets parancsra az adattár egy olyan listát ad vissza, amely bemutatja az adattár halmazstruktúrát. E listának minden tagja egy setSpec-et és egy setName-et kell, hogy tartalmazzon, és opcionálisan tartalmazhat egy setDescription-t. A ListRecords és ListIdentifiers kérések tartalmazhatnak egy set argumentumot (melynek értéke setSpec formátumú), ezzel megadható egy célhalmaz a szelektív gyűjtéshez. Az előző példában felvázolt halmazhierarchiában pl. a set=intezmeny:bme szűkítő argumentum azt eredményezi, hogy a válasz csak olyan tételekhez tartozó rekordokat tartalmazzon, melyek e halmaznak elemei. Itt négy dolgot kell megjegyezni:

2.7 Szelektív gyűjtés

A szelektív gyűjtéssel a metaadatgyűjtőknek módjukban áll, hogy a metaadatgyűjtést az adattár metaadatkészletének egy részére korlátozzák. Az OAI-PMH kétféle kritériumot biztosít erre a célra, amelyek egy OAI-PMH kérésben kombinálhatók is: időintervallumok és halmazbeli tagság.

2.7.1 Időintervallum-alapú szelektív gyűjtés, időbélyegek

A metaadatgyűjtők megadhatnak időbélyegeket, amelyekkel a gyűjtést azon rekordok halmazára korlátozhatják, melyek az így megadott időintervallumban kerültek létrehozásra, törlésre vagy módosításra. Az időintervallum az opcionális from és until argumentumokkal adható meg a ListRecords és ListIdentifiers kérésekben. A gyűjtés ennek hatására a megadott tartományra fog korlátozódni. from elhagyása az adattárban található legkorábbi időbélyegig, until elhagyása a legkésőbbi időbélyegig terjeszti ki a tartományt. Az időbélyegkorlátok inkluzívak: from-ot úgy kell érteni, "nem korábbi, mint", until-t úgy kell érteni, "nem későbbi, mint". Ebből következően a from argumentum értéke nem lehet nagyobb, mint a until argumentumé. Eltérő esetben az adattárnak egy badArgument hibajelzést kell adnia.

Az adattáraknak lehetővé kell tenniük a nap pontosságú időintervallumra való szelektív gyűjtést. A másodperc pontosságú időintervallum támogatása opcionális; amennyiben az adattár ezt támogatja, ebbéli képességét az Identify kérésre adott válaszában jelezze. Az időbélyegeknek a kérésekben és a válaszokban egyaránt igazodniuk kell az UTC datetime formátumhoz, melynek leírása jelen dokumentumban olvasható. Az adattárnak frissítenie kell egy rekord időbélyegét, amennyiben egy olyan változás történt, amely az XML-kódolású rekord metadata részét érinti. Néhány példa ilyen változásra: változás a rekord metaadataiban, változás a rekord metaadatformátumában, új metaadatformátum felvétele az adott rekordhoz, meglévő metaadatformátum megszűnése az adott rekord esetében.

Az időintervallumok az opcionális from és until argumentumokkal adhatók meg a ListRecords és ListIdentifiers kérésekben, melynek hatására az adattár csak a megfelelő rekordokat (ill. rekordfejléceket) emeli be a válaszába. A következő változások relevánsak az időintervallum-alapú szelektív gyűjtés szempontjából:

A GetRecord, ListRecords és ListIfentifiers kérésekre adott válaszokban minden header résznek tartalmaznia kell egy időbélyeget, melynek értéke az adott rekord létrehozási, módosítási és törlési időpontjai közül a legkésőbbi kell, hogy legyen.

2.7.2 Halmaz-alapú szelektív gyűjtés

A metaadatgyűjtők megadhatnak egy halmaztagsági kritériumot is. A halmaz-alapú szelektív gyűjtésre az opcionális set argumentum használható a ListRecords és ListIdentifiers kérésekben, melynek hatására az adattár csak a megadott halmazhoz tartozó tételek rekordjait fogja válaszként visszaadni. Az argumentum értéke setSpec típusú.

Ha a kérésben a set argumentum meg van adva, a válasznak tartalmaznia kell

3. A protokoll jellemzői

3.1 Az OAI-PMH kérések beágyazása a HTTP protokollba

Az OAI-PMH kérések HTTP kérések formájában kerülnek kifejezésre. Egy tipikus implementáció egy közönséges webszervert használ, amely az OAI-PMH kéréseket a megfelelő, azokat kezelni tudó szoftvernek továbbítja. E fejezet a protokollnak a HTTP-be való ágyazását részletezi.

3.1.1 A HTTP kérés formátuma

Az OAI-PMH kéréseket a HTTP GET vagy POST metódusát használva kell kiadni. A POST metódusnak megvan az az előnye, hogy nem tartalmaz korlátozást az argumentumok terjedelmére vonatkozóan. Az adattáraknak a GET és POST metódusokat egyaránt támogatniuk kell. A kérések egy közös alap-URL-lel rendelkeznek, amely megadja a webszerver nevét, a használandó portot, és opcionálisan egy elérési útvonalat az adattár számára. Az adattáraknak az Identify kérésre adott válaszukban fel kell tüntetniük ezt az alap-URL-t, melynek neve baseURL. Megjegyzés: az elérési útvonal összetétele a HTTP szerver konfigurációjától függ.

Az alap-URL-en kívül a kérések név=érték argumentumokat tartalmaznak, melyek sorrendje tetszőleges. Ezeket egymástól & szimbólumokkal kell elválasztani. Minden OAI-PMH kérésnek, amelyet a metaadatgyűjtő kiad, tartalmaznia kell legalább a következő név=érték párt:

A további név=érték párok száma és mibenléte már a konkrét parancstól függ.

3.1.1.1 Egy OAI-PMH kérés összeállítása egy URL-ben, HTTP GET metódusban

A GET metódusú kérésekben a név=érték párok az alap-URL toldalékaként jelennek meg, attól egy kérdőjellel [?] elválasztva. Például egy GetRecord kérés URL-je, amelyet a http://an.oa.org/OAI-script alap-URL-lel rendelkező adattárhoz intéztek, a következőképpen festhet:
http://an.oa.org/OAI-script?
verb=GetRecord&identifier=oai:arXiv.org:hep-th/9901001&metadataPrefix=oai_dc

Mivel azonban a speciális karaktereket az URI-kban kódolni kell, a fenti URL helyes formája:

http://an.oa.org/OAI-script?
verb=GetRecord&identifier=oai%3AarXiv.org%3Ahep-th%2F9901001&metadataPrefix=oai_dc

3.1.1.2 Egy OAI-PMH kérés összeállítása HTTP POST metódusban

Ebben az esetben a név=érték párok a HTTP POST üzenet törzsrészében találhatók. A kérés Content-Type-ja application/x-www-form-urlencoded kell, hogy legyen. A fenti kérés POST metódusú megfogalmazásában az URL az adattár baseURL-je- A teljes üzenet az alábbi:

POST http://an.oa.org/OAI-script HTTP/1.0
Content-Length: 82
Content-Type: application/x-www-form-urlencoded

verb=GetRecord&identifier=oai%3AarXiv.org%3Ahep-th%2F9901001&metadataPrefix=oai_dc

3.1.1.3 Speciális karakterek kódolása az OAI-PMH kérések név=érték argumentumaiban

Az URI-k szintaxis-szabályai néhány karakterhez speciális jelentést rendelnek; ezeket a karaktereket, ha eredeti jelentésükben akarjuk használni őket, megfelelően be kell kódolni. A kód egy százalékjel [%] és utána egy kétjegyű hexadecimális szám. A fenntartott karakterek (és kódjaik) többek között a következők:

Karakter
URI szerep (angolul)
Kód
/
Path Component Separator
%2F
?
Query Component Separator
%3F
#
Fragment Identifier
%23
=
Name/Value Separator
%3D
&
Argument Separator in Query Component
%26
:
Host Port Separator
%3A
;
Authority Namespace Separator
%3B
Space Character
%20
%
Escape Indicator
%25
+
Escaped Space
%2B

Ezeket a karaktereket tehát a kódjukkal kell szerepeltetni, hacsak nem a speciális URI jelentésükre van szükségünk. Az OAI-PMH esetében ez annyit jelent, hogy a név=érték párok érték részében előforduló speciális karaktereket kódolni kell. Ez a GET és POST metódusú OAI-PMH kérésekre egyaránt vonatkozik.

3.1.2 A HTTP válasz formátuma

Az OAI-PMH válaszok HTTP válaszok, a megfelelő HTTP fejlécmezőkkel.

3.1.2.1 Content-Type

A válaszok Content-Type-ja text/xml kell, hogy legyen.

3.1.2.2 Status-Code

Az OAI-PMH hibajelzések a HTTP státuszkódoktól (Status-Code) különválnak. Mivel az OAI-PMH a HTTP-t használja szállítási rétegként, az OAI-PMH-t implementáló szervereknek igazodniuk kell a HTTP státuszkód-definíciókhoz, és a HTTP szállítási réteg státuszkódjait a megfelelő helyzetekben fel kell tüntetniük. Az OAI-PMH adattárak opcionálisan alkalmazhatják a "200 OK" jelzésen kívüli HTTP státuszkódokat is. Például terheléselosztás céljára hasznosak lehetnek a következő HTTP státuszkódok:

3.1.3 A válaszok tömörítése

A válaszok tömörítése az OAI-PMH opcionális. A tömörítés a HTTP szintjén történik, a következő megkötésekkel:

3.2. Az XML válasz formátuma

Minden, OAI-PMH kérésre visszaadott válasznak szintaxishelyes XML dokumentumnak kell lennie. Az XML dokumentum karakterkódolása a Unicode UTF-8 reprezentációja kell, hogy legyen. Numerikus karakterreferenciákat (pl. &#241;) kell használni, nem pedig entitásreferenciákat (pl. &ntilde;). Az így előállított XML dokumentumok nem függenek külső entitásdeklarációktól.

Minden, OAI-PMH kérésre visszaadott XML dokumentumnak meg kell felelnie az ezen fejezet végén ismertetett XML sémának. Amint az az említett sémából kitűnik, az OAI-PMH kérésekre adott válaszok az alábbi közös vázzal rendelkeznek:

  1. Az első elem egy XML deklaráció, melyben version mindig 1.0, és encoding mindig UTF-8, tehát pl.: <?xml version="1.0" encoding="UTF-8" ?>;
  2. A fennmaradó rész egyetlen gyökér szintű elemből áll, melynek neve OAI-PMH. Ennek az elemnek három attribútuma kell, hogy legyen, amelyek a válaszban használt XML névtereket és a szintaxisellenőrző sémát definiálják:
  3. A gyökérelem első két gyereke minden válasz esetén:
  4. A gyökérelem harmadik gyermeke az alábbi kettő egyike:

Példaként íme egy sikeres válasz a fent összeállított GetRecord kérésre:

<?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>2002-05-01T19:20:30Z</responseDate>
 <request verb="GetRecord" identifier="oai:arXiv.org:hep-th/9901001"
          metadataPrefix="oai_dc">http://an.oa.org/OAI-script</request> 
 <GetRecord>
   <record>...</record>
 </GetRecord> 
</OAI-PMH>

3.2.1 XML séma az OAI-PMH kérésekre adott válaszok szintaxisellenőrzéséhez

<schema targetNamespace="http://www.openarchives.org/OAI/2.0/" 
        xmlns:oai="http://www.openarchives.org/OAI/2.0/" 
        xmlns="http://www.w3.org/2001/XMLSchema" 
        elementFormDefault="qualified" 
        attributeFormDefault="unqualified">

<annotation>
  <documentation>
     XML Schema which can be used to validate replies 
     to all OAI-PMH v.2.0 requests. 
     Herbert Van de Sompel. May 13th 2002.
     Validated with XML Spy v.4.3 on May 13th 2002.
     Validated with XSV 1.203.2.45/1.106.2.22 
     of 2002/01/11 16:40:28 on May 13th 2002.
   </documentation>
</annotation>

<element name="OAI-PMH" type="oai:OAI-PMHtype"/>
  <complexType name="OAI-PMHtype">
    <sequence>
      <element name="responseDate" type="dateTime"/>
      <element name="request" type="oai:requestType"/>
      <choice>
        <element name="error" type="oai:OAI-PMHerrorType" 
                 maxOccurs="unbounded"/>
        <element name="Identify" type="oai:IdentifyType"/>
        <element name="ListMetadataFormats" 
                 type="oai:ListMetadataFormatsType"/>
        <element name="ListSets" type="oai:ListSetsType"/>
        <element name="GetRecord" type="oai:GetRecordType"/>
        <element name="ListIdentifiers" type="oai:ListIdentifiersType"/>
        <element name="ListRecords" type="oai:ListRecordsType"/>
      </choice>
    </sequence>
  </complexType>  

  <!-- define requestType, 
       indicating the protocol request that led to the response -->
  <!-- element content is BASE-URL, 
       attributes are arguments of protocol request, 
       attribute-values are values of arguments of protocol request -->
  <!-- ============================================================= -->

    <complexType name="requestType">
      <simpleContent>
        <extension base="anyURI">
          <attribute name="verb" type="oai:verbType" use="optional"/>
          <attribute name="identifier" type="oai:identifierType" 
                     use="optional"/>
          <attribute name="metadataPrefix" type="oai:metadataPrefixType" 
                     use="optional"/>
          <attribute name="from" type="oai:UTCdatetimeType" 
                     use="optional"/>
          <attribute name="until" type="oai:UTCdatetimeType" 
                     use="optional"/>
          <attribute name="set" type="oai:setSpecType" use="optional"/>
          <attribute name="resumptionToken" type="string" 
                     use="optional"/>
        </extension>
      </simpleContent>
    </complexType>

  <simpleType name="verbType">
    <restriction base="string">
      <enumeration value="Identify"/>
      <enumeration value="ListMetadataFormats"/>
      <enumeration value="ListSets"/>
      <enumeration value="GetRecord"/>
      <enumeration value="ListIdentifiers"/>
      <enumeration value="ListRecords"/>
    </restriction>
  </simpleType>

  <!-- define OAI-PMH error conditions -->
  <!-- =============================== -->

  <complexType name="OAI-PMHerrorType">
    <simpleContent>
      <extension base="string">
        <attribute name="code" type="oai:OAI-PMHerrorcodeType" 
                   use="required"/>
      </extension>
    </simpleContent>
  </complexType>

  <simpleType name="OAI-PMHerrorcodeType">
    <restriction base="string">
      <enumeration value="cannotDisseminateFormat"/>
      <enumeration value="idDoesNotExist"/>
      <enumeration value="badArgument"/>
      <enumeration value="badVerb"/>
      <enumeration value="noMetadataFormats"/>
      <enumeration value="noRecordsMatch"/>
      <enumeration value="badResumptionToken"/>
      <enumeration value="noSetHierarchy"/>
    </restriction>
  </simpleType>

  <!-- define OAI-PMH verb containers -->
  <!-- ============================== -->
  <!-- define Identify container -->

  <complexType name="IdentifyType">
    <sequence>
      <element name="repositoryName" type="string"/>
      <element name="baseURL" type="anyURI"/>
      <element name="protocolVersion">
        <simpleType>
          <restriction base="string">
            <enumeration value="2.0"/>
          </restriction>
        </simpleType>
      </element>
      <element name="adminEmail" type="oai:emailType" 
               maxOccurs="unbounded"/>
      <element name="earliestDatestamp" type="oai:UTCdatetimeType"/>
      <element name="deletedRecord" type="oai:deletedRecordType"/>
      <element name="granularity" type="oai:granularityType"/>
      <element name="compression" type="string" 
               minOccurs="0" maxOccurs="unbounded"/>
      <element name="description" type="oai:descriptionType" 
               minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <!-- define ListMetadataFormats container -->

  <complexType name="ListMetadataFormatsType">
    <sequence>
      <element name="metadataFormat" type="oai:metadataFormatType" 
               maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <!-- define ListSets container -->

  <complexType name="ListSetsType">
    <sequence>
      <element name="set" type="oai:setType" maxOccurs="unbounded"/>
      <element name="resumptionToken" type="oai:resumptionTokenType" 
               minOccurs="0"/>
    </sequence>
  </complexType>

  <!-- define GetRecord container -->

  <complexType name="GetRecordType">
    <sequence>
      <element name="record" type="oai:recordType"/>
    </sequence>
  </complexType>

  <!-- define ListRecords container -->

  <complexType name="ListRecordsType">
    <sequence>
      <element name="record" type="oai:recordType" 
               maxOccurs="unbounded"/>
      <element name="resumptionToken" type="oai:resumptionTokenType" 
               minOccurs="0"/>
    </sequence>
  </complexType>

  <!-- define ListIdentifiers container -->

  <complexType name="ListIdentifiersType">
    <sequence>
      <element name="header" type="oai:headerType" 
               maxOccurs="unbounded"/>
      <element name="resumptionToken" type="oai:resumptionTokenType" 
               minOccurs="0"/>
    </sequence>
  </complexType>

  <!-- define basic types used in replies to 
         GetRecord, ListRecords, ListIdentifiers -->
  <!-- ======================================= -->

  <!-- define recordType -->
  <!-- a record has a header, a metadata part, and 
       an optional about container -->

  <complexType name="recordType">
    <sequence>
      <element name="header" type="oai:headerType"/>
      <element name="metadata" type="oai:metadataType" minOccurs="0"/>
      <element name="about" type="oai:aboutType" 
               minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <!-- define headerType -->
  <!-- a header has a unique identifier, a datestamp, 
        and setSpec(s) in case the item from which 
        the record is disseminated belongs to set(s).  
        the header can carry a deleted status indicatating
        that the record is deleted. -->

  <complexType name="headerType">
    <sequence>
      <element name="identifier" type="oai:identifierType"/>
      <element name="datestamp" type="oai:UTCdatetimeType"/>
      <element name="setSpec" type="oai:setSpecType" 
               minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <attribute name="status" type="oai:statusType" use="optional"/>
  </complexType>

  <!-- define identifierType -->

  <simpleType name="identifierType">
    <restriction base="anyURI"/>
  </simpleType>

  <simpleType name="statusType">
    <restriction base="string">
      <enumeration value="deleted"/>
    </restriction>
  </simpleType>

  <!-- define metadataType -->
  <!-- metadata must be expressed in XML that complies 
       with another XML Schema -->
  <!-- metadata must be explicitly qualified in the response -->

  <complexType name="metadataType">
    <sequence>
      <any namespace="##other" processContents="strict"/>
    </sequence>
  </complexType>

  <!-- define aboutType -->
  <!-- data "about" the record must be expressed in XML -->
  <!-- that is compliant with an XML Schema defined by a community -->

  <complexType name="aboutType">
    <sequence>
      <any namespace="##other" processContents="strict"/>
    </sequence>
  </complexType>

  <!-- define resumptionToken - with 3 optional attributes 
       can be used in ListSets, ListIdentifiers, ListRecords -->

    <complexType name="resumptionTokenType">
      <simpleContent>
        <extension base="string">
          <attribute name="expirationDate" type="dateTime" 
                     use="optional"/>
          <attribute name="completeListSize" type="positiveInteger" 
                     use="optional"/>
          <attribute name="cursor" type="nonNegativeInteger" 
                     use="optional"/>
        </extension>
      </simpleContent>
    </complexType>

  <!-- define descriptionType used for description-element in Identify 
        and for setDescription element in ListSets-->
  <!-- content must be compliant with an XML Schema 
       defined by a community -->

  <complexType name="descriptionType">
    <sequence>
      <any namespace="##other" processContents="strict"/>
    </sequence>
  </complexType>

  <!-- define UTCdatetime -->
  <!-- datestamps are day or seconds granularity -->
  <!-- ======================================== -->

  <simpleType name="UTCdatetimeType">
    <union memberTypes="date dateTime"/>
  </simpleType>

  <!-- define stuff used for Identify verb only -->
  <!-- ======================================== -->

  <simpleType name="emailType">
    <restriction base="string">
      <pattern value="\S+@(\S+\.)+\S+"/>
    </restriction>
  </simpleType>

  <simpleType name="deletedRecordType">
    <restriction base="string">
      <enumeration value="no"/>
      <enumeration value="persistent"/>
      <enumeration value="transient"/>
    </restriction>
  </simpleType>

  <simpleType name="granularityType">
    <restriction base="string">
      <enumeration value="YYYY-MM-DD"/>
      <enumeration value="YYYY-MM-DDThh:mm:ssZ"/>
    </restriction>
  </simpleType>

  <!-- define stuff used for ListMetadataFormats verb only -->
  <!-- =================================================== -->

  <complexType name="metadataFormatType">
    <sequence>
      <element name="metadataPrefix" type="oai:metadataPrefixType"/>
      <element name="schema" type="anyURI"/>
      <element name="metadataNamespace" type="anyURI"/>
    </sequence>
  </complexType>

  <simpleType name="metadataPrefixType">
    <restriction base="string">
      <pattern value="[A-Za-z0-9_!'$\(\)\+\-\.\*]+"/>
    </restriction>
  </simpleType>

  <!-- define stuff used for ListSets verb -->
  <!-- =================================== -->

  <complexType name="setType">
    <sequence>
      <element name="setSpec" type="oai:setSpecType"/>
      <element name="setName" type="string"/>
      <element name="setDescription" type="oai:descriptionType" 
               minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <!-- define setSpecType -->

  <simpleType name="setSpecType">
    <restriction base="string">
      <pattern value=
       "([A-Za-z0-9_!'$\(\)\+\-\.\*])+(:[A-Za-z0-9_!'$\(\)\+\-\.\*]+)*"/>
    </restriction>
  </simpleType>

</schema>
        
Ez a séma elérhető ezen a címen: http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd

3.3 Az UTCdatetime időbélyegformátum

A protokollban előforduló dátumok és időpontok egységesen az ISO8601 szabvány szerint vannak kódolva, és UTC-ben (Universal Time, más néven GMT, Greenwich Mean Time) vannak kifejezve. Amikor egy időbélyeg nemcsak dátumból, hanem napon belüli időpontból is áll, egy speciális UTC jelet ("Z") kell használni. Bár időzónajelzés nincs, implicite minden időbélyeg UTC-ben értendő. Például az 1957-03-20T20:30:00Z időbélyeg így értendő: 1957. március 20., UTC idő szerint délután 8:30:00. A protokollban ez az időformátum használatos mind a kérésekben, mind a válaszokban, az alábbi fejezetekben részletezett módon.

3.3.1 UTCdatetime időbélyegek a protokollkérésekben

A ListIdentifiers és ListRecords kérésekben használható időbélyeg argumentumok az ISO8601 szabvány szerint vannak kódolva, és UTC-ben vannak kifejezve. Ezek az argumentumok az időintervallum-alapú szelektív gyűjtésnél használatosak. Kétféle részletességgel (pontossággal, felbontással) adhatók meg: "teljes dátum" ill. "teljes dátum plusz óra, perc, másodperc" , ahogyan azt az ISO8601 szabvány definiálja. Az érvényes formátumok: YYYY-MM-DD és YYYY-MM-DDThh:mm:ssZ (az időegységek rövidítése az angol nevek szerinti; Year = év, Month = hónap, Day = nap, hour = óra, minute = perc, second = másodperc). A két argumentum (from és until) felbontása meg kell, hogy egyezzen. Az YYYY-MM-DD formátumot minden adattárnak támogatnia kell. Egy adattárnak, amely támogatja a YYYY-MM-DDThh:mm:ssZ formátumot, ebbéli képességét az Identify kérésre adott válaszban javasolt jeleznie. Az adattárnak hibajelzéssel kell reagálnia egy olyan kérésre, amely nagyobb részletességű, mint amit támogat.

3.3.2 UTCdatetime időbélyegek a protokollválaszokban

A válaszokban időbélyegek a ListIdentifiers, GetRecord és ListRecords kérésekre adott rekordfejlécekben jelennek meg. Ezek az időbélyegek az ISO8601 szabvány szerint vannak kódolva, és UTC-ben vannak kifejezve. Részletességük az adattár által támogatott legnagyobb kell, hogy legyen. Az időbélyegek értéke meg kell, hogy feleljen az időintervallum-alapú szelektív gyűjtésnél leírt szabályoknak.

Minden protokollválasz tartalmaz egy responseDate elemet, melynek a válasz időpontját kell hordoznia UTC-ben. Ennek kódolása az ISO8601 "teljes dátum" ill. "teljes dátum plusz óra, perc, másodperc" variánsa. Formátuma YYYY-MM-DDThh:mm:ssZ.

Egy resumptionToken opcionálisan tartalmazhat egy expirationDate argumentumot, UTC-ben kifejezve. Kódolása az ISO8601 "teljes dátum" ill. "teljes dátum plusz óra, perc, másodperc" variánsa. Formátuma YYYY-MM-DDThh:mm:ssZ.

3.4 metadataPrefix-ek és metaadatsémák

Az OAI-PMH lehetővé teszi az adattár számára a metaadatrekordok többféle formátumban való terjesztését. A ListMetadataFormats kérés adja meg az adattárból elérhető összes metaadatformátum listáját. E metaadatformátumok a következő leírókkal rendelkeznek:

Minden, a ListRecords és GetRecord kérésekre válaszként adott metaadatrekordnak igazodnia kell az XML névtér-specifikáció előírásaihoz. Ennek megfelelően a metadata rész gyökérelemének rendelkeznie kell egy xmlns attribútummal, melynek értéke a metaadatformátum XML névtér-URI-ja. A gyökérelemnek rendelkeznie kell továbbá egy xsi:schemaLocation attribútummal is, melynek értékében ott kell lennie a metaadat szintaxisellenőrzésére használható XML séma URL-je. Ennek az URL-nek meg kell egyeznie a ListRecords és GetRecord kérések metadataPrefix argumentuma által előírt metaadatséma URL-jével (a metadataPrefix-ek és a metaadatsémák közti megfeleltetést az adattár a ListMetadataFormats kérésre adott válaszában definiálja).

A kompatibilitás érdekében az adattáraknak támogatniuk kell a kvalifikáció nélküli Dublin Core metaadatformátumot. E metaadatformátum számára a protokoll fenntartja az "oai_dc" metadataPrefix-et, és a használandó metaadatséma-URL-t a http://www.openarchives.org/OAI/2.0/oai_dc.xsd URL-ben határozza meg. Az ehhez tartozó XML névtér URI-ja http://www.openarchives.org/OAI/2.0/oai_dc/.

Az "all" metadataPrefix a jövőbeni fejlesztések számára van fenntartva. Az implementációknak nem javasolt használniuk ezt a metadataPrefix-et.

Az egyes közösségeknek javasolt megállapodniuk bizonyos irányelvek követésében, amelyek alapján a közös metadataPrefix-, metaadatséma- és XML névtér-használatot szabályozzák. Az ilyen irányelvek lefektetése az OAI-PMH hatáskörén kívül esik. Az Implementációs útmutatók egyike tartalmaz néhány minta XML sémát és hozzájuk illeszkedő XML dokumentumot néhány elterjedt metaadatformátum esetére, mint pl. a MARC és az RFC 1807.

3.5 Folyamatvezérlés

Több OAI-PMH kérés diszkrét entitások egy listáját ada vissza: a ListRecords kérés rekordok listáját, a ListIdentifiers kérés rekordfejlécek listáját, a ListSets kérés halmazok listáját. Ezeket a kéréseket összefoglalóan listakéréseknek nevezzük. A listák bizonyos esetekben igen nagyok is lehetnek, és ésszerű lehet földarabolva, több kérés-válasz keretében átszállítani őket. Ez a darabolás a következőképpen valósul meg:

A folyamatirányítás és a resumptionToken használatának részletei:

Egy resumptionToken elem magán a resumptionToken értékén kívül az alábbi attribútumokat tartalmazhatja:

Az alábbi példa ListRecords kérések egy sorozatát mutatja be egy olyan esetben, amelyben a teljes lista 175 rekordból áll, és az adattár egyszerre csak 100 rekordot küld el a válaszaiban.

Ez a folyamatvezérlési mechanizmus -- a HTTP szállítási réteg lehetőségeivel kombinálva -- egy kiinduló eszközkészletet nyújt az adattárak számára, amelyre alapozva megfogalmazhatják a metaadatgyűjtési felületükre vonatkozó felhasználói szabályzatukat a metaadatgyűjtők felé. Egy teljesebb felhasználói szabályzat (amely pl. a begyűjtött metaadatok felhasználását is szabályozza) további eszközöket igényelhet, ezek definiálásával azonban az OAI-PMH nem foglalkozik.

3.5.1 A resumptionToken-ek idempotenciája

(Idempotencia: egy művelet idempotens, ha egyszeri és többszöri alkalmazásának ugyanaz a hatása.) Azoknak az adattáraknak, amelyek a resumptionToken-kezelést implementálják, lehetővé kell tenniük, hogy a metaadatgyűjtők egy folyamatban lévő listakérés-sorozatot úgy folytassanak, hogy a legutóbbi kérésben felhasznált resumptionToken-t az új kérésben újra felhasználják. E lehetőség célja az, hogy a metaadatgyűjtők egy hálózati vagy másmilyen hibából felépülve a félbemaradt listakérés-sorozatot ugyanott folytathassák, ahol félbehagyták, ahelyett, hogy újra kellene kezdeniük. Egy bizonyos resumptionToken-nel ellátott listakérés újraküldésekor kétféle helyzet fordulhat elő:

  1. Ha az adattárban nem történt változás. Ekkor a teljes lista, amelyet a listakérés-sorozat visszaad, nem változott. Ebben az esetben az adattárnak a megismételt (de nem lejárt) resumptionToken-re ugyanazt a választ kell küldenie, amit erre a kérésre korábban is küldött;
  2. Ha az adattárban változás történt. Ekkor a listakérés-sorozat által visszaadandó teljes lista megváltozhatott. A változást okozhatja az, hogy időközben rekordok kerültek a kérés időintervallumába, ill. abból ki, mert az adattárban pl. rekordváltoztatást vagy -törlést eszközöltek. Ebben az esetben az azonos resumptionToken-nel ellátott listakérések szigorú idempotenciáját nem kell biztosítani. Az újraküldött kérésre adott válaszban meg kell ismételni az összes olyan rekordot, melynek időbélyege nem változott. A válasz az időintervallumba azóta bekerült és onnan kikerült rekordokat egyaránt tartalmazhat. Abban az esetben, ha az adattárban nagymértékű változtatás történt, az adattár az újraküldött kérésre egy badResumptionToken hibaüzenettel reagálhat, jelezve, hogy a metaadatgyűjtőnek elölről kellene kezdenie a listakérés-sorozatot.

3.6 Hiba- és kivételhelyzetek

Hiba vagy kivétel esetén az adattáraknak OAI-PMH hibajelzést kell küldeniük -- elkülönülten a HTTP Status-Code-októl -- egy vagy több error elem beiktatásával a válaszba. Bár egyetlen error elem elég, hogy a hiba vagy kivétel jelenlétére felhívja a figyelmet, az adattáraknak javasolt az összes, a kérés feldolgozása során felmerülő hibát ill. kivételt megemlíteniük. Minden error elemnek rendelkeznie kell egy code attribútummal, melynek értéke az alábbi táblázatban található hibakódok egyike; ezen kívül opcionálisan rendelkezhetnek egy szöveges leírással (sztring), amely az emberi olvasó számára nyújt tájékoztatást a hibáról. E sztringeket az OAI-PMH nem határozza meg.

Hibakód Leírás Szóba jövő verb-ek
badArgument A kérés illegális argumentumokat tartalmaz, kötelező argumentumok hiányoznak belőle, megismételt argumentumot tartalmaz, vagy bizonyos argumentumok értéke szintaktikailag helytelen. az összes
badResumptionToken A resumptionToken argumentum értéke érvénytelen vagy lejárt. ListIdentifiers
ListRecords
ListSets

badVerb

A verb argumentum értéke nem egy legális OAI-PMH parancs, a verb argumentum hiányzik, vagy meg van ismételve.

cannotDisseminateFormat

A metadataPrefix argumentumban megjelölt metaadatformátum az adattárban vagy az adott tételhez nem áll rendelkezésre. GetRecord
ListIdentifiers

ListRecords

idDoesNotExist

Az identifier argumentum értéke ismeretlen vagy ebben az adattárban illegális. GetRecord
ListMetadataFormats

noRecordsMatch

A from, until, set és metadataPrefix argumentumok kombinációja üres listát eredményezett. ListIdentifiers
ListRecords
noMetadataFormats Az adott tétel esetében nem áll rendelkezésre semmilyen metaadatformátum. ListMetadataFormats

noSetHierarchy

Az adattár nem támogatja a halmazok használatát.

ListSets
ListIdentifiers
ListRecords

Az alábbi példa bemutatja a hibakezelést egy illegális verb argumentum esetén. Az URL-eket az olvashatóság végett mostantól több sorba tördelve jelenítjük meg.

Kérés

http://arXiv.org/oai2?
       verb=nastyVerb

Válasz

<?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>2002-05-01T09:18:29Z</responseDate>
  <request>http://arXiv.org/oai2</request>
  <error code="badVerb">Illegal OAI verb</error>
</OAI-PMH>

Az alábbi példa bemutatja a hibakezelést egy olyan adattárhoz intézett ListSets kérés esetén, amely nem támogatja a halmazok használatát.

Kérés

http://arXiv.org/oai2?
       verb=ListSets

Válasz

<?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>2002-05-01T09:18:29Z</responseDate>
  <request verb="ListSets">http://arXiv.org/oai2</request>
  <error code="noSetHierarchy">This repository does not 
   support sets</error>
</OAI-PMH>

4. A protokollparancsok és -válaszok

Ez a fejezet az OAI-PMH-ban definiált kéréstípusok (parancsok, verb-ek) leírásait tartalmazza. A leírások felépítése a következő:

Minden, OAI-PMH kérésre adott válasz szintaktikai helyességét egy XML séma definiálja.

4.1. GetRecord

Áttekintés és használat

A parancs egy konkrét metaadatrekord adattártól való lekérésére szolgál. A kötelező argumentumokban megadandó a tétel azonosítója, amelyről rekordot akarunk kapni, és az, hogy milyen formátumban akarjuk megkapni a metaadatrekordot. Attól függően, hogy az adattár milyen mértékben naplózza a törléseket, a visszaadott fejléc -- amennyiben a kért metaadatformátum a megadott tételnél vagy az adattár egészében nem áll többet rendelkezésre -- tartalmazhat egy "deleted" értékű status attribútumot.

Argumentumok

Hiba- és kivételhelyzetek

Példák

Kérés

Egy rekord lekérése Dublin Core metaadatformátumban [az olvashatóság végett az URL-ben lévő speciális karaktereket nem kódoltuk].
http://arXiv.org/oai2?
       verb=GetRecord&identifier=oai:arXiv.org:cs/0112017&metadataPrefix=oai_dc

Válasz

<?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>2002-02-08T08:55:46Z</responseDate>
  <request verb="GetRecord" identifier="oai:arXiv.org:cs/0112017"
           metadataPrefix="oai_dc">http://arXiv.org/oai2</request>
  <GetRecord>
   <record> 
    <header>
      <identifier>oai:arXiv.org:cs/0112017</identifier> 
      <datestamp>2001-12-14</datestamp>
      <setSpec>cs</setSpec> 
      <setSpec>math</setSpec>
    </header>
    <metadata>
      <oai_dc:dc 
         xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" 
         xmlns:dc="http://purl.org/dc/elements/1.1/" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ 
         http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
        <dc:title>Using Structural Metadata to Localize Experience of 
                  Digital Content</dc:title> 
        <dc:creator>Dushay, Naomi</dc:creator>
        <dc:subject>Digital Libraries</dc:subject> 
        <dc:description>With the increasing technical sophistication of 
            both information consumers and providers, there is 
            increasing demand for more meaningful experiences of digital 
            information. We present a framework that separates digital 
            object experience, or rendering, from digital object storage 
            and manipulation, so the rendering can be tailored to 
            particular communities of users.
        </dc:description> 
        <dc:description>Comment: 23 pages including 2 appendices, 
            8 figures</dc:description> 
        <dc:date>2001-12-14</dc:date>
      </oai_dc:dc>
    </metadata>
  </record>
 </GetRecord>
</OAI-PMH>

Kérés

Egy rekord lekérése Dublin Core metaadatformátumban. A rekord azonban nem adható vissza, mert ilyen azonosító nem létezik. Ezért a válasz nem tartalmaz record elemet. Tartalmaz viszont egy error elemet, melynek code attribútuma az idDoesNotExist értékre van beállítva [az olvashatóság végett az URL-ben lévő speciális karaktereket nem kódoltuk].
http://arXiv.org/oai2?
       verb=GetRecord&identifier=oai:arXiv.org:quant-ph/02131001&metadataPrefix=oai_dc

Válasz

<?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>2002-02-08T08:55:46Z</responseDate>
  <request verb="GetRecord" identifier="oai:arXiv.org:quant-ph/0213001"
          metadataPrefix="oai_dc">http://arXiv.org/oai2</request> 
  <error code="idDoesNotExist">No matching identifier in arXiv</error>
</OAI-PMH>

Kérés

Egy rekord lekérése az "oai_marc" metaadatformátumban. Ilyen metaadatformátumú rekord azonban nem állítható ki a megadott azonosítójú tételről. A válasz ezért nem tartalmaz record elemet. Tartalmaz viszont egy error elemet, melynek code attribútuma a cannotDisseminateFormat értékre van beállítva [az olvashatóság végett az URL-ben lévő speciális karaktereket nem kódoltuk].
http://arXiv.org/oai2?
       verb=GetRecord&identifier=oai:arXiv.org:quant-ph/9901001&metadataPrefix=oai_marc

Válasz

<?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>2002-02-08T08:55:46Z</responseDate>
  <request verb="GetRecord" identifier="oai:arXiv.org:quant-ph/9901001"
           metadataPrefix="oai_marc">http://arXiv.org/oai1</request> 
  <error code="cannotDisseminateFormat"/>
</OAI-PMH>

4.2. Identify

Áttekintés és használat

Ezzel a paranccsal egy jellemzés kérhető az adattárról. A jellemzésben szerepelnie kell bizonyos információknak, melyek az OAI-PMH részét képezik. Az adattárak további információkat is közölhetnek magukról.

Argumentumok

Nincsenek.

Hiba- és kivételhelyzetek

A válasz formátuma

A válasznak tartalmaznia kell egyet az alábbi elemek mindegyikéből:

A válasznak egy vagy több példányban tartalmaznia kell az alábbi elemet:

A válasz több példányban tartalmazhatja az alábbi elemeket:

Példák

Kérés

http://memory.loc.gov/cgi-bin/oai?
       verb=Identify

Válasz

Az Identify kérésre adott alábbi példaválasz három description elemet tartalmaz:
<?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>2002-02-08T12:00:01Z</responseDate>
  <request verb="Identify">http://memory.loc.gov/cgi-bin/oai</request>
   <Identify>
    <repositoryName>Library of Congress Open Archive Initiative 
                    Repository 1</repositoryName>
    <baseURL>http://memory.loc.gov/cgi-bin/oai</baseURL>
    <protocolVersion>2.0</protocolVersion>
    <adminEmail>somebody@loc.gov</adminEmail>
    <adminEmail>anybody@loc.gov</adminEmail>
    <earliestDatestamp>1990-02-01T12:00:00Z</earliestDatestamp>
    <deletedRecord>transient</deletedRecord>
    <granularity>YYYY-MM-DDThh:mm:ssZ</granularity>
    <compression>deflate</compression>
    <description>
      <oai-identifier 
        xmlns="http://www.openarchives.org/OAI/2.0/oai-identifier"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation=
            "http://www.openarchives.org/OAI/2.0/oai-identifier
        http://www.openarchives.org/OAI/2.0/oai-identifier.xsd">
        <scheme>oai</scheme>
        <repositoryIdentifier>lcoa1.loc.gov</repositoryIdentifier>
        <delimiter>:</delimiter>
        <sampleIdentifier>oai:lcoa1.loc.gov:loc.music/musdi.002</sampleIdentifier>
      </oai-identifier>
    </description>
    <description>
      <eprints 
         xmlns="http://www.openarchives.org/OAI/1.1/eprints"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.openarchives.org/OAI/1.1/eprints 
         http://www.openarchives.org/OAI/1.1/eprints.xsd">
        <content>
          <URL>http://memory.loc.gov/ammem/oamh/lcoa1_content.html</URL>
          <text>Selected collections from American Memory at the Library 
                of Congress</text>
        </content>
        <metadataPolicy/>
        <dataPolicy/>
      </eprints>
    </description>
    <description>
      <friends 
          xmlns="http://www.openarchives.org/OAI/2.0/friends/" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/friends/
         http://www.openarchives.org/OAI/2.0/friends.xsd">
       <baseURL>http://oai.east.org/foo/</baseURL>
       <baseURL>http://oai.hq.org/bar/</baseURL>
       <baseURL>http://oai.south.org/repo.cgi</baseURL>
     </friends>
   </description>
 </Identify>
</OAI-PMH>

4.3. ListIdentifiers

Áttekintés és használat

Ez a parancs a ListRecords parancsnak a válasz szempontjából rövidített változata: rekordok helyett csak rekordfejléceket kér le. Az opcionális argumentumok segítségével a lekért fejlécek köre halmazbeli tagság ill. időintervallum szerint szűkíthető (szelektív gyűjtés). Attól függően, hogy az adattár miként naplózza a törléseket, egy visszaadott fejléc tartalmazhat egy "deleted" értékű status attribútumot, ha azt a rekordot, amely a kérés feltételeire illeszkedik, törölték.

Argumentumok

Hiba- és kivételhelyzetek

Példák

Kérés

A physics:hep halmazhoz tartozó, "oldarXiv" metaadatformátumú, 1998. január 15. óta létrehozott, megváltoztatott vagy törölt rekordok fejléceinek kilistázása [az olvashatóság végett az URL-ben lévő speciális karaktereket nem kódoltuk].
http://an.oa.org/OAI-script?
       verb=ListIdentifiers&from=1998-01-15&metadataPrefix=oldArXiv&set=physics:hep

Válasz

A válasz négy rekordfejlécből áll. Az egyik fejléc egy "deleted" értékű status attribútummal rendelkezik, jelezve, hogy a megfelelő rekord az adott metaadatformátumban többé nem érhető el. A válasz tartalmaz egy nem üres resumptionToken elemet (értéke xxx45abttyz), jelezve, hogy a fejlécek listája nem teljes, és egy vagy több folytatólagos kérés szükséges a teljes lista lekéréséhez. A példában szereplő resumptionToken elem mindhárom opcionális attribútummal el van látva: expirationDate azt jelzi, hogy a resumptionToken 2002. június 1-én este 11:20-tól (UTC-idő) nem lesz használható; completeListSize azt mutatja, hogy a teljes lista 6 fejlécből áll; és a 0 értékű cursor attribútum azt jelzi, hogy a listakérés-sorozat keretében ezt a kérést megelőzően nulla darab rekordfejléc került átküldésre.

<?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>2002-06-01T19:20:30Z</responseDate>
  <request verb="ListIdentifiers" from="1998-01-15" 
           metadataPrefix="oldarXiv"
           set="physics:hep">http://an.oa.org/OAI-script</request>
  <ListIdentifiers>
   <header>  
    <identifier>oai:arXiv.org:hep-th/9801001</identifier>
    <datestamp>1999-02-23</datestamp>
    <setSpec>physic:hep</setSpec>
   </header>
   <header>    
    <identifier>oai:arXiv.org:hep-th/9801002</identifier>
    <datestamp>1999-03-20</datestamp>
    <setSpec>physic:hep</setSpec>
    <setSpec>physic:exp</setSpec>
   </header>
   <header>  
    <identifier>oai:arXiv.org:hep-th/9801005</identifier>
    <datestamp>2000-01-18</datestamp>
    <setSpec>physic:hep</setSpec>
   </header> 
   <header status="deleted">  
    <identifier>oai:arXiv.org:hep-th/9801010</identifier>
    <datestamp>1999-02-23</datestamp>
    <setSpec>physic:hep</setSpec>
    <setSpec>math</setSpec>
   </header>  
   <resumptionToken expirationDate="2002-06-01T23:20:00Z" 
      completeListSize="6" 
      cursor="0">xxx45abttyz</resumptionToken>
 </ListIdentifiers>
</OAI-PMH>

Kérés

Egy folytatólagos kérés kiadása a fenti kérést követően. Az egyetlen argumentum egy resumptionToken, melynek értéke az előző válaszban kapott resumptionToken [az olvashatóság végett az URL-ben lévő speciális karaktereket nem kódoltuk].

http://an.oa.org/OAI-script?
       verb=ListIdentifiers&resumptionToken=xxx45abttyz

Válasz

A válasz két további fejlécet tartalmaz. A lista végén található resumptionToken elem üres, jelezve, hogy a lista most már teljes. A completeListSize attribútum értéke ugyanúgy 6, míg a cursor attribútum értéke 4-re változott, jelezve, hogy az előző válaszban (ill. az eddigi válaszokban összesen) 4 fejléc már átküldésre került.

<?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>2002-06-01T19:30:00Z</responseDate>
  <request verb="ListIdentifiers"
           resumptionToken="xxx45abttyz">http://an.oa.org/OAI-script</request>
 <ListIdentifiers>
  <header>  
  <identifier>oai:arXiv.org:hep-th/9801020</identifier>
    <datestamp>1999-02-23</datestamp>
    <setSpec>physic:hep</setSpec>
  </header> 
  <header>   
  <identifier>oai:arXiv.org:hep-th/9801060</identifier>
    <datestamp>1999-02-23</datestamp>
    <setSpec>physic:hep</setSpec>
  </header>  
  <resumptionToken completeListSize="6" cursor="4"/>
 </ListIdentifiers>
</OAI-PMH>

Kérés

A Perseus:collection:PersInfo halmazhoz tartozó, "olac" metaadatformátumú, 2001. január 1-én létrehozott, megváltoztatott vagy törölt rekordok fejléceinek kilistázása. A kérésre nincs egyetlen találat sem, ezért a válasz egy error elemet tartalmaz, rekordfejléceket viszont nem [az olvashatóság végett az URL-ben lévő speciális karaktereket nem kódoltuk].
http://www.perseus.tufts.edu/cgi-bin/pdataprov?
       verb=ListIdentifiers&metadataPrefix=olac&from=2001-01-01&until=2001-01-01
       &set=Perseus:collection:PersInfo

Válasz

<?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>2002-02-08T14:27:19Z</responseDate>
  <request verb="ListIdentifiers" metadataPrefix="olac"
    from="2001-01-01" until="2001-01-01"
    set="Perseus:collection:PersInfo">
    http://www.perseus.tufts.edu/cgi-bin/pdataprov</request>
  <error code="noRecordsMatch"/>
</OAI-PMH>

4.4. ListMetadataFormats

Áttekintés és használat

Ezzel a paranccsal lehet lekérni az adattár által támogatott metaadatformátumok listáját. Az opcionális identifier argumentum megadásával azon metaadatformátumok köre kérhető le, amelyek egy adott tétel esetében rendelkezésre állnak.

Argumentumok

Hiba- és kivételhelyzetek

Példák

Kérés

A http://www.perseus.tufts.edu/cgi-bin/pdataprov címen működő adattárban található, oai:perseus.tufts.edu:Perseus:text:1999.02.0119 egyedi azonosítójú tételről kérhető metaadatformátumok kilistázása [az olvashatóság végett az URL-ben lévő speciális karaktereket nem kódoltuk].

http://www.perseus.tufts.edu/cgi-bin/pdataprov?
       verb=ListMetadataFormats&identifier=oai:perseus.tufts.edu:Perseus:text:1999.02.0119

Válasz

A válasz azt mutatja, hogy a megadott azonosítójú tételhez 3 metaadatformátum áll rendelkezésre: "oai_dc", "olac" és "perseus". Mindegyik formátumhoz meg van adva az azt leíró XML séma címe és az XML névtér URI-ja is.

<?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>2002-02-08T14:27:19Z</responseDate>
  <request verb="ListMetadataFormats"
    identifier="oai:perseus.tufts.edu:Perseus:text:1999.02.0119">
    http://www.perseus.tufts.edu/cgi-bin/pdataprov</request>
  <ListMetadataFormats>
   <metadataFormat>
     <metadataPrefix>oai_dc</metadataPrefix>
     <schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd
       </schema>
     <metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/
       </metadataNamespace>
   </metadataFormat>
   <metadataFormat>
     <metadataPrefix>olac</metadataPrefix>
     <schema>http://www.language-archives.org/OLAC/olac-0.2.xsd</schema>
     <metadataNamespace>http://www.language-archives.org/OLAC/0.2/
      </metadataNamespace>
   </metadataFormat>
   <metadataFormat>
     <metadataPrefix>perseus</metadataPrefix>
     <schema>http://www.perseus.tufts.edu/persmeta.xsd</schema>
     <metadataNamespace>http://www.perseus.tufts.edu/persmeta.dtd
       </metadataNamespace>
   </metadataFormat>
 </ListMetadataFormats>
</OAI-PMH>

Kérés

A http://memory.loc.gov/cgi-bin/oai címen működő adattár által támogatott összes metaadatformátum kilistázása.

http://memory.loc.gov/cgi-bin/oai?
       verb=ListMetadataFormats

Válasz

A válasz azt mutatja, hogy az adattár 2 metaadatformátumot támogat: "oai_dc" és "oai_marc". Mindkét formátumhoz az azt leíró XML séma címe és az XML névtér URI-ja is meg van adva. Ezen metaadatformátumok támogatása nem jelenti azt, hogy az adattár összes tételéről lekérhető ilyen metaadatformátumú rekord.

<?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>2002-06-08T15:19:13Z</responseDate>
        <request verb="ListMetadataFormats">
        http://memory.loc.gov/cgi-bin/oai</request>
        <ListMetadataFormats> <metadataFormat>
        <metadataPrefix>oai_dc</metadataPrefix>
        <schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</schema>
        <metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/
        </metadataNamespace> </metadataFormat>
        <metadataFormat>
        <metadataPrefix>oai_marc</metadataPrefix>
        <schema>http://www.openarchives.org/OAI/1.1/oai_marc.xsd</schema>
        <metadataNamespace>http://www.openarchives.org/OAI/1.1/oai_marc
        </metadataNamespace> </metadataFormat>
        </ListMetadataFormats> </OAI-PMH>

Kérés

A http://memory.loc.gov/cgi-bin/oaicímen működő adattárban található, oai:lcoa1.loc.gov:loc.rbc/rbpe.00000111 egyedi azonosítójú tételről kérhető metaadatformátumok kilistázása. Ilyen azonosítójú tétel nem létezik, ezért a válasz egy error elemet tartalmaz, metadataFormat elemet pedig nem [az olvashatóság végett az URL-ben lévő speciális karaktereket nem kódoltuk].

http://memory.loc.gov/cgi-bin/oai?
       verb=ListMetadataFormats&identifier=oai:lcoa1.loc.gov:loc.rbc/rbpe.00000111

Válasz

<?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>2002-06-08T15:19:13Z</responseDate>
  <request verb="ListMetadataFormats"
           identifier="oai:lcoa1.loc.gov:loc.rbc/rbpe.00000111">
           http://memory.loc.gov/cgi-bin/oai</request>
  <error code="idDoesNotExist">oai:lcoa1.loc.gov:loc.rbc/rbpe.00000111 has the 
       structure of a valid LOC identifier, but it maps to no known 
       item</error>
</OAI-PMH> 

4.5. ListRecords

Áttekintés és használat

Ez a parancs rekordok begyűjtésére használható. Az opcionális argumentumok megadásával időintervallum- és/vagy halmaz-alapú szelektív gyűjtés végezhető. Attól függően, hogy az adattár a törléseket milyen szinten naplózza, a válaszban küldött egyes rekordfejlécek tartalmazhatnak egy "deleted" értékű status attribútumot, ha egy rekordot, amely a kérés feltételeire illeszkedik, töröltek. A törölt státuszú rekordok esetében nincs metadata rész.

Argumentumok

Hiba- és kivételhelyzetek

Példák

Kérés

A physics halmaz sep alhalmazához tartozó, "oai_rfc1807" metaadatformátumú, 1998. január 15. óta létrehozott vagy megváltoztatott rekordok kilistázása [az olvashatóság végett az URL-ben lévő speciális karaktereket nem kódoltuk].
http://an.oa.org/OAI-script?
       verb=ListRecords&from=1998-01-15&set=physics:hep&metadataPrefix=oai_rfc1807

Válasz

A válasz két rekordot tartalmaz:

Megjegyzendő: A válasz csak olyan tételek rekordjait tartalmazza, amelyekről az oai_rfc1807 metaadatformátumban rekord kérhető. Nem tartalmaz rekordokat azokról a tételekről, amelyek bár a megadott időintervallumba és halmazba tartoznak, de az adott metaadatformátumban nem kérhető róluk rekord.

<?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>2002-06-01T19:20:30Z</responseDate> 
 <request verb="ListRecords" from="1998-01-15"
          set="physics:hep"
          metadataPrefix="oai_rfc1807">
          http://an.oa.org/OAI-script</request>
 <ListRecords>
  <record>
    <header>
      <identifier>oai:arXiv.org:hep-th/9901001</identifier>
      <datestamp>1999-12-25</datestamp>
      <setSpec>physics:hep</setSpec>
      <setSpec>math</setSpec>
    </header>
    <metadata>
     <rfc1807 xmlns=
        "http://info.internet.isi.edu:80/in-notes/rfc/files/rfc1807.txt" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation=
       "http://info.internet.isi.edu:80/in-notes/rfc/files/rfc1807.txt
        http://www.openarchives.org/OAI/1.1/rfc1807.xsd">
        <bib-version>v2</bib-version>
        <id>hep-th/9901001</id>
        <entry>January 1, 1999</entry>
        <title>Investigations of Radioactivity</title>
        <author>Ernest Rutherford</author>
        <date>March 30, 1999</date>
     </rfc1807>
    </metadata>
    <about>
      <oai_dc:dc 
          xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" 
          xmlns:dc="http://purl.org/dc/elements/1.1/" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ 
          http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
        <dc:publisher>Los Alamos arXiv</dc:publisher>
        <dc:rights>Metadata may be used without restrictions as long as 
           the oai identifier remains attached to it.</dc:rights>
      </oai_dc:dc>
    </about>
  </record>
  <record>
    <header status="deleted">
      <identifier>oai:arXiv.org:hep-th/9901007</identifier>
      <datestamp>1999-12-21</datestamp>
    </header>
  </record>
 </ListRecords>
</OAI-PMH>

Kérés

A physics halmaz sep alhalmazához tartozó, "oai_dc" metaadatformátumú, 2002. május 1-én, (UTC idő szerint) délután 2:15 és 2:20 között felvett vagy megváltoztatott rekordok elkérése [az olvashatóság végett az URL-ben lévő speciális karaktereket nem kódoltuk].
http://www.perseus.tufts.edu/cgi-b:in/pdataprov?
       verb=ListRecords&from=2002-05-01T14:15:00Z&until=2002-05-01T14:20:00Z&metadataPrefix=oai_dc

Válasz

Az adattár két rekordot adott vissza. A második tartalmaz egy provenance elemet az about elemében, betekintést nyújtva az adattárak azon láncolatába, amelyen keresztül a rekord a most lekérdezett adattárba került.

<?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>2002-06-01T19:20:30Z</responseDate> 
 <request verb="ListRecords" from="2002-05-01T14:15:00Z"
          until="2002-05-01T14:20:00Z" metadataPrefix="oai_dc">
          http://www.perseus.tufts.edu/cgi-bin/pdataprov</request>
 <ListRecords>
  <record>
    <header>
      <identifier>oai:perseus.tufts.edu:Perseus:text:1999.02.0084</identifier>
      <datestamp>2002-05-01T14:16:12Z</datestamp>
    </header>
    <metadata>
      <oai_dc:dc 
          xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" 
          xmlns:dc="http://purl.org/dc/elements/1.1/" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ 
          http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
        <dc:title>Opera Minora</dc:title>
        <dc:creator>Cornelius Tacitus</dc:creator>
        <dc:type>text</dc:type>
        <dc:source>Opera Minora. Cornelius Tacitus. Henry Furneaux. 
         Clarendon Press. Oxford. 1900.</dc:source>
        <dc:language>latin</dc:language>
        <dc:identifier>http://www.perseus.tufts.edu/cgi-bin/ptext?
          doc=Perseus:text:1999.02.0084</dc:identifier>
      </oai_dc:dc>
    </metadata>
  </record>
  <record>
    <header>
      <identifier>oai:perseus.tufts.edu:Perseus:text:1999.02.0083</identifier>
      <datestamp>2002-05-01T14:20:55Z</datestamp>
    </header>
    <metadata>
      <oai_dc:dc 
          xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" 
          xmlns:dc="http://purl.org/dc/elements/1.1/" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ 
          http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
        <dc:title>Germany and its Tribes</dc:title>
        <dc:creator>Tacitus</dc:creator>
        <dc:type>text</dc:type>
        <dc:source>Complete Works of Tacitus. Tacitus. Alfred John Church. 
         William Jackson Brodribb. Lisa Cerrato. edited for Perseus. 
         New York: Random House, Inc. Random House, Inc. reprinted 1942.
          </dc:source>
        <dc:language>english</dc:language>
        <dc:identifier>http://www.perseus.tufts.edu/cgi-bin/ptext?
         doc=Perseus:text:1999.02.0083</dc:identifier>
      </oai_dc:dc>
      </metadata>
    <about>
      <provenance
       xmlns="http://www.openarchives.org/OAI/2.0/provenance"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/provenance  
       http://www.openarchives.org/OAI/2.0/provenance.xsd">
       <originDescription harvestDate="2002-01-01T11:10:01Z" altered="true">
        <baseURL>http://some.oa.org</baseURL>
        <identifier>oai:r2.org:klik001</identifier>
        <datestamp>2001-01-01</datestamp>
        <metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</metadataNamespace>
        </originDescription>
      </provenance>
    </about>
  </record>
 </ListRecords>
</OAI-PMH>

Kérés

A physics halmaz sep alhalmazához tartozó, "oai_marc" metaadatformátumú, 2002. május 1-én, (UTC idő szerint) délelőtt 2:00 és 3:00 között felvett vagy megváltoztatott rekordok kilistázása. Azt a pontosságot, amellyel az időintervallumot megadtuk, az adattár nem támogatja, ezért a válasz egy error elemet tartalmaz, amelyben a code attribútum értéke badArgument [az olvashatóság végett az URL-ben lévő speciális karaktereket nem kódoltuk].

http://memory.loc.gov/cgi-bin/oai?
       verb=ListRecords&from=2002-06-01T02:00:00Z&until=2002-06-01T03:00:00Z&metadataPrefix=oai_marc

Válasz

<?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>2002-06-01T19:20:30Z</responseDate> 
  <request verb="ListRecords" from="2002-06-01T02:00:00Z"
           until="2002-06-01T03:020:00Z"
           metadataPrefix="oai_marc">
           http://memory.loc.gov/cgi-bin/oai</request>
  <error code="badArgument"/>
</OAI-PMH>

4.6. ListSets

Áttekintés és használat

Ez a kérés az adattár halmazstruktúrájának lekérésére használható, amelynek ismerete a szelektív gyűjtésnél hasznos.

Argumentumok

Hiba- és kivételhelyzetek

Példák

Kérés

http://an.oa.org/OAI-script?
       verb=ListSets

Válasz

Az alábbi válasz egy két főhalmazból álló hierarchiát mutat, melynek nevei (setSpec-leírói) music és video. A music halmaz két alhalmazzal rendelkezik: music:(muzak) és music:(elec). A music:(elec) alhalmazról szóló rész el van látva egy setDescription elemmel, amely egy Dublin Core elemet hordoz, a halmaz tartalmát jellemzendő.

<?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>2002-08-11T07:21:33Z</responseDate>
 <request verb="ListSets">http://an.oa.org/OAI-script</request>
 <ListSets>
  <set>
    <setSpec>music</setSpec>
    <setName>Music collection</setName>
  </set>
  <set>
    <setSpec>music:(muzak)</setSpec>
    <setName>Muzak collection</setName>
  </set>
  <set>
    <setSpec>music:(elec)</setSpec>
    <setName>Electronic Music Collection</setName>
    <setDescription>
      <oai_dc:dc 
          xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" 
          xmlns:dc="http://purl.org/dc/elements/1.1/" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ 
          http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
          <dc:description>This set contains metadata describing 
             electronic music recordings made during the 1950ies
             </dc:description>
       </oai_dc:dc>
    </setDescription>
   </set>
   <set>
    <setSpec>video</setSpec>
    <setName>Video Collection</setName>
   </set>
 </ListSets>
</OAI-PMH>

Kérés

http://purl.org/alcme/etdcat/servlet/OAIHandler?
       verb=ListSets

Válasz

A válasz azt jelzi, hogy az adattár nem rendelkezik halmazhierarchiával.

<?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>2001-06-01T19:20:30Z</responseDate> 
  <request verb="ListSets">
           http://purl.org/alcme/etdcat/servlet/OAIHandler</request>
  <error code="noSetHierarchy">This repository does not 
         support sets</error>
</OAI-PMH>

5. Dublin Core

Az alábbi rész a kvalifikáció nélküli (Unqualified) Dublin Core metaadatformátum XML sémáját tartalmazza; ez a formátum az OAI-PMH által fenntartott "oai_dc" metadataPrefix-hez van hozzárendelve. Jelen dokumentum összes példája, amely Dublin Core formátumú metaadatrekordokoat tartalmaz, szintaktikailag megfelel az ebben a sémában megfogalmazott szabályoknak. Az Implementációs útmutatók további sémákat nyújtanak, melyek más metaadatformátumoknak esetében használhatók.

Az OAI-PMH által lefoglalt "oai_dc" metadataPrefix-hez rendelt Unqualified Dublin Core metaadatformátum XML sémája

<schema targetNamespace="http://www.openarchives.org/OAI/2.0/oai_dc/" 
        xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" 
        xmlns:dc="http://purl.org/dc/elements/1.1/" 
        xmlns="http://www.w3.org/2001/XMLSchema" 
        elementFormDefault="qualified" attributeFormDefault="unqualified">
        
<annotation>
  <documentation> 
      XML Schema 2002-03-18 by Pete Johnston.
      Adjusted for usage in the OAI-PMH.
      Schema imports the Dublin Core elements from the DCMI schema for unqualified Dublin Core.
      2002-12-19 updated to use simpledc20021212.xsd (instead of simpledc20020312.xsd)
  </documentation>
</annotation>

<import namespace="http://purl.org/dc/elements/1.1/" 
        schemaLocation="http://dublincore.org/schemas/xmls/simpledc20021212.xsd"/>
        
<element name="dc" type="oai_dc:oai_dcType"/>

<complexType name="oai_dcType">
  <choice minOccurs="0" maxOccurs="unbounded">
    <element ref="dc:title"/>
    <element ref="dc:creator"/>
    <element ref="dc:subject"/>
    <element ref="dc:description"/>
    <element ref="dc:publisher"/>
    <element ref="dc:contributor"/>
    <element ref="dc:date"/>
    <element ref="dc:type"/>
    <element ref="dc:format"/>
    <element ref="dc:identifier"/>
    <element ref="dc:source"/>
    <element ref="dc:language"/>
    <element ref="dc:relation"/>
    <element ref="dc:coverage"/>
    <element ref="dc:rights"/>
  </choice>
</complexType>

</schema>
Ez a séma elérhető ezen a címen: http://www.openarchives.org/OAI/2.0/oai_dc.xsd

Példák

<?xml version="1.0" encoding="UTF-8"?>
<oai_dc:dc 
    xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" 
    xmlns:dc="http://purl.org/dc/elements/1.1/" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ 
    http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
  <dc:title xml:lang="en">The Cornell Law Quarterly</dc:title>
  <dc:date>1915-1916</dc:date>
  <dc:identifier>http://heinonline.org/HeinOnline/show.pl?
      handle=hein.journals/clqv1%26id=1%26size=4</dc:identifier>
  <dc:rights>Available by Subscription. 
             See http://www.wshein.com</dc:rights>
</oai_dc:dc>

<?xml version="1.0" encoding="UTF-8"?>
<oai_dc:dc 
    xmlns:oai="http://www.openarchives.org/OAI/2.0/oai_dc/" 
    xmlns:dc="http://purl.org/dc/elements/1.1/" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
    http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
  <dc:title xml:lang="en">Grassmann's space analysis</dc:title>
  <dc:creator>Hyde, E. W. (Edward Wyllys)</dc:creator>
  <dc:subject>LCSH:Ausdehnungslehre; LCCN QA205.H99</dc:subject>
  <dc:publisher>J. Wiley &amp; Sons</dc:publisher>
  <dc:date>Created: 1906; Available: 1991</dc:date>
  <dc:type>text</dc:type>
  <dc:identifier>http://resolver.library.cornell.edu/math/1796949
     </dc:identifier>
  <dc:language>english</dc:language>
  <dc:rights xml:lang="en">Public Domain</dc:rights>
</oai_dc:dc>

6. Implementációs útmutatók

Jelen dokumentum egyes részei az összefoglalóan Implementációs útmutatóknak hívott dokumentumokra hivatkoznak.

Köszönetnyilvánítás

Az OAI-PMH fejlesztéséhez a támogatást a Digital Library Federation, a Coalition for Networked Information és a National Science Foundation biztosítja (Grant No. IIS-9817416).

Jelen dokumentum az OAI Technical Committee megbeszélésein alapul:

Caroline Arms <caar@loc.gov> Library of Congress
Thomas Baron <thomas.baron@cern.ch> CERN
Steven Bird <sb@ldc.upenn.edu> University of Pennsylvania
Les Carr <lac@ecs.soton.ac.uk> University of Southampton
Tim Cole <t-cole3@uiuc.edu> University of Illinois at Urbana Champaign
Thomas Krichel <krichel@openlib.org> Long Island University
Carl Lagoze <lagoze@cs.cornell.edu> Cornell University
Michael Nelson <m.l.nelson@larc.nasa.gov> NASA
Andy Powell <a.powell@ukoln.ac.uk> UKOLN & University of Bath
Mogens Sandfaer <ms@dtv.dk> Danmarks Tekniske Videncenter
Hussein Suleman <hussein@vt.edu> Virginia Tech
Robert Tansley <Robert_Tansley@hplb.hpl.hp.com> HP
Herbert Van de Sompel <herbertv@lanl.gov> Los Alamos National Laboratory
Simeon Warner <simeon@cs.cornell.edu> Cornell University
Muhammad Zubair <zubair@cs.odu.edu> Old Dominion University
Jeff Young <jyoung@oclc.org> OCLC

Sok köszönet mindenkinek, aki részt vett az OAI-PMH 2.0-ás verziójának alpha-tesztelésében. Köszönet továbbá:

Tim Brody <tim@tim.brody.btinternet.co.uk> University of Southampton
Irena Dijour <irina.dijour@exlibris.co.il> Ex Libris
Naomi Dushay <naomi@cs.cornell.edu> Cornell University
Susanne Dobratz <susanne.dobratz@rz.hu-berlin.de> Humboldt Universität zu Berlin
Curtis Fornadley <curtisf@library.ucla.edu> UCLA
Christopher Gutteridge <cjg@ecs.soton.ac.uk> University of Southampton
Alan Kent <ajk@mds.rmit.edu.au> InQuirion Pty Ltd & RMIT University
David Letts <david.letts@bl.uk> The British Library
Xiaoming Liu <liu_x@cs.odu.edu> Old Dominion University
Jon Phipps <jphipps@cs.cornell.edu> Cornell University
Francois Schiettecatte <francois@fsconsult.com> FS Consulting Inc

Külön kösznet Pete Johnston-nak <p.johnston@ukoln.ac.uk> és Andy Powell-nek <a.powell@ukoln.ac.uk> a Dublin Core sémán végzett munkájáért, és Donna Bergmark-nak <bergmark@cs.cornell.edu> az OAI konformancia-ellenőrző és regisztrációs szolgálatán végzett munkákáért.

Sok köszönet mindenkinek, aki részt vett az 1.0-ás és 1.1-es OAI-PMH-verzió alpha-tesztelésében és összeállításában. És mindenkinek, aki ezt a protokollt használja.

A dokumentum előtörténete

2003-02-21: A példákban használt azonosítók megváltoztatása, hogy megfeleljenek az oai-identifier specifikáció 2.0-ás változatának.

2002-12-19: Az oai_dc séma aktualizálása a frissített simpledc20021212.xsd Dublin Core sémának megfelelően. Javított provenance elemek a példákban (2.5 és 4.5 fejezetekben).

2002-06-14: Az OAI-PMH 2.0-ás verzió kibocsátása.

2002-05-02: Az OAI-PMH 2.0-ás verzió beta verziójának kibocsátása.

2002-05-06: Az OAI-PMH 2.0-ás verzió alpha-4 verziójának kibocsátása. A dokumentum átírása annak megfelelően, hogy az időbélyegek és a "törölt" státuszjelzés rekordokra és nem tételekre vonatkozik. requestURL request-re változtatása. Az oai-identifier és oai_dc sémák sémacímének megváltoztatása. Az about, metadata, description és setDescription elemek szintaxisellenőrzésének strict-re állítása.

2002-04-07: A dokumentum átírása, miszerint egyetlen séma használható minden OAI-PMH válasz szintaxis-ellenőrzésére.

2002-03-30: Az OAI-PMH 2.0-ás verzió alpha kettes verziójának kibocsátása.

2002-03-01: Az OAI-PMH 2.0-ás verzió alpha verziójának kibocsátása.

Szójegyzék a magyar fordításhoz

1 metaadatgyűjtő: az elnevezés angol eredetije: harvester

2 adattár: a kifejezés angol eredetije: repository

3 elem: XML-specifikus szövegkörnyezetben az angol element szónak felel meg. Két, angolul tag-nek nevezett, relációs jelek között álló, ugyanolyan szó fogja közre, és ezt az egészet hívjuk elemenk, pl.: <cim>egy könyv címe</cim>. Az elemeknek attribútumaik is lehetnek, amelyek további jellemzést adnak meg az elemről, pl.: <cim nyelv="magyar">egy könyv magyar nyelvű címe</cim>. Az elemek egymásba is ágyazhatók, pl.: <metaadat><cim>egy könyv címe</cim><kiado>a kiadó neve</kiado></metaadat>. Az elem állhat egyetlen ("üres") tag-ből is, amely önmagában áll, pl.: <tud_fokozat tipus="Dr" megszerzes_eve="1998" />.

4 halmaz: angolul "set"; ezzel a szóval hivatkozunk egy osztályozási, kategorizálási rendszer (hierarchia) bizonyos kategóriájára, amely alá további kategóriák (halmazok) is tartozhatnak

5 sztring: a magyar karakterlánc, karaktersor szó helyett használjuk a rövidség kedvéért (az angol string szó nyomán)

6 kvalifikáció: valamely jelentés továbbfinomítása, minősítése (az angol qualify szó nyomán)