Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
xml
xml
<didl:DIDL 
    DIDLDocumentId="urn:nbn:nl:ui:10-15290" <\!-\- Identification \--> 
    ... 
> 
    ... 
</didl:DIDL>

The DIDLDocumentId attribute contains the ID of the DIDL wrapper. This CAN be the same as the OAI-Identifier that is being used to get a record. The DIDL wrapper can be used as an autonomous entity out of the OAI-PMH context, therefore a DIDL is not the same ‘thing' as an OAI record. There is a demand for Persistent Identifiers assigned to digital objects in the future (mandatory for the OAI-ORE project.). For libraries it is recommended to use urn:nbn:{country code}:{isil library code} ISO/NP 15511: International Standard Identifier for Libraries and Related Organizations (ISIL)
http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=52666 - {object id}. {object id} could be the database number. It is recommended to store this number in a separate field and not to auto generate from the database id because a database update in the future will change these numbers and the persistency could be lost.

...

Code Block
xml
xml
<didl:DIDL ...> 
  <didl:Item> 
    <didl:Descriptor>...</didl:Descriptor> <\!-\- Identification \--> 
    <didl:Descriptor>...</didl:Descriptor> <\!-\- Modification date \--> 
    <didl:Item>...</didl:Item> 
    <didl:Item>...</didl:Item> 
    <didl:Item>...</didl:Item> 
    ... 
  </didl:Item> 
</didl:DIDL>

Example on level two; Object type added:

Code Block
xml
xml
<didl:Item> <\!-\- Level 1 Root Item \--> 
    <didl:Item> <\!-\- Level 2 Child Item \--> 
      <didl:Descriptor>...</didl:Descriptor> <\!-\- Identification \--> 
        <didl:Descriptor>...</didl:Descriptor> <\!-\- Modification date \--> 
        <didl:Descriptor>...</didl:Descriptor> <\!-\- Object type \--> 
      ... 
      </didl:Item> 
        <didl:Item>...</didl:Item> 
        <didl:Item>...</didl:Item> 
        <didl:Item>...</didl:Item> 
    ... 
  </didl:Item> 
</didl:DIDL>

Anchor
_Toc213761486
_Toc213761486
Anchor
_Toc213761666
_Toc213761666
Anchor
_Toc214332927
_Toc214332927
Descriptor Statement: Item 'Identifier'

...

Code Block
xml
xml
<didl:Item> 
  <didl:Item> 
    <didl:Descriptor> 
      <didl:Statement mimeType="application/xml"> 
        <dii:Identifier>urn:nbn:nl:ui:10-6748398729821</dii:Identifier> 
      </didl:Statement> 
    </didl:Descriptor> 
    ... 
  </didl:Item> 
  ... 
</didl:Item>

Remarks:

  1. For child Item elements of the root Item element accounts that this Identifier is NOT equal to the used OAI identifier or DIDL identifier
  2. The Identifier in the root Item element CAN be the same as the DIDL or OAI Identifier, but this is not recommended
  3. The namespace for dii has had to be declared in the DIDL tag
  4. The Identifier in the HAS TO BE described as an URI when applicable

...

Code Block
xml
xml
<didl:Item> 
  <didl:Item> 
  ... 
    <didl:Descriptor> 
      <didl:Statement mimeType="application/xml"> 
        <dcterms:modified>2006-12-20T10:29:12Z</dcterms:modified> 
      </didl:Statement> 
    </didl:Descriptor> 
    ... 
  </didl:Item> 
  ... 
</didl:Item>

Remarks:

  1. Declare the dcterms namespace in the DIDL tag
  2. The format of the date is Zulu-time; which means that it can be sorted as text
  3. There can be only one Statement element in a Descriptor element, which means that dii:identifier and dcterms:modified reside in separate Descriptor elements

...

Code Block
xml
xml
<didl:Item> 
  <didl:Item> 
  ... 
    <didl:Descriptor> 
      <didl:Statement mimeType="application/xml"> 
        <dip:ObjectType>info:eu-repo/semantics/*descriptiveMetadata* 
</dip:ObjectType> 
      </didl:Statement> 
    </didl:Descriptor> 
    ... 
  </didl:Item> 
  ... 
</didl:Item>

In the section Compound Element: representation of the complex work the representation of the complex work this ObjectType statement will be further eleborated upon.

...

Code Block
xml
xml
<didl:DIDL ...> 
  <didl:Item> 
    <didl:Item>...</didl:Item> <\!-\- metadata \--> 
    <didl:Item>...</didl:Item> <\!-\- objects \--> 
    <didl:Item>...</didl:Item> <\!-\- jump-off-page \--> 
  </didl:Item> 
</didl:DIDL>

The first Item contains the metadata as Unqualified Dublin Core (DC) (mandatory) which is normally used in the OAI_DC format according to the DRIVER metadata guidelines that belongs to a Digital Item Processing architecture. The second Item(s) contain links to the digital objects, and the third Item contains a link to a jump-off page.

Code Block
xml
xml
<didl:Item> 
  <didl:Item> <\!\--one or many occurrences-\-> 
    <didl:Descriptor> 
      <didl:Statement mimeType="application/xml"> 
        <dip:ObjectType>info:eu-repo/semantics/descriptiveMetadata</dip:ObjectType> 
      </didl:Statement> 
    </didl:Descriptor> 
  ... 
</didl:Item> 
<didl:Item> <\!\--one or many occurrences-\-> 
  <didl:Descriptor> 
    <didl:Statement mimeType="application/xml"> 
      <dip:ObjectType>info:eu-repo/semantics/objectFile</dip:ObjectType> 
    </didl:Statement> 
  </didl:Descriptor> 
  ... 
</didl:Item> 
<didl:Item> <\!-\- zero or one occurrences \--> 
  <didl:Descriptor> 
    <didl:Statement mimeType="application/xml"> 
      <dip:ObjectType> 
        info:eu-repo/semantics/humanStartPage</dip:ObjectType> 
      </didl:Statement> 
    </didl:Descriptor> 
   ... 
  </didl:Item> 
</didl:Item>

The URI's will be processed case un-sensitive. It is recommended to use camelCase writing. It is VERY important to use the exact combinations of characters, otherwise automatic processing will not be possible. To make it very clear the following URI's are used:

...

The first Item ObjectType element contains the metadata. The metadata is put in a Resource element. Every Resource element contains the namespace of a metadata format that has been used. This way the format will be recognised by service providers. According to the OAI protocol it is mandatory to use 'oai_dc'. For ease of implementation one can use the OAI_DC as metadata, since OAI_DC is a basic requirement of OAI-PMH. Every metadata item can optionally have its own Identifier and modified element in a Descriptor element:

 

Code Block
xml
xml
<didl:Item>

 

Code Block
xml
xml
<didl:Descriptor> <didl:Statement mimeType="application/xml"> <dip:ObjectType> info:eu-repo/semantics/descriptiveMetadata</dip:ObjectType> </didl:Statement> </didl:Descriptor>

1

Code Block
xml
xml
<didl:Descriptor> <\!-\- This metadata instance has its own ID number --> <didl:Statement mimeType="application/xml"> <dii:Identifier>info:doi/10.1705/74836724783</dii:Identifier> </didl:Statement> </didl:Descriptor>

2

Code Block
xml
xml
<didl:Descriptor> <\!-\- This record has its own Modification date --> <didl:Statement mimeType="application/xml"> <dcterms:modified>2006-12-20T10:29:12Z</dcterms:modified> </didl:Statement> </didl:Descriptor>

 

Code Block
xml
xml
<didl:Component>

3

Code Block
xml
xml
<didl:Resource mimeType="application/xml"> <\!-\- the DC data --> <oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ [http://www.openarchives.org/OAI/2.0/oai_dc.xsd]"> <dc:creator>...</dc:creator> <dc:creator>...</dc:creator> <dc:title> ... </dc:title> ... </oai_dc:dc> </didl:Resource>

 

Code Block
xml
xml
</didl:Component>

 

Code Block
xml
xml
</didl:Item>

Remarks:

  1. (Mandatory when applicable) It is recommended to identify every separate component, for future reference or re-assemble purposous. This metadata set has its own identifier, which is NOT the same as the DIDL identifier.
  2. If the date of the metadata has been changed, make sure the modification date of the root level Item is also being changed.
  3. Declare the dc namespace in the start-tag of the Resource element where you use Dublin core.

...

The second Item ObjectType contains a link to one digital object. This is always "by-reference" to limit the file size, when used for metadata transfer purpouses. ("by-value" is possible but increases the file size and touches the issueon ownership, use base64 encoding, not exampled here), and the Item element has an ObjectType statement with an info:eu-repo/semantics/objectFile URI. An objectFile Item can occur more than once. See the following:

<didl:Item> ... <!-- Below this line one can find links to one or more digital objects -->

<didl:Item> <!-- First Item for a File/Bitstream --> <didl:Descriptor> <didl:Statement mimeType="application/xml"> <dip:ObjectType>info:eu-repo/semantics/objectFile</dip:ObjectType> </didl:Statement> </didl:Descriptor> ... <didl:Component> <didl:Resource mimeType="application/pdf" ref="http://my.server.nl/report.pdf"/></didl:Component> </didl:Item>

<didl:Item> <!-- Second Item for a File/Bitstream --> <didl:Descriptor> <didl:Statement mimeType="application/xml"> <dip:ObjectType>info:eu-repo/semantics/objectFile</dip:ObjectType> </didl:Statement> </didl:Descriptor> ... <didl:Component> <didl:Resource mimeType="application/pdf" ref="http://my.server.nl/appendix.pdf"/><didl:Component> </didl:Item>

<didl:Item> <!-- Third Item for a File/Bitstream --> <didl:Descriptor> <didl:Statement mimeType="application/xml"> <dip:ObjectType>info:eu-repo/semantics/objectFile</dip:ObjectType> </didl:Statement> </didl:Descriptor> ... <didl:Component> <didl:Resource mimeType="application/pdf" ref="http://my.server.nl/datasheets.xls"/><didl:Component> </didl:Item>

</didl:Item>

...

The third ObjectType Item element contains a link to the jump-off page or intermediate page. This is done in the same way as for the Object Item element. Currently this is restricted to 1 Item of this type; there are no identifier elements, nor modification date elements present. This Item element is optional:

<didl:Item> ... <!-- Below this line; an Item with a link to one optional Intermediate page -->

<didl:Item> <didl:Descriptor> <didl:Statement mimeType="application/xml"> <dip:ObjectType> info:eu-repo/semantics/humanStartPage </dip:ObjectType> </didl:Statement> </didl:Descriptor> ... <didl:Component> <didl:Resource mimeType="application/html" ref="http://my.server.nl/mypub.html"/></didl:Component> </didl:Item>

</didl:Item>