Hi Sean,
> On a related note. Do DC terms take any standard attributes?
> Ideally,
> I'd like to do something like:
>
> <dc:relation title="A
Document">http://www.example.com/document.html</dc:relation>
>
> Or would I have to define attributes myself?
At the risk of writing a long message and not quite answering the
question you ask (but I'll try to explain why I'm not quite answering
the question you ask ;-)), I think first maybe it's important to note
that Dublin Core is not specified as an XML format, or at least not only
as an XML format. Rather, "Dublin Core" is really made up of several
different things:
- A set of terms [1].
For each term which it creates/manages, DCMI assigns a persistent
identifier and a definition, and provides information about how that
term is related to other terms. Also (importantly) it specifies the
"type" of the term - property (element/element refinement) or encoding
scheme or "controlled vocabulary term".
- A set of rules, the DCMI "Abstract Model" [2], for how to use/deploy
these specific types of terms in combination in order to construct
descriptions of resources.
Simplifying slightly, the DCMI Abstract Model says that DC metadata
consists of sets of descriptions; each description is a set of
statements about a single resource; and each statement contains a
reference to a property, a reference to a value (a second resource) and
(optionally) a reference to an encoding scheme (which provides more
information about the value) (Note that there's nothing in there about
"attributes" - in particular the notion of a DC "element" "having an
attribute" does not appear in the Abstract Model)
- A number of "binding" specifications that describe how to encode DC
metadata description sets in specific "formats" (currently, in XHTML
meta/link elements [3]; in RDF/XML [4, 5]; and in an XML format [6]).
i.e. the same DC metadata description may be expressed in multiple
formats.
Each of these specifications describes how the use of some component or
construct in one of those formats (like an XML element or XML attribute)
is used to represent some construct in the Abstract Model (*). Some of
those bindings support only a subset of the full set of features
described by the Abstract Model.
(Also, it would be quite possible for another implementer with some
particular requirements to decide that they needed a new binding, a new
format - and in fact there was an example earlier today where an
implementer community has some very specific requirements that are not
met by the current bindings and wishes to us a different format. See
[7])
So, the creator of a DC metadata "record" first constructs a description
set following the rules of the Abstract Model, and then encodes that
description set as a record in accordance with a binding specification.
And conversely, when a human reader or an application encounters a
record, they perform the reverse set of operations: they interpret the
record according to the rules of the "binding" specification in order to
obtain a DC metadata description set. It is crucial that the application
(a) knows which binding has been used and (b) contains or can access
information about the rules of the binding, otherwise it can not map
between the syntactic components and the constructs in the Abstract
Model.
So going back to your question.... you've couched your question in terms
of the features of an XML format, and I suppose the short (but not very
helpful!) answer would be that depending on which XML DTD or XML Schema
you used, you may find that you are able to add XML attributes as you
suggest. But that doesn't get us very far: it then raises the question
of how those XML attributes would be interpreted by a DC metadata
application. And that depends on the rules of the binding which explain
how to interpret that format in terms of the Abstract Model. XML itself
does not provide _any_ generic rule for how to interpret an XML
attribute with the name "title".
So, looking at the three DCMI-supplied bindings
(a) HTML/XHTML: that syntactic construct would not be permitted by the
XHTML spec
(b) DC-XML: the interpretation of that syntactic construct is not
defined
(c) RDF/XML: that construct is interpreted according to the rules of the
RDF/XML specification and (depending on its context in the document) is,
I think, probably invalid
However, the construct may well be valid and well-defined in terms of
some other XML binding for DC metadata, one which does assign an
interpretation to the use of XML attributes in that context of the XML
tree, and which defines a mapping of that syntactic component to the
Abstract Model.
I think your question probably really needs to be framed first in terms
of the Abstract Model, and then in terms of syntax. I think your
question is something like, "If I'm providing a description which
includes a statement describing a relationship between my subject
resource and some value resource, can I also provide the title of that
value resource, or - more broadly - a description of that value
resource?".
And the answer, in terms of the Abstract Model is, yes, the model
enables you to provide a second "related description" of that value, and
you could included in that second description a statement specifying the
title of the value resource.
However, to encode this set of two descriptions in XML, you need an XML
binding which supports the "related description" feature of the model,
and the current DC-XML binding specification does not do that.
So you would need to specify, for your XML format, a set of conventions
for representing "related descriptions" (or at least, for providing
statements giving the "titles" of values, if that is all you require).
One way in which other implementers have done this is to use a
convention something like:
<my:descriptionSet>
<my:description>
<dc:identifier>http://example.org/thisdocument/</dc:identifier>
<dc:title>This document</dc:title>
<dc:relation>http://example.org/thatdocument/</dc:relation>
</my:description>
<my:description>
<dc:identifier>http://example.org/thatdocument/</dc:identifier>
<dc:title>That document</dc:title>
</my:description>
</my:descriptionSet>
Here, the Abstract Model constructs are "mirrored" fairly directly in
the structure of the XML tree. And the content of each individual
my:description XML element is structured/interpreted in accordance with
the DC-XML specification (and you could continue to make use of the XML
Schemas provided by DCMI).
If you really only want to provide titles for values, then there's
nothing to stop you defining your XML format to use something like:
<my:description>
<dc:identifier>http://example.org/thisdocument/</dc:identifier>
<dc:title>This document</dc:title>
<dc:relation dc:title="That
document">http://example.org/thatdocument/</dc:relation>
</my:description>
But then as I said above, XML provides no fixed interpretation of the
fact that an XML element carries an attribute with some specific name,
so it would be essential for you to document this particular encoding so
that consumers of your XML documents interpret them as you intended, and
(if XML validation was important) I think you'd have to provide a
separate set of schemas for that purpose.
I hope that wasn't a case of "too much information"! I do think the
distinction between the components used in particular formats and the
constructs which they represent is a very important one, particularly in
a context where we are working with many different metadata standards.
Cheers
Pete
(*) I'm slightly glossing over some thorny issues here, because as
things stand there are some areas in which the current specs are
ambiguous or under-specified with respect to the Abstract Model. Work is
in progress to try to address that.
[1] http://dublincore.org/documents/dcmi-terms/
[2] http://dublincore.org/documents/abstract-model/
[3] http://dublincore.org/documents/dcq-html/
[4] http://dublincore.org/documents/dcmes-xml/
[5] http://dublincore.org/documents/dcq-rdf-xml/
[6] http://dublincore.org/documents/dc-xml-guidelines/
[7]
http://www.jiscmail.ac.uk/cgi-bin/webadmin?A2=ind0506&L=dc-general&P=224
6
|