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:
- Root Element (
<OAI-PMH>): Contains protocol-level attributes, including XML namespace declarations, schema locations, the exact<responseDate>, and the echoing of the original<request>. - Verb Container: An XML element matching the
requested verb, such as
<GetRecord>or<ListRecords>. - 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:
- The
<header>Element: Carries control data necessary for the harvesting process, including the unique record identifier (<identifier>), the modification timestamp (<datestamp>), and optional set memberships (<setSpec>). - The
<metadata>Element: Serves as the payload container that transports the actual Dublin Core data.
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.