How OAI-PMH Transports Dublin Core XML

The Open Archives Initiative Protocol for Metadata Harvesting (OAI-PMH) transports Dublin Core XML over the internet using standard HTTP transactions to facilitate seamless metadata exchange between digital repositories and harvesters. By combining the stateless nature of HTTP with a standardized XML envelope, OAI-PMH encapsulates Dublin Core elements within a structured container, allowing harvesting clients to request, validate, and ingest catalog information consistently.

The HTTP Communication Layer

OAI-PMH operates as an application layer protocol layered over standard HTTP or HTTPS. Communication begins when a metadata harvester (the client) sends an HTTP GET or POST request to the base URL of a digital repository (the server).

To request Dublin Core metadata, the harvester uses specific OAI-PMH verbs, such as GetRecord (for a single item) or ListRecords (for multiple items), and appends the mandatory parameter metadataPrefix=oai_dc. The oai_dc schema represents unqualified Dublin Core and serves as the baseline, mandatory metadata format that every OAI-PMH compliant repository must support.

The OAI-PMH XML Envelope

When a repository receives a valid request, it generates a response formatted entirely in XML with a text/xml MIME type. The response uses a multi-layered envelope structure:

  1. Root Element (<OAI-PMH>): Contains protocol-level attributes, including XML namespace declarations, schema locations, the exact <responseDate>, and the echoing of the original <request>.
  2. Verb Container: An XML element matching the requested verb, such as <GetRecord> or <ListRecords>.
  3. Record Container (<record>): Individual entries inside the verb container, split into administrative and descriptive sections.

Encapsulating Dublin Core

Inside each <record> element, the transport mechanism separates system metadata from descriptive metadata:

Within the <metadata> tag, the Dublin Core data is wrapped in the <oai_dc:dc> root container. This element explicitly declares the necessary XML namespaces: * xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" (the container schema) * xmlns:dc="http://purl.org/dc/elements/1.1/" (the Dublin Core elements schema) * xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" (for XML Schema validation)

The Payload Delivery

Nested within the <oai_dc:dc> element, the descriptive fields are transported as standard Dublin Core tags prefixed with dc:, such as <dc:title>, <dc:creator>, <dc:description>, <dc:date>, and <dc:identifier>.

Because the XML payload conforms strictly to predefined XML Schemas (XSD), the receiving harvester reads the stream directly from the HTTP response body, validates the structure against the declared schemas, and extracts the Dublin Core properties without needing repository-specific parsing logic.