Old Release

This documentation relates to an old version of DSpace, version 3.x. Looking for another version? See all documentation.

This DSpace release is end-of-life and is no longer supported.

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

Introduction

Open Archives Initiative Protocol for Metadata Harvesting is a low-barrier mechanism for repository interoperability. Data Providers are repositories that expose structured metadata via OAI-PMH. Service Providers then make OAI-PMH service requests to harvest that metadata. OAI-PMH is a set of six verbs or services that are invoked within HTTP.

What is XOAI?

XOAI is a java implementation of an adaptable OAI-PMH data provider interface developed by Lyncode.

Why XOAI?

Projects like OpenAIRE, Driver and EUBrazilOpenBio have specific metadata requirements (to the published content through the OAI-PMH interface). As the OAI-PMH protocol doesn't establish any frame to these specifics, XOAI can, in a simple way, have more than one instance of an OAI interface, so one could define an interface for each project. That is the main purpose, although, XOAI allows much more than that.

Concepts

To understand how XOAI works, one must understand the concept of Filter, Transformer and Context. With a Filter it is possible to select information from the data source. A Transformer allows one to make some changes in the metadata before showing it in the OAI interface. XOAI also adds a new concept to the OAI-PMH basic specification, the concept of context. A context is identified in the URL:

http://www.example.com/xoai/<context>

Contexts could be seen as virtual distinct OAI interfaces, so with this one could have things like:

At this stage, contexts could be seen as sets (also defined in the basic OAI-PMH protocol). The magic of XOAI happens when one need specific metadata format to be shown in each context. Metadata requirements by Driver slightly differs from the OpenAIRE ones. So for each context one must define it's specific transformer. So, contexts could be seen as an extension to the concept of sets.

XOAI in DSpace

XOAI in DSpace is a separate webapp which is a complete substitute for the old "oai" webapp. XOAI doesn't query the DSpace SQL database at the time of the OAI-PMH request. Instead, it keeps the required metadata in its Solr index (currently in a separate "xoai" Solr core) and serves it from there. Furthermore, it caches the requests, so doing the same query repeatedly is very fast. The Solr index can be updated at your convenience, depending on how fresh you need the information to be. Typically, the administrator sets up a nightly cron job to update the Solr index from the SQL database.

Scheduled Tasks

In order to refresh the XOAI index, it is required to run the [dspace]/bin/dspace xoai-import command periodically. You can add the following task to your crontab:

0 3 * * * [dspace]/bin/dspace xoai-import -i

Note that [dspace] should be replaced by the correct value, that is, the value defined in dspace.cfg parameter dspace.dir.

Client-side stylesheet

The OAI-PMH response is an XML file. While OAI-PMH is primarily used by harvesting tools and usually not directly by humans, sometimes it can be useful to look at the OAI-PMH requests directly - usually when setting it up for the first time or to verify any changes you make. For these cases, XOAI provides an XSLT stylesheet to transform the response XML to a nice looking, human-readable and interactive HTML. The stylesheet is linked from the XML response and the transformation takes place in the user's browser. Most automated tools are interested only in the XML file itself and will not perform the transformation. If you want, you can change which stylesheet will be used by placing it into the [dspace]/webapps/xoai/static directory (or into the [dspace-src]/dspace-xoai/dspace-xoai-webapp/src/main/webapp/static after which you have to rebuild DSpace), modifying the "stylesheet" attribute of the "Configuration" element in [dspace]/config/modules/xoai/xoai.xml and restarting your servlet container.

  • No labels