View this PageEdit this Page (locked)Uploads to this Page (locked)Versions of this Page over TimePrintable Version of this PageHome PageRecent ChangesSearchSign In

Repository eXchange Package (RXP) Spec

Version 1.0

Introduction

The Repository Exchange Package (RXP) is a hierarchical packaging format designed to
facilitate the exchange of Archival Information Packages (AIPs) between digital repositories.
The RXP employs METS and PREMIS metadata documents to encode AIP preservation and
structural metadata at the root level. All other data are stored in the files/ subdirectory.
Certain aspects of the RXP structure were inspired by the BagIt specification.

Requirements Terminology

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
RFC 2119.

Definitions

  • RXP: Repository eXchange Package
  • sender: the agent producing an RXP from a DIP
  • receiver: the agent consuming a SIP from an RXP
  • exchange: a receiver’s consumption of a sender’s RXP
all other definitions are from OAIS or common digital preservation jargon.

Serialization Structure

The canonical serialization of an RXP is a file hierarchy on a file system.
It is composed of METS xml, PREMIS xml and content files.
A valid serialization has a corresponding form to the canonical serialization described in this document.

Minimal RXP structure

In the canonical serialization a descriptor file rxp.xml defines an RXP. The root of an RXP hierarchy is the parent directory of the rxp.xml in context.
An RXP is minimally composed of the following set of files directly under the root and MUST contain:
  • rxp.xml: a METS descriptor outlining the sender, rights, and representations of the RXP;
  • rxp-digiprov.xml: a PREMIS document containing RXP-specific digital provenance information;
  • rxp-rep-1.xml: a METS document describing the representation of the sender's DIP;
  • rxp-rep-1-digiprov.xml: a PREMIS document containing digital provenance information describing rxp-rep-1.xml;
  • files/: a directory that contains the sender's DIP files.

Optional files

In addition to the above files an RXP MAY also contain:
  • rxp.xml.sig: a standalone (also "detached") digital signature in the OpenPGP format, created with the sender's private key and the rxp.xml file. (See rfc4880 2.2 Authentication via Digital Signature, 2.5 Signature-Only Applications, 4.1 Package Syntax Overview, and 5.2 Signature Types.)
  • rxp-rep-n.xml: a METS document or documents describing representations subsequent to rxp-rep-1.xml, where n is an integer greater than 1. For each rxp-rep-n.xml, a matching rxp-rep-n-digiprov.xml descriptor MUST also be present.
  • rxp-rep-n-digiprov.xml: a PREMIS document containing digital provenance information that describes the corresponding rxp-rep-n.xml.
  • rxp-rights.xml: a PREMIS document containing RXP-specific rights information.
  • rxp-dmd.xml: an XML document containing descriptive metadata for the RXP. The schema SHOULD be defined in the SLA between the sender and receiver.


Descriptor structure & semantics


Sample RXP Files

RXP METS files


These constraints apply to METS files in the RXP root: rxp.xml, rxp-rep-n.xml.

For these files:
  • All metadata MUST be referred to by reference (mdRef), NOT by value (mdWrap)
  • mdRefs MUST be relative paths to local files.
  • FLocats MUST be relative paths to local files and must have SHA-1 checksums.
  • All files referenced in the structMap MUST exist in the fileSec.

Additional constraints:

mets
The root METS element attributes should conform to the following:
  • OBJID - The root METS element SHOULD have an attribute OBJID that is a URI which uniquely identifies the RXP. The same URI SHOULD be used as the objectIdentifierValue in the rxp-digiprov.xml file.

The root METS element MUST have exactly one of each of the following child elements:
  • metsHdr
  • amdSec
  • fileSec
  • structMap

metsHdr
  • The METS Header SHOULD have a CREATEDATE attribute.

agent
  • The METS Header MUST have an agent child element with the attributes ROLE ="DISSEMINATOR"; attribute TYPE = "ORGANIZATION".
    • The agent element MUST also have the following child elements:
      • name - The name of the sender (to be defined in the SLA between the sender and receiver).
      • note - The RXP Specification version in the form rxp-version, for example, "rxp-1.0".

fileSec
  • The METS file section MUST have exactly two fileGrp elements.
  • One file group MUST have @USE=‘METADATA’. This is called the "Metadata File Group".
  • The Metadata File Group MUST describe all mdRefs in the amdSec.
  • All files not in the METADATA file group MUST be referenced in the structMap.
  • FLocats MUST be relative paths to local files.
  • All files must have SHA-1 checksums.

structMap
  • All files referenced in the structMap MUST exist in the fileSec.

The root METS element MAY have exactly one of the following child elements:
dmdSec
  • The root METS element may optionally contain a dmdSec. However, any dmdSec information which the sender would like to preserve should be included beneath the RXP level.


File-specific constraints

rxp.xml
  • The amdSec SHOULD have a rightsMD and MUST have a digiprovMD.
  • The rightsMD MUST reference 'rxp-rights.xml' via mdRef.
  • The digiprovMD MUST reference 'rxp-digiprov.xml' via mdRef.
  • All FLocats in the fileSec MUST reference only metadata files at the RXP level and MUST NOT reference files within the files/ directory.
  • All representation files referenced by FLocats in the fileSec MUST be named rxp-rep-n.xml where n is an integer greater than or equal to 1.
  • Each inner div in the structMap SHOULD have a distinct ORDER=m, where m is some integer greater than or equal to 1. Repositories MAY choose to use ORDER to indicate representation versioning. Note: It is NOT REQUIRED that the value of ORDER match the number n in the rxp-rep-n.xml
  • Exactly one inner div in the structMap MUST have @LABEL='ACTIVE'

rxp-digiprov.xml
  • The rxp-digiprov.xml MUST capture the current and all previous dissemination events.
  • There MUST be at least one representation object which describes the RXP.
  • There MUST be at least one agent to describe the sender.
  • There MUST be at least one dissemination event to describe the initial creation of the RXP.
  • Any dissemination events MUST link to the associated agent and representation object.
  • All PREMIS identifier types SHOULD be "URI".
  • The URI used as the objectIdentifierValue MUST be used in the rxp.xml file as the OBJID attribute of the <mets> element


rxp-rep-n.xml
  • The amdSec MUST have a digiprovMD with an mdRef that MUST reference 'rxp-rep-n-digiprov.xml' where n is an integer.
  • All FLocats in the fileSec SHALL reference files in the "files/" directory or the rxp-rep-n-digiprov.xml files and MUST NOT reference other files.
  • Each file not in the metadata file group SHOULD have an OWNERID attribute. The OWNERID SHOULD match the URI identifier of the file in the representation provenance (rxp-rep-n-digiprov.xml). OWNERID serves as a link between the location of a file and its provenance.
  • Optionally an entry point into the representation SHOULD be denoted by the a PREMIS relationship to a file with the value of the relationshipSubtype element set to has root.

rxp-rep-n-digiprov.xml
  • There MUST be at least one representation object, one file or bitstream object, and SHOULD have one agent defined in the provenance.
  • All PREMIS identifier types SHOULD be "URI".
  • All events MUST link to related objects.
  • All digital object identifiers MUST be the same between source and target repository, OR "alias" events MUST be used to indicate when new identifiers are assigned to the same digital objects.
    • An alias event consists of:
      • a PREMIS event with eventType "alias"
      • a linkingObjectIdentifier element containing
        • the linkingObjectIdentifierValue whose value is the digital object identifier value assigned by the source repository
        • a linkingObjectRole of "source"
      • a linkingObjectIdentifier element containing
        • the linkingObjectIdentifierValue whose value is the digital object identifier value assigned by the target repository
        • a linkingObjectRole of "alias"

PREMIS fragment showing alias event

Validity

An RXP is valid if:
  • its serialization conforms to the serialization structure above
  • all METS and PREMIS descriptors are valid according to their respective schema
  • if rxp.xml.sig is present then rxp.xml must be verified against the credentials of the sender.
  • all message digests in METS files are valid against the files they manifest;
  • rxp.xml and all rxp-rep-X.xml and respective rxp-rep-X-digiprov.xml files conform to the descriptor structure and semantics above;
  • all files referenced in representations MUST be present under the files/ directory


REVISION HISTORY:

2011-10-26 jgpawletko:
  • corrected wording in "File Specific Constraints" section under rxp.xml : changed "TIPR level" to "RXP level"
  • removed duplicate line in rxp.xml section
  • changed "All local files.." to "All representation files..." in rxp.xml section

2011-09-21 jgpawletko:
  • removed "PENDING" status from version number

2011-09-18 franco:
  • improved clarity of last sentence of "Serialization structure"

2011-09-12 jgpawletko : version 1.0 Pending
  • removed dmdSec restriction.
  • updated to be consistent with METS profile, with the exception of dmdSec restriction.
  • added alias event description to digiprov.xml section
  • uploaded and added link to alias event fragment file

Last modified 26 October 2011 at 11:06 am by jgpawletko