跳到内容

XML - 数据交换管理/RDF - 资源描述框架

来自维基教科书,开放世界的开放书籍



上一章 下一章
JSTL RSS



作者: Sascha Meissner | 编辑: Laura Bashaw
编辑状态: 草稿
修改日期: 2004 年 12 月 6 日

学习目标

[编辑 | 编辑源代码]

完成本章后,您将能够

  • 了解资源描述框架 (RDF)
  • 使用 RDF 为网络资源定义元数据
  • 在您的描述中包含都柏林核心等标准
  • 探索 Adobe 如何处理元数据
  • 创建您自己的个人属性来扩展您的描述

资源描述框架 (RDF) 是一种用于在万维网上编码、交换和重用元数据的术语。元数据是关于数据的结构化数据,包括关于资源的任何重要类型的信息,例如作者、标题、创建时间或语言。资源是可以用统一资源标识符 (URI) 寻址的任何事物。例如,网页或特定类型的文档。RDF 将描述视为对这些资源的属性(属性、特征)和相互关系做出陈述的行为。框架是一种包含或管理关于资源的各种信息的通用模型。


为什么我们不使用 XML 来描述事物?

  • XML 太灵活了。描述事物的方式太多了。例如,人的姓名(参见代码示例)。每个 XML 文档都将映射到不同的逻辑树。但是,查询(如“人 x 的姓名是什么”)必须独立于树的选择。RDF 与众不同,因为它有一种标准的方法来解释资源的 XML 编码描述,这将转换为一个逻辑树,从而涵盖描述的所有可能表示形式。
<person name="Pete Maravich">

或者

<person>
  <name>Pete Maravich</name>
</person>
  • XML 文档遵循模式。元素的顺序受到限制,并且文档无法在不更改模式的情况下扩展。RDF 允许列出信息,而不管它们的顺序或外观。RDF 也是开放式可扩展的。这意味着如果收到关于某事或某人的描述,可以轻松地添加信息,而不必局限于遵循模式。这对于注释和元数据应用程序来说是一个很大的优势。除此之外,在不知道 XML 模式的情况下,很难从 XML 文档中检索任何语义意义。


RDF 是 XML 的一个应用程序,它强制执行必要的结构约束以提供表达语义的明确方法。XML 语法保证供应商独立性、可扩展性、验证和表示复杂结构的能力。RDF 扩展了一般的 XML 语法和模型,使其专用于描述资源。此外,RDF 使用 XML 命名空间来限定和唯一标识一组属性。使用指向 URI 的命名空间,可以为其资源生成全局唯一名称。唯一名称不需要上下文来限定。

RDF 是多个元数据社区走到一起以构建一个健壮且灵活的体系结构以支持现有网络上的元数据的成果。第一个 RDF 规范由 Ora Lassila 和 Ralph Swick 于 1997 年发布。基于该规范,RDF 兴趣小组在随后的几年里成立,RDF 成为 W3C 建议
(W3C RDF)。RDF 的潜力很快被认识到,一旦其使用范围广泛,其影响将是巨大的。Ora Lassila 说过以下的话 (W3C_NOTE_1997-11-13)。

一旦网络被充分地“填充”了丰富的元数据,我们可以期待什么?首先,随着搜索引擎拥有更多可用的信息,网络搜索将变得更容易,因此搜索可以更加集中。这也将为自动软件代理在网络上漫游打开大门,为我们寻找信息或代表我们进行交易。今天的网络,这个庞大的无结构信息库,在未来可能会被转换为更易于管理的东西,因此它将变得更加有用。

除了人类可读的元数据显示之外,RDF 还旨在实现不同应用程序之间信息交换,而不会丢失任何意义。但是,应用程序之间有效使用元数据需要关于语义语法和结构的通用约定。RDF 强加了这些约定,使无歧义的传输成为可能。应用领域包括资源描述、站点地图、内容评级、电子商务、协作服务和隐私偏好。早期,元数据互操作性的主要障碍之一是用于元数据语法和模式定义语言的多种不兼容标准。但是,由于 RDF 是 W3C 建议,并且社区提供了描述事物的标准词汇,应用程序设计人员和开发人员可以创建允许以标准化方式交换元数据的应用程序。

基本结构

[编辑 | 编辑源代码]

使用 RDF,可以对资源做出陈述。您可以在下面看到一个关于网页的陈述示例。陈述的关键部分已突出显示

http://www.example.org/index.html作者 姓名是 Pete Maravich

通常,RDF 语句是一个三元组,它包含一个

  • 资源,语句的主语
  • 属性,语句的谓语
  • ,语句的宾语


RDF 基于这样的概念:每个资源都可以拥有不同的属性,这些属性具有值。资源由 URI 引用表示,可以使用属性及其值进行完整描述。此网页的其他属性可能是

http://www.example.org/index.html语言英语
或者
http://www.example.org/index.html标题Example_Title

RDF 语句是一个结构化的三元组,包含主体、谓词和宾语。一组这样的三元组被称为图,其中主体始终是节点,谓词始终是弧,宾语始终是节点。

Abstract RDF graph
图 1 - 抽象 RDF 图


一组示例语句可以用以下图表示


Example graph
图 2 - 示例图


主体 http://www.example.org/index.html 要么是 URI 引用,要么是空白节点。
谓词 http://purl.org/dc/elements/1.1/Title 是 URI 引用。
宾语 Example_Title 可以是 URI 引用、文字或空白节点。


表示 RDF 概念模型的自然英语句子和图对于理解 RDF 的基础知识非常有用。但是 RDF 使用一种规范的 XML 语法称为 RDF/XML 来记录和交换图。与 HTML 类似,RDF/XML 是机器可处理的,并且可以使用 URI 链接信息片段。但与传统的超文本不同,RDF URI 可以引用任何可识别的实体,包括可能无法在 Web 上直接检索的实体(例如人员)。


以下几行表示图 2 中的图在 RDF/XML 中。

1
2 3 4
5 6 7
8 9 10
11 12 13
14
 <?xml version="1.0"?><br>
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
          xmlns:dc="http://purl.org/dc/elements/1.1/"
          xmlns:property="http://www.example.org/properties/"> <br>
     <rdf:Description rdf:about="http://www.example.org/index.html">
         <property:author>Pete Maravich</property:author>
     </rdf:Description> <br>
     <rdf:Description rdf:about="http://www.example.org/index.html">
         <dc:language>en</dc:language>
     </rdf:Description> <br>
     <rdf:Description rdf:about="http://www.example.org/index.html">
         <dc:title>Example_Title</dc:title> 
     </rdf:Description> <br>
 </rdf:RDF>

图 3 - example_rdf.rdf

让我们检查代码行以更好地理解语法。

  • {1} XML 声明,标识文档在当前版本 1.0 中为 XML
  • {2} 一个 rdf:RDF 元素的开始,标识以下代码为 RDF - 还声明了一个 XML 命名空间 rdf,所有以前缀 rdf: 开头的标签都是命名空间的一部分,该命名空间由 URIref http://www.w3.org/1999/02/22-rdf-syntax-ns# 标识,该命名空间描述了 RDF 词汇表
  • {3} 声明一个 XML 命名空间 dc,所有以前缀 dc: 开头的标签都是命名空间的一部分,该命名空间由 URIref http://purl.org/dc/elements/1.1/ 标识 - 链接 定义了元数据项的标准词汇表
  • {4} 声明一个 XML 命名空间 property,所有以前缀 property: 开头的标签都是命名空间的一部分,该命名空间由 URIref http://www.example.org/properties/ 标识 - 此 URI 是虚构的,选择它是为了表明可以创建自己的词汇表来描述资源
  • {5 到 7} 代表了关于资源 http://www.example.org/index.html 的特定语句,如示例所示 - 第 5 行声明了描述的主体 - 第 6 行提供了一个属性元素,限定名称 property 是一个缩写,代表分配的命名空间(第 4 行),property:author 代表 http://www.example.org/properties/author - 嵌入在属性标签中的是描述的值(宾语),作为纯文字
  • {8 到 10} 显示了另一个语句 - 第 8 行再次提供主体 - dc:language 指定了语句的谓词,http://purl.org/dc/elements/1.1/language - 文字 'en' 是英语的国际标准双字母代码
  • {11 到 13} 显示了另一个语句 - 第 10 行到标识主体 - dc:title 指定了语句的谓词,http://purl.org/dc/elements/1.1/title - 值 Example_Title 是宾语
  • {14} 结束 rdf:RDF 元素

第 3 节介绍了 RDF 的基本结构,旨在提供对该主题的基本了解。下一节将介绍 RDF 的一些高级结构和功能。

高级概念

[编辑 | 编辑源代码]

结构化属性值和空白节点

如前所述,语句的宾语可以是文字、空白节点或 URI 引用。后两者使 RDF 更加强大,因为它们允许创建复杂的结构,即所谓的结构化属性值。例如,您考虑描述某人的地址。地址是一个结构,它由不同的值组成,例如街道、城市、州和邮政编码。在 RDF 中,会将地址标识为资源以允许更详细的描述。


结构化 RDF 图 图 4 - 结构化 RDF 图


如您所见,属性 creator 的值由使用 URI http://www.example.org/members/1234 的引用表示。然后可以将 RDF 语句(附加的弧和节点)与该节点作为主体一起写入,以表示其他信息,例如创建者的姓名和他的地址。属性 adress 本身由一个 URI 表示,该 URI 允许从关于地址的进一步语句中聚合详细的描述。

但是 URIref http://www.example.org/address/1234 可能永远不需要从特定图之外直接引用,因此可能不需要特定的标识符。以上概念也可以通过使用空白节点来表示地址对象。空白节点被称为匿名资源,它们没有 URIref 也没有文字。


structured RDF graph with a blank node

图 5 - 使用空白节点的结构化 RDF 图


在 RDF/XML 中,结构化属性值和空白节点的概念表示如下

1
2 3 4
5 6 7 8 9 10 11 12
13 14 15 16 17
18
 <?xml version="1.0"?><br>
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
          xmlns:dc="http://purl.org/dc/elements/1.1/"
          xmlns:property="http://www.example.org/properties/"> <br>
     <rdf:Description rdf:about="http://www.example.org/index.html">
         <dc:creator>
             <rdf:Description rdf:about="http://www.example.org/members/1234">
                 <properties:name>Pete Maravich</properties:name>
                 <properties:address rdf:nodeID="abc"/>
             </rdf:Description>
         </dc:creator>
     </rdf:Description><br>
     <rdf:Description rdf:nodeID="abc">
         <properties:street>346 Broad Street</properties:street>
         <properties:city>Athens</properties:city>
         <properties:state>Georgia</properties:state>
     </rdf:Description> <br>
 </rdf:RDF>

图 6 - structured_rdf.xml

让我们检查表示新概念的代码行

  • {5 到 12} 描述了资源 http://www.example.org/index.html,该资源的值为 http://www.example.org/members/1234
  • {7 到 10} 显示了一种缩写资源的多个属性元素的方法 - 通常,一个节点会有多个弧(属性)从它延伸出来,而不是为每个属性编写一个描述,可以通过在描述主体节点的节点元素中使用多个子属性元素来缩写此描述
  • {9} 显示了如何在 RDF/XML 中标识空白节点 - 有时,图中的同一个空白节点需要在 RDF/XML 中的多个地方引用 - 如果是这样,可以为空白节点赋予一个空白节点标识符以在文档中标识它
  • {13-17} 显示了在第 {9} 行标识的空白节点的属性和值

RDF 应用程序

[编辑 | 编辑源代码]

都柏林核心元数据倡议

[编辑 | 编辑源代码]

都柏林核心元数据倡议 (DCMI) 是一个致力于推广可互操作元数据标准的广泛采用和开发专门的元数据词汇表的组织,用于描述资源,从而实现更智能的信息发现系统。
基本上,都柏林核心是一组用于描述文档的元素。都柏林核心的目标是提供一组最少的描述性元素,以支持和简化类似文档的网络对象的描述和自动索引。互联网上的发现工具,例如流行的万维网搜索引擎使用的“网络爬虫”,会使用元数据集。此外,都柏林核心旨在足够简单,以便广泛的作者和非正式出版商能够理解和使用它,这些作者和非正式出版商会为互联网贡献信息。(另见 RFC-2413

都柏林核心元数据元素集 显示了对都柏林核心定义的所有当前元素的描述。在下面的示例中,可以看到一个 RDF 文档,它使用都柏林核心元素来描述杂志中的文章

1
2 3 4
5 6 7 8 9 10 11 12 13 14
15 16 17 18 19 20
21
 <?xml version="1.0"?><br>
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
          xmlns:dc="http://purl.org/dc/elements/1.1/"
          xmlns:dcterms="http://purl.org/dc/terms/"><br>
     <rdf:Description rdf:about="http://www.cio.com/archive/101504/km.html">
         <dc:title>Less for Success</dc:title>
         <dc:creator>Alice Dragoon</dc:creator>
         <dc:subject>
             <rdf:Bag>
                 <rdf:li>knowledge management</rdf:li>
                 <rdf:li>technology investments</rdf:li>
             </rdf:Bag>
         </dc:subject>
         <dc:description>Forget the big bang approach. When it comes to demonstrating the value
          of knowledge management, a piecemeal strategy works best.</dc:description>
         <dc:publisher>CXO Media</dc:publisher>
         <dcterms:issued>October 15, 2004</dcterms:issued>
         <dc:format>text/html</dc:format>
         <dc:language>en</dc:language>
         <dcterms:isPartOf rdf:resource="http://www.cio.com/archive/101504/index.html"/>
     </rdf:Description><br>
 </rdf:RDF>

图 7 - cio_article.rdf

Adobe 的 XMP

[编辑 | 编辑源代码]

可扩展元数据平台是一个规范,它描述了基于 RDF 的数据和存储模型,用于描述任何格式的文档的元数据。XMP 可以包含在文本文件(如 HTML 或 SVG)、图像格式(如 JPEG 或 GIF)和 Adobe 自身格式(如 Photoshop 或 Acrobat)中。Adobe 正在努力让所有应用程序都支持 XMP。但是 Adobe 声称XMP 提供了一种用于创建、处理和交换元数据的标准格式,该规范不是标准。

XMP 提供以下功能:

  • 数据模型 - 作为一种有用且灵活的方式来描述文档中的元数据。
  • 存储模型 - 用于实现数据模型。这包括将元数据序列化为 XML 和 XMP 数据包流,以及将数据打包到文件中的方法。
  • 模式 - 预定义的元数据属性定义集,这些定义与各种应用程序相关,包括所有 Adobe 的编辑和出版产品,以及来自各种供应商的应用程序。XMP 还提供扩展和添加模式的指南。


但是 XMP 元数据词汇表相对较小,即描述文档的方式有限。为了克服这个问题,Adobe 使用了都柏林核心等元数据标准,并且还允许用户定义自己的元数据词汇表。


以下屏幕截图来自 Acrobat Professional 6.0 的文档元数据功能。描述字段允许用户定义元数据,而高级选项卡显示元数据的概述。在视图下,可以看到 RDF/XML 中的元数据。

Abobe XMP 示例
图 8 - Adobe XMP 示例

该文档的元数据以 RDF/XML 格式表示,可以 此处 获取。属性 funFactor 表示文档的趣味性。它使用 Acrobat Professional 的“加载”功能添加,旨在测试将任意元数据添加到 Acrobat Professional 已知的属性中。

RSS - RDF 网站摘要

[编辑 | 编辑源代码]

RDF 网站摘要 (RSS) 也是 RDF 的一种应用。请查看本维基教科书中关于 RSS 的章节。

创建 RDF 词汇表

[编辑 | 编辑源代码]

正如本章前面所述,尽管使用了诸如都柏林核心之类的标准,您仍然可以创建自己的 RDF 元数据词汇表。本节旨在展示创建个人词汇表的一种非常通用的方法。有关详细说明,请参阅Practical RDF - Powers 2003

创建词汇表的第一个步骤是在给定的兴趣领域内定义领域元素及其属性。这意味着您需要概述应该描述关于资源的哪些信息。假设我们要保存以下关于资源的事实:

属性描述
标题资源的标题
创建日期创建日期
作者资源的作者
状态资源的当前状态
主体资源的主题
格式资源的格式
FunFactor资源的趣味性


下一步是为新的词汇表创建一个 RDF Schema (RDFS) 文档。

此处您可以看到我们所需属性的定义。使用此 RDFS,我们可以以下列方式描述上面看到的文章:

1
2 3
4 5 6 7 8 9 10 11 12 13 14 15 16 17
18
 <?xml version="1.0"?><br>
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
          xmlns:same="http://mitglied.lycos.de/virtuoso5/elements/1.0/myschema#"><br>
     <rdf:Description rdf:about="http://www.cio.com/archive/101504/km.html">
         <same:title>Less for Success</same:title>
         <same:author>Alice Dragoon</same:author>
         <same:subject>
             <rdf:Bag>
                 <rdf:li>knowledge management</rdf:li>
                 <rdf:li>technology investments</rdf:li>
            </rdf:Bag>
         </same:subject>
         <same:format>text/html</same:format>
         <same:status>active</same:status>
         <same:created>2004-10-19</same:created>
         <same:funFactor>3</same:funFactor>
     </rdf:Description><br>
 </rdf:RDF>

图 9 - cio_article2.rdf

为了验证其 RDFS 和 RDF 文件,您可以使用 W3C RDF 验证器.

  1. 创建一个 RDF/XML 文档,描述您选择的文章(例如来自 CIO.com 或 ZDNet.com 的杂志文章)。使用都柏林核心 元素集 和都柏林核心 术语 作为您的描述框架。完成文档后,请使用以下工具验证您的工作:
    W3C RDF 验证器.

参考文献

[编辑 | 编辑源代码]
华夏公益教科书