Guidelines for implementing Dublin Core™ in XML
University of Bath
University of Bath
|Is Replaced By:||http://dublincore.org/specifications/dublin-core/dc-xml-guidelines/2003-04-02/|
|Status of document:||This is a Dublin Core™ Metadata Initiative Proposed Recommendation.|
|Description of document:||This document provides guidelines for people implementing Dublin Core™ metadata applications using XML. It considers both simple (unqualified) DC and qualified DC applications. In each case, the underlying metadata model is described (in a syntax neutral way), followed by some specific guidelines for XML implementations. Some guidance on the use of non-DC metadata within DC metadata applications is also provided.|
This document provides guidelines for people implementing Dublin Core™ [DCMI] metadata applications using XML [XML]. It considers both simple (unqualified) DC and qualified DC applications. In each case, the underlying metadata model is described (in a syntax neutral way), followed by some specific guidelines for XML implementations. Some guidance on the use of non-DC metadata is also provided.
This document does not provide guidelines for encoding Dublin Core™ in RDF/XML [RDF]. Nor does it take a position on the relative merits of encoding metadata in 'plain' XML rather than RDF/XML. This document provides guidelines in those cases where RDF/XML is not considered appropriate. Mechanisms for encoding Dublin Core™ metadata in RDF/XML are being developed elsewhere [DCARCH].
<dd>a <i>resource</i> is anything that has identity. Familiar examples include an electronic document, an image, a service (e.g., "today's weather report for Los Angeles"), and a collection of other <i>resources</i>. Not all <i>resources</i> are network "retrievable"; e.g., human beings, corporations, and bound books in a library can also be considered <i>resources</i>.</dd> <dt><i>Property</i></dt> <dd>a <i>property</i> is a specific aspect, characteristic, attribute, or relation used to describe a <i>resource</i>.</dd> <dt><i>Record</i></dt> <dd>a <i>record</i> is some structured metadata about a <i>resource</i>, comprising one or more <i>properties</i> and their associated <i>values</i>.</dd> </dl>
Note that Dublin Core™ metadata elements are properties (as defined above). Note also that there is potential confusion between the XML usage of the terms 'element' and 'attribute' and the usage of those terms in a more general metadata context.
Recommendation 1. Implementors should base their XML applications on XML Schemas [XMLSCHEMA] rather than XML DTDs. Approaches based on XML Schemas are more flexible and are more easily re-used within other XML applications. In some cases it may be sensible to provide both an XML Schema and a DTD for the application. Where XML Schemas are not used, a DTD should be provided instead. The DCMI maintains a list of XML schemas that are in use in projects or products using DCMI metadata [DCXMLS].
Recommendation 2. Implementors should use XML Namespaces [XMLNS] to uniquely identify DC elements, element refinements and encoding schemes. DC namespaces are defined in the DCMI Namespace Recommendation [DCMINS].
Note that it is anticipated that records will be encoded within one or more container XML element(s) of some kind. This document makes no recommendations for the name of any container element, nor for the namespace that the element should be taken from. Candidate container element names include <dc>, <dublinCore>, <resource>, <record> and <metadata>.
Note that there is no formal linkage between a simple DC record and the resource being described. Such a linkage may be made by encoding the URI of the resource as the value of the DC Identifier element, however this is not mandatory.
Note that while the value of a property may be a URI, there is nothing in the simple DC model that indicates this is the case. At their own risk, implementations may choose to guess which values are URIs and which are not.
(Implementors should follow the general guidelines.)
Recommendation 3. Implementors should encode properties as XML elements and values as the content of those elements. The name of the XML element should be an XML qualified name (QName) which associates the element name with the appropriate DCMI namespace name. For example, use
<dc:title>Dublin Core™ in XML</dc:title>
<dc:title value="Dublin Core™ in XML" />
Recommendation 4. The property names for the 15 DC elements should be all lower-case. For example, use
<dc:title>Dublin Core™ in XML</dc:title>
<dc:Title>Dublin Core™ in XML</dc:Title>
Recommendation 5. Multiple property values should be encoded by repeating the XML element for that property. For example:
<dc:title>First title</dc:title> <dc:title>Second title</dc:title>
Note that the http://example.org/myapp/schema.xsd XML schema does not exist - this is a ficticious example.
Note that for encoding schemes currently recommended by the DCMI, the name is specified in the DC Qualifiers recommendation [DCQ] (listed as the 'Name', not the 'Label'). It is anticipated that the DCMI will develop other mechanisms for registering agreed names for schemes in the future.
(Implementors should follow the general guidelines and the guidelines for simple Dublin Core™.)
Recommendation 6. Element refinements should be treated in the same way as other properties. The name of the XML element should be an XML qualified name (QName) which associates the element refinement name with the appropriate DCMI namespace name. For example:
Element refinements are elements in their own right and are therefore best encoded in a similar way to other DC elements. In particular, it should be noted that element refinements may have further refinements of their own (e.g. 'format' is refined by 'extent' which might be further refined by 'duration').
See also Note 1 below.
Recommendation 7. Encoding schemes should be implemented using the 'xsi:type' attribute of the XML element for the property. The name of the encoding scheme should be given as the attribute value, and should be in the form of an XML qualified name (QName) which associates the scheme name with the appropriate namespace name. For example: