POI resolver guidelines

Andy Powell, UKOLN, University of Bath
Jeff Young, OCLC
Thom Hickey, OCLC

FINAL DRAFT

$Id: intro.html,v 1.9 2004/02/16 08:34:00 lisap Exp $

1. Introduction

The PURL-based Object Identifier (POI) [1] is a simple specification for resource identifiers based on the PURL system [2]. The use of the POI is closely related to the use of the Open Archives Initiative Protocol for Metadata Harvesting (OAI-PMH) [3] and with the OAI identifier format (oai-identifiers) [4] used within that protocol.

The primary intention of the POI is as a relatively persistent identifier for resources that are described by metadata 'items' in OAI-compliant repositories. Where this is the case, POIs are not explicitly assigned to resources - a POI exists implicitly because an OAI 'item' associated with the resource is made available in an OAI-compliant repository. However, POIs can be explicitly assigned to resources independently from the use of OAI repositories and the OAI-PMH if desired.

All POI assigners are strongly encouraged to configure the PURL system to resolve their POIs. This document describes three options for doing this.

2. Using the PURL system to resolve POIs

2.1 Option 1 - Resolving to URLs based on the local-identifier

Where the POI assigner supports resource URLs based on the local-identifier in the POI, register a PURL Partial Redirect [5] as follows:

  /poi/namespace-identifier/
    ---> http://www.example.org/docs/

where 'http://www.example.org/docs/' is the first part of the URL for all the resources identified by POIs with the particular namespace-identifier. For example, this approach could be used to configure the PURL system to issue an HTTP-redirect from a POI of the form:

  http://purl.org/poi/example.org/12345-67890

to a URL of the form:

  http://www.example.org/docs/12345-67890

(the URL of the resource identified by the above POI). Note that such an approach may link directly to the required resource or may link to a 'local' resolver service that issues a second HTTP-redirect to the resource.

As a more concrete example, the Resource Discovery Network supports URLs of the form:

  http://www.rdn.ac.uk/record/redirect/oai:rdn:agrifor:2014720

where

  oai:rdn:agrifor:2014720

is an RDN oai-identifier. Therefore, the RDN has registered the following PURL partial redirect:

  /poi/rdn/
    ---> http://www.rdn.ac.uk/record/redirect/oai:rdn:

so that the following POI works as expected:

  http://purl.org/poi/rdn/agrifor:2014720

Note that this approach must only be used if consistent URLs are supported for all the POIs that use the given POI namespace-identifier.

2.2 Option 2 - Resolving via a modified OAI repository

This is a special case of option 1, using a resolver based on an existing OAI repository.

Where the POI assigner offers an OAI-compliant repository, and has control over the software used to deliver that repository, the repository can be modified to support an additional request, Redirect. Note that this is not an OAI-PMH verb and must not be offered at the repository's 'base URL'. The Redirect request should be supported at a separate 'base URL'. The Redirect request takes a single identifier argument. The Redirect request should issue an HTTP-redirect to an appropriate URL for the resource corresponding to the requested item. Typically this will be the first URL listed in the dc:identifier element in the oai_dc record for the requested item. For example, a request for

  http://www.example.org/oai/extension?
  verb=Redirect&identifier=oai:example.org:12345-67890

will result in an HTTP-redirect to one of the dc:identifiers in the oai_dc record for that item. (Note that the above URI has been split across two lines for readibility.)

The POI assigner should register a PURL Partial Redirect of the form:

  /poi/namespace-identifier/
    ---> baseURL?verb=Redirect&identifier=oai:namespace-identifier:

For the example above, the PURL Partial Redirect would be:

  /poi/example.org/
    ---> http://www.example.org/oai/extension?
         verb=Redirect&identifier=oai:example.org:

This will result in

  http://purl.org/poi/example.org/12345-67890

being redirected to

  http://www.example.org/oai/extension?
  verb=Redirect&identifier=oai:example.org:12345-67890

and will, in turn, result in an HTTP-redirect to the target resource.

As a more concrete example, the OAI repository software for OCLC's Experimental Thesis Catalog has been modified to support the Redirect verb and the following PURL Partial Redirect has been registered:

  /poi/xtcat.oclc.org/
    ---> http://alcme.oclc.org/xtcat/servlet/OAIHandler/extension?
         verb=Redirect&identifier=oai:xtcat.oclc.org:

(Note that the URLs above have been wrapped across multiple lines for readibility). This allows the following POIs to work as expected:

  http://purl.org/poi/xtcat.oclc.org/OCLCNo/ocm21004665
  http://purl.org/poi/xtcat.oclc.org/OCLCNo/ocm29814005
  http://purl.org/poi/xtcat.oclc.org/OCLCNo/ocm32717818

Note that this approach must only be used if the Redirect request at the 'base URL' works for all the POIs that use the given POI namespace-identifier. This may not be the case if OAI items having oai-identifiers with the same namespace-identifier are stored across multiple repositories.

2.3 Option 3 - Individual registration

Register a separate PURL for each POI, for example:

  http://purl.org/poi/example.org/12345-67890
    ---> http://www.example.org/docs/12345-67890.pdf

This option is only recommended where a small number of POIs are being assigned.

References

  1. The PURL-based Object Identifier (POI)
    <http://www.ukoln.ac.uk/distributed-systems/poi/>
  2. The PURL System
    <http://purl.org/>
  3. The Open Archives Initiative Protocol for Metadata Harvesting
    <http://www.openarchives.org/OAI/openarchivesprotocol.html>
  4. Specification and XML Schema for the OAI Identifier Format
    <http://www.openarchives.org/OAI/2.0/guidelines-oai-identifier.htm>
  5. Partial Redirect Creation Form
    <http://purl.org/maint/choose_redirect.html>

Page maintained by: Andy Powell
Last updated: 16-Feb-2004

[distributed systems] [UKOLN]