A file based approach to expose metadata using the OAI-PMH protocol. As written in the OAI FAQ "[t]he
Open Archives Initiative develops and promotes interoperability
standards that aim to facilitate the efficient dissemination of content".
The OAI defines two parties in the exchange of content: 1) the Data
Provider who exposes metadata to the world using the OAI-PMH protocol,
2) the Service Provider who uses the metadata harvested via the OAI-PMH
as a basis for building value-added services. The OAI community members
implemented several tools
for both Data Providers and Service Providers to exchange metadata using OAI-PMH.
The OAI Static Repository and OAI Static Repository Gateway is a low
barrier solution for Data Providers to make metadata collections
available to the world. The Data Provider writes an XML file with a
specific format - an OAI Static Repository - which is made OAI-PMH
harvestable through intermediation of software - an OAI Static
Repository Gateway - operated by a third party.
Some sample - pre-registered - OAI Static Repositories are available at:
Following the guidelines of the OAI Static Repository specification, the Gateway with base URL http://purl.lanl.gov/NET/srepod makes the above OAI Static Repositories harvestable respectively at the following OAI base URLs:
Here are some sample OAI-PMH requests made through the Gateway to the the above OAI Static Repositories:
gunzip -c srepod-2-X-Xa.tar.gz | tar xvf -
cd srepod
make clean make make install
cd /lanl/srepod
cd /usr/local/apache/cgi-bin ln -s /lanl/srepod/cgi-bin gateway cd /usr/local/apache/htdocs ln -s /lanl/srepod/htdocs gateway(Make sure it is allowed to FollowSymlinks in the cgi-bin and htdocs directory of your Apache installation)
su sh chmod.sh Enter the user name or id of the process running cgi scripts: [nobody] nobody Enter the group name or id of the process running cgi scripts: [nobody] nogroupIf you want to run the daemon with your own privileges, then you need to run the script chmod.sh and fill in your username and group (beware this will create world writable directories and files in the installation directory):
sh chmod.sh Enter the user name or id of the process running cgi scripts: [nobody] hochsten Enter the group name or id of the process running cgi scripts: [nobody] proto
cd /lanl/srepod/bin ./deamonctl start
http://<your_server>/gateway/gateway.cgi?initiate=http://<your_server>/gateway/vb1.xml
As specified in the Static Repository Guidelines: the baseURL written inside a Static Repository file "must match the Static Repository base URL at which the Static Repository is available through intermediation from a Static Repository Gateway". This means that if in your installation the GWBASEURL was set to:
http://gateway.org/cgi-bin/gateway/gateway.cgiand the Static Repository file is located at:
http://somewhere.edu/~brown/repo.xmlthen this Static Repository file should contain a 'oai:baseURL' element with value
http://gateway.org/cgi-bin/gateway/gateway.cgi/somewhere.edu/~brown/repo.xmlto be valid. The Identify section of Static Repository file should look like this:
<Identify> <oai:repositoryName>Demo repository</oai:repositoryName> <oai:baseURL>http://gateway.org/cgi-bin/gateway/gateway.cgi/somewhere.edu/~brown/repo.xml</oai:baseURL> <oai:protocolVersion>2.0</oai:protocolVersion> <oai:adminEmail>jondoe@oai.org</oai:adminEmail> <oai:earliestDatestamp>2002-09-19</oai:earliestDatestamp> <oai:deletedRecord>no</oai:deletedRecord> <oai:granularity>YYYY-MM-DD</oai:granularity> </Identify>`
To test the installation of the LANL Gateway we don't check the validity of baseURL by default. This way we can register quickly a few test Static Repositories in the ${GWHOME}/htdocs directory without changing any of these files. In a production system you should set the GWVALIDBASEURL to 1. This validation check is very important a) when terminating a Static Repository file, b) preventing duplicate registrations of a Static Repository File at two different gateways.
New in the Static Repository Guidelines is the ability to de-register Static Repository files at a Gateway. A Static Repository administrator can do this by changing the 'oai:baseURL' element inside the Static Repository file (or just deleting the file) and sending a 'terminate' request to the gateway:
http://gateway.org/cgi-bin/gateway/gateway.cgi?terminate=http://somewhere.edu/~brown/repo.xml
The LANL Gateway can automatically process termination request if the right conditions are met (see Guidelines). You need to set both GWVALIDBASEURL=1 and GWDOTERMINATE=1.
In case you want to terminate Static Repository files manually, then run the ${GWHOME}/bin/unregister.sh command. Be carefull however: you need to run this program with the same privileges as the srepod (daemon) process.
Patrick Hochstenbach <hochsten@sci.kun.nl> -- Henry Jerez <hjerez@lanl.gov> -- Herbert Van de Sompel <herbertv@lanl.gov>