级别: 中级 David Mertz, Ph.D. (mertz@gnosis.cx), Metaphilosopher, Gnosis Software, Inc.
2004 年 8 月 01 日 Dublin Core Metadata Initiative(Dublin 核心元数据计划,DCMI)是用于处理关于文档信息的标准词汇表。总的来说,DCMI 词汇表定义描述文档用途、上下文和出处(而非文本自身)的术语层次系统。David 说明了如何将 DCMI 提供的一组元数据指令重用于(通过名称空间)范围更广的 XML 词汇表,比如 RSS 的变体。DCMI 吸收了多种的不同的标准,包括 ISO 标准和 NISO 标准。
我首先要警告的是:Dublin 核心元数据计划
实际上对 XML 没有做什么。实际上,DCMI 最广泛的应用可能是在名称空间增强的 XML 文档中,但是一般来说(或者专门就这一组元素而言),元数据完全没有要求底层的数据采用 XML 编码。相反,DCMI 是一种通用的框架,描述关于各种类型文档的有用信息集。使用 DCMI 描述的某个文档可以使用 XML 编码,也可以使用其他多数电子或者物理格式,其主题可以是人类创造的任何成果。
DCMI
是一种谈论文档的词汇表,其术语的含义和用法有定义良好(相对而言)的语法。DCMI 中的术语被划分成最小化的基本元素集和对这些基本元素细化的可选集。
DCMI 的主要好处是标准化了元数据术语的拼写方式和这些术语的值的格式。比方说,可以用“作者”、“艺术家”、“创作者”、“制造者”或者“创建者”这些近义词来标识一部著作,DCMI 标准化了该角色的名称,“创建者(creator)”,以便能够用一致的方法来比较作者可能相同的文档。自然,可能成为创建者的人或者组织的名称可以是各种各样的,比较不同的创建者时,DCMI 应用程序可能希望在 DCMI 推荐标准的规定之外进一步标准化姓名的格式(比如“名,姓”)。
除了标准化元数据术语之外,DCMI 还提供了根据枚举或者模式规范选择值的建议。比方说,“date”一词显然是可供选择的元数据术语,但是日期有不同的格式。DCMI 建议采用 W3C Date and Time Formats 说明(请参阅
参考资料)所规定的 ISO 8601 子集表示日期值。在其他一些方面,如“coverage”(定义为“资源内容的区域或范围”),DCMI 建议采用 Thesaurus of Geographic Names(请参阅
参考资料)中的枚举名称(庞大但是有限)。
描述文本
作为具体使用 DCMI 元数据的一个例子,可以看一看文档“DCMI Metadata Terms”(请参阅
参考资料),大概是按照 DCMI 的原理精心设计的一个实例。顺便说一下,DCMI 词汇表术语是大小写不敏感的,因为常常被用于大小写不敏感的上下文,如 HTML(即 XHTML 的前身)。
“DCMI Metadata Terms”文档以几种不同的方式编码元数据,至少包括 HTML 版本。这种冗余性很有意义,因为它说明了 DCMT 应用中可能遇到的三种最重要的编码风格:
- 无格式文本
- HTML 中的元标签
- RDF 中的元数据
无格式文本
第一种风格可以称为文档元数据的
无格式文本编码。在线版本中,下面的信息放在一个 HTML 表格中,并以不同的背景颜色表示,但是如果打印成一本书或者印成封面(或者像下面这样格式化)就没有明显的效果了。具体而言,使用 DCMT 的非电子版材料必须使用类似下面这样的格式:
DCMI 元数据术语
创建者:DCMI 应用公告板
标识符:
http://dublincore.org/documents/2004/06/14/dcmi-terms/
发表日期: 2004-06-14
最新版本:
http://dublincore.org/documents/dcmi-terms/
替换:
http://dublincore.org/documents/2003/11/19/dcmi-terms/
翻译:
http://dublincore.org/resources/translations/
文档状态:这是一份 DCMI 推荐标准。
说明:该文档是 Dublin 核心元数据计划所维护的元数据术语的更新规范,包括元素、元素细化、编码方案和词汇表术语(DCMI Type Vocabulary)。
有效期: 2004-06-14
每个斜体字段名称都是关于所依附的文档的元数据,虽然这里没有列出整个文档,但是要注意
标识符
(Identifier)字段是一个 URI,如果可用的话就可以定位相关的文档。
无格式文本头部中给出的几个元数据字段,
Creator、
Identifier和
Description属于 DCMI 的 15 种基本元素。其他字段
Replaces、
Date Issued和
Date Valid是元素的细化,一般而言就是说这些元素继承自基本元素(但不是字面意义上的 OOP 风格的继承)。但其他的字段似乎并不属于 DCMI,而是为这种应用自己添加的成分,其他应用如果不能识别这些字段通常可以忽略。
HTML 中的元标签
通过印刷方式使用无格式文本编码的 DCMI 元数据在某种程度上是针对所处理的作品的。事实上,许多非电子化的作品不可能真正直接编码元数据。比如,音乐作品或者油画都没有能够列出这些元素的封面或者标题页。即使是撰写的作品如果不允许创建新的编辑内容,也不能直接附加这类无格式文本。显然,诸如此类情况下元数据只能存在于某种附属的或者包装用的文档中。这些内容完全可以写在作品的包装上,比如包扎古籍的收缩包装或者油画所配的包装盒上。
对于电子格式,附加元数据稍微容易点。特别是 HTML 有一个标签可以放在其
<head> 元素中,即
<meta> 元素,这个元素看起来像是临时拼凑的。DCMI Metadata Terms 的 HTML 版本就用这种方式编码了几种基本 DCMI 元素。
清单 1 给出了完整的
<head> 元素:
清单 1. DCMI Metadata Terms HTML 版本的 Head 元素
<head>
<title>DCMI Metadata Terms</title>
<link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
<meta name="DC.title" content="Dublin Core Metadata Terms" />
<meta name="DC.description" content="This document is an up-to-date
specification of all metadata terms maintained by the Dublin Core
Metadata Initiative, including elements, element refinements,
encoding schemes, and vocabulary terms (the DCMI Type Vocabulary)." />
<meta name="DC.publisher" content="Dublin Core Metadata Initiative" />
<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type" />
<link href="index.html.rdf" rel="meta" />
<link type="text/css" href="/css/default.css" rel="stylesheet" />
</head>
|
清单 1 中有几点要注意。HTML 文档中的标准
<title> 也是一种元数据,但是因为缺乏其他伴随的术语用处不是很大。HTML 头部给出了到
schema.DC 的
<link> ,为了明确表示在其他
<meta> 标签中使用的是 DCMI 术语,通常都这样做。当然,HTML 规范本身和多数 HTML 处理应用程序(如 Web 浏览器)都不知道如何处理,但是它们应该得体地忽略并保留这些内容。
术语
DC.title 、
DC.description 和
DC.publisher 是 DCMI 的基本元素,并使用伪名称空间限定。
publisher 元素在无格式文本版本中没有给出(但也许不应该遗漏这个元素)。
title 不仅仅被明确地标为字段,而且所有的 DCMI 文档都将该字段作为文档的第一项内容,并放在
<h1> 标签中。将其看作标志字段
title 是完全合理的,尽管其标记和其他字段不同。
和很多 HTML 文档一样,DCMI Metadata Terms 也包括一个非 DCMI
Content-Type 元数据标签。并非所有元数据都是 DCMI,因此 DCMI 应该能够和外部的元数据标签很好的协作。
RDF 中的元数据
我还没有提及 HTML 文档中的另一个元素,啊,是两个元素。
样式表链接是 HTML 的一种外部资源,这里无需赘述,尽管也可以看作是某种元数据,关于文档最佳表示的元数据。更有趣的外部资源是到
index.shtml.rdf 的
<link>
。
看一看
清单 2:
清单 2. 通过 DCMI Metadata Terms 链接的 RDF 资源
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<rdf:Description
rdf:about="http://dublincore.org/documents/dcmi-terms/">
<dc:title>Dublin Core Metadata Terms</dc:title>
<dc:description>This document is an up-to-date specification of all
metadata terms maintained by the Dublin Core Metadata Initiative,
including elements, element refinements, encoding schemes, and
vocabulary terms (the DCMI Type Vocabulary).</dc:description>
<dc:publisher>Dublin Core Metadata Initiative</dc:publisher>
</rdf:Description>
</rdf:RDF>
|
也许能够找到 DCMI 术语的最常见的地方就是嵌入在 RDF 中。XML 名称空间对这种嵌入有很好的支持:DCMI 术语存在于
dc: 名称空间中,RDF 本身存在于
rdf: (或者作为默认的名称空间)中。这样就为嵌入其他的词汇表留了余地,如
xhtml: 。
不过,
dc: 名称空间不是 DCMI 推荐的唯一名称空间。DCMI 15 个基本元素通常放在
dc: 名称空间中,但是追加的术语和细化通常放在
dcterms: 名称空间中。namespace.
dcterms: 名称空间中细化存放的位置是早期推荐版本的修订,祖先术语使用
dc: 名称空间限定。比如, DCMI Metadata Terms 的 RDF 文件现在可以使用下面的元素加以改进:
<dcterms:issued>2004-06-14</dcterms:issued>
|
当然要正常工作,根元素
<rdf:RDF> 中还必须添加一个名称空间规范
xmlns:dcterms="http://purl.org/dc/terms/" 。
可能还会遇到更老的 RDF 文件,使用类似的限定的祖先元素:
<dc:date.issued>2004-06-14</dc:date.issued>
|
我不清楚为何改变了这种用法,初看起来,这种老的用法似乎更容易让我理解。不过我没有追踪关于作出这一决策的讨论,而假设有充分的理由。顺便说一下,您也可以在
http://purl.org/dc/dcmitype/ 找到
dcmitype: 名称空间。
结束语:一般的 XML 用法
这期文章中说明如何在 XML 中尤其是 RDF 中使用 DCMI。不过一般而言 DCMI 尤其适合于嵌入在 XML 中。不论多么棘手和困难(我的同事 Uche Ogbuji 曾经提到过一些,请参阅
参考资料),名称空间都是组合 XML 词汇表的一种非常优雅的方式。
在 XML 而非 HTML、无格式文本或者作品的不同包装形式中嵌入 DCMI 的主要优点是,DCMI 元数据不仅可用于注释整个文档,还可用于说明特定的元素。
比方说,在以前的文章中,我曾经考察过 DocBook/XML 并用它来标记博士论文中的章节。我可能希望返回去并使用针对其研究成果的元数据注解该文档。很多特性是应用于整个文档的,比如我撰写了整篇文章。但是其他特性可能是针对不同章节的,比方说各个章节撰写的日期不同,在编篡时可以替换了不同的成分。
作为章节上下文的一个简要例子,下面我给出了高度缩减仅保留下 DCMI 注解的 DocBook 版本:
清单 3. DCMI 注解的 DocBook/XML 学术论文章节
<?xml version="1.0"?>
<chapter xmlns="http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcterms="http://purl.org/dc/terms/" >
<dc:creator>David Mertz</dc:creator>
<dc:identifier>http://gnosis.cx/publish/mertz/chap5.xml</dc:identifier>
<dc:title>Hegemony, and Other Passing Fads</dc:title>
<title>Hegemony, and Other Passing Fads</title>
<sect1>
<title>Forgotten AIDS Myths</title>
<dc:title>Forgotten AIDS Myths</dc:title>
<dc:date>1998-11</dc:date>
<dcterms:replaces>
http://gnosis.cx/publish/mertz/sex_wars.html</dcterms:replaces>
</sect1>
<sect1>
<title>Day-Care Devil Worshipers</title>
<dc:title>Day-Care Devil Worshipers</dc:title>
<dc:date>1998-08</dc:date>
<sect2><title>Remembering Events</title></sect2>
<sect2><title>Forgetting Everything</title></sect2>
<sect2><title>Motives, Right and Left</title></sect2>
<sect2><title>Flashpoints</title></sect2>
<sect2><title>Obtaining Outsidelessness</title></sect2>
<sect2><title>Remembrance of Ideologies Past</title></sect2>
</sect1>
<sect1>
<title>Tsars and Jihads</title>
<dc:date>1997-10</dc:date>
<dc:title>Tsars and Jihads</dc:title>
</sect1>
</chapter>
|
我只留下了章节的标题,但是您可以从中看出如何使用 DCMI 术语像子文档那样注解每个章节元素。显然,除了这里所用的术语外,您还可以增加其他的术语。
参考资料
关于作者
对本文的评价
|