精通 HTML5、CSS3 和 XML Web 标准(三)

原文:Web Standards Mastering HTML5, CSS3, and XML

协议:CC BY-NC-SA 4.0

七、元数据和语义网

web 文档的基本结构提供了所需的外观和功能。然而,默认情况下,内容是人类可读的。您可以使用额外的技术为 web 文档提供意义,使它们成为机器可读的和语义 Web 的一部分。最近为新兴的语义网技术引入了许多术语,但是由于缺乏正式的定义,许多定义有些模糊。例如,由于自动执行动作的潜力,一个新的网络时代已经开始,它被称为 Web 2.0。在在线社区门户网站上流行起来之后,语义网的一些特性以及个性化现在被称为 Web 3.0。有大量的元数据可供选择,还有微格式和各种注释,可以极大地扩展 web 文档的可能性。它们还可以大大提高网络搜索的效率。RDF 应该被用来增加网络的结构,改变传统的搜索引擎使用暴力的方法。

在本章中,你将学习机器可读的元数据注释和语义上有意义的属性。您还将熟悉资源描述框架,这是语义 Web 技术背后的基本标准。阅读完本章后,您不仅能够应用各种元数据注释,还能够创建新的词汇、方案和本体,包括但不限于以下内容:

  • 标记中的通用元数据:常规meta标签
  • 微格式:作为标记元素属性值提供的元数据
  • 微数据:html 5 中通用元数据嵌入的元数据注释
  • RDF:语义网数据模型的标准化框架
  • OWL:一种用于描述和共享 web 本体的知识表示语言,它将知识正式表示为一个领域中的一组概念以及这些概念之间的关系
  • FOAF 和 DOAC :机器可读的人类本体和他们的专业能力
  • XMP,Rich Snippets,SearchMonkey RDFa :图像和视频剪辑的元数据格式

语义网

直到最近,软件代理还不能处理许多可能与文件相关联的信息。虽然文件结构和扩展名提供了一些关于文件的信息,很多信息无法表达。例如,扩展名为.jpg的文件总是代表 JPEG 图像,但在引入 Exif 和 XMP 等元数据格式之前,不提供关于快门速度、曝光程序、f-stop、光圈、ISO 速度等级或焦距的信息(见第九章)。然而,共享存储在二进制文件中的元数据仍然不是共享元数据的最有效方式,特别是如果它更通用的话。在数字时代,出售的电子文件(电子书、MP3 文件等等)可以在许多类型的设备上检索或播放。各种元数据技术可用于表达任意信息,并以机器可读格式表示与电子文档相关的任何种类的知识。机器可读数据(自动化数据)是以机器可读格式存储的数据,使得自动化软件代理可以在没有人工干预的情况下访问和处理它。

对于浏览器来说,web 文档只包含人类可读的数据。事实上,信息与包含它们的容器混淆了。与传统的 Web(“文档 Web”)不同,语义 Web 是“数据 Web”。语义网提供了机器可处理的数据,使得软件代理有可能“理解”Web 文档所表示的信息的含义(换句话说,语义)。这个功能可以用于各种服务 [2 ],比如博物馆 [3 ],社区网站 [4 ],或者播客 [5 。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 注意语义这个词在网络上的其他语境中也会用到。例如,在 HTML5 中有语义的(换句话说,有意义的)结构化元素,但是这个表达式指的是元素的“意义”。在这种情况下,单词语义将元素的“含义”与旧 HTML 版本的通用元素(如“无意义的”div)进行对比,例如section(主题分组)。标记元素的语义不应该与语义 web 上使用的元数据注释和 Web 本体的语义(换句话说,机器可处理性)相混淆。后者可以提供比标记元素更复杂的数据。

传统的 web 文档可以用额外的数据来扩展,这些数据增加了文档的意义,而不仅仅是结构。语义网是一种将会改变网络世界的新方法。令人惊讶的是,早在 2001 年,蒂姆·伯纳斯·李就描述了语义网存在的原因 [6 ]。在语义网上,可以从看似不相关的领域自动检索数据,以便组合它们,找到关系,并做出发现 [7 ]。语义网应该被认为是传统网络的延伸。

两个术语经常与语义网联系在一起,尽管它们都没有明确的定义: Web 2.0Web 3.0

Web 2.0 是一个总括术语,用于表示构成第二代 Web 的一系列技术,如可扩展标记语言(XML)、异步 JavaScript 和 XML (Ajax)、真正简单聚合(RSS)和会话发起协议(SIP)。它们是即时消息、IP 语音、维基、博客、论坛和联合背后的底层技术和标准。

下一代 web 服务越来越多地被称为 Web 3.0,这是一个总括术语,通常指定制和语义内容以及面向人工智能的更复杂的 Web 应用,包括计算机生成的内容 [9 ]。

语义网是 Web 2.0 [0]和 Web 3.0 [1 ]的一个主要方面。Web 3.0 可以被认为是语义网的超集,其特点是社交联系和个性化。

一些技术有助于共享这些信息,而不仅仅是网页,语义 web 应用的数量也在不断增加。

由传统 web 应用控制的所有数据都由应用自己保存,这使得很大一部分数据及其关系实际上不可用于自动化处理。另一方面,语义 web 应用可以通过通用 Web 架构访问这些数据,并在应用和网站之间传输结构化数据。语义网技术可以广泛应用于各种领域,如数据集成、资源发现和分类、编目、智能软件代理、内容分级和知识产权描述 [3 ]。与传统网页相比,语义网页可以执行更广泛的任务;例如,可以自动处理数据甚至句子之间的关系(见下一节)。此外,效率更高。例如,一种非常有前途的方法提供了关系数据到 RDF 的直接映射,使得在语义网上共享关系数据库的数据成为可能。由于关系数据库在计算中非常流行,到目前为止存储在本地硬盘上的数据库可以在语义网上共享。市面上已经有商业 RDF 数据库软件包(5Store、AllegroGraph、BigData、Oracle、OWLIM、Talis Platform、Virtuoso 等等) [5 。语义工具也可以用于各种其他领域,包括业务流程建模或诊断应用。

除了这些好处之外,还有几个未解决的问题需要进一步研究,在某些情况下,还需要开发新的方法。语义 Web 应用的最大挑战是解决语义数据质量问题,并识别有用和有意义的信息。有越来越多有前途的方法;然而,它们有一个共同的特征:都依赖于标准的注释、分类法、词汇表和本体。在本章中,我们从标准化的角度分析了这些基本技术及其特性。

结构化数据

数据的结构应该支持数据类型的高级可处理性和可搜索性。结构化数据是以某种结构组织起来以便识别的数据。这种数据已经在计算中使用了几十年,例如以 Access 和 SQL 数据库的形式,其中可以执行查询来检索信息(例如,邮政编码)。与关系数据库相比,Web 上的大多数数据都存储在包含非结构化数据的(X)HTML 文档中。

传统的 web 文档包含大量可以在 web 浏览器中呈现的非结构化数据。这种方法对于出版目的来说是令人满意的;然而,存储在 web 文档中或与 web 文档相关联的大量数据不能以这种方式处理。根据 Berners-Lee 的说法,用来描述人与人之间社会联系的数据是这类数据的一个很好的例子。我设计它是为了一种社会效果——帮助人们一起工作——而不是作为一个技术玩具。网络的最终目标是支持和改善我们在世界上的网络生活。我们聚集成家庭、协会和公司。我们在远处培养信任,在拐角处培养不信任。我们相信、赞同、同意和依赖的东西是可以表现的,并且越来越多地在网络上表现出来。我们都必须确保我们用网络构建的社会是我们想要的那种。”

在语义网上,有各种各样的结构化数据,通常在资源描述框架中表达,或者基于资源描述框架,这将在后面详细描述。与传统的概念建模方法(如类图和实体关系)类似,RDF 数据模型基于以主-谓-对象表达式的形式描述和表征资源(尤其是 web 资源)的语句。主题与资源相对应。谓语表达了主语和宾语之间的关系。这样的表达式叫做三元组

例如,陈述“草地是绿色的”可以用 RDF 三元组表达如下:

  • 主题:“草地”
  • 谓语:“是”
  • 物体:“绿色”

RDF 是一个抽象模型,有几种序列化格式。因此,三元组的语法因格式而异(参见后面的“资源描述框架”一节)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 注意 RDF 是概念,不是语法。

“传统”网站的作者通常发布非结构化数据,因为他们不知道结构化数据的威力,觉得 RDF 太复杂,或者不知道如何以任何序列化格式创建和发布 RDF。以下是将结构化数据添加到传统(X)HTML 标记的问题的解决方案,这些数据可以由适当的软件提取并转换成 RDF:

  • 微格式,重用标记属性
  • 微数据,用结构化元数据扩展 HTML5 标记
  • RDFa,用不属于(X)HTML 词汇表的标记属性来表达 RDF
链接开放数据

链接数据(也称为链接数据)可以用来改进对“数据网”的利用。该表述指的是结构化数据的发布,通过在不同来源的数据之间创建类型化的链接 [9 ]来提供更高级别的可用性。通过使用链接数据,可以找到其他相关数据。结构化数据应满足四个要求才能称为链接数据[0]:

  • 应将 URIs 分配给数据集的所有实体。
  • 需要 HTTP URIs 来确保用户和用户代理可以引用所有实体。
  • 应该使用 RDF/XML 等标准格式来描述实体。
  • 应该创建到其他相关实体 URIs 的链接。

所有满足这些要求并向公众发布的数据称为链接开放数据 (LOD)。发布为关联数据的各种数据集由 LOD 云图表示(图 7-1 ) [1 )。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

***图 7-1。*LOD 云图(由 Richard Cyganiak 和 Anja Jentzsch 提供)

该图像收集根据关联数据原则发布的数据集,并表示它们之间的链接。气泡的大小对应于每个数据集中存储的三元组的数量。贡献者包括链接开放数据社区项目、个人和组织。

各种各样的注释和语法

元数据是描述网站功能和内容信息的结构化数据。写在(X)HTML head sections 中的meta 标签,不需要额外的技术,可以用来描述关于网页的一般数据(前面在第三章中提到过,下一节会详细描述)。语义的、机器可读的标签可以通过微数据、微格式或 RDFa 作为(X)HTML 或 XML 元素的属性值提供。

有几种元数据技术;许多应用不同的注释。例如,对一个人的描述可以用 RDFa、微数据、vCard 微格式以及其他词汇(如 FOAF 或 DOAC)来表达。

诸如许可之类的特殊元数据可以用不同的符号来提供。图像和包含图像的网页的许可信息可以不同。提供许可证元数据对每个网站都有好处,尤其是那些版权不同于用户内容的网站,比如像 Flickr [2 这样的图片共享门户网站。图像许可可以以基本标记、微数据、rel="license"微格式和 RDFa 的形式提供。

几种元数据技术可以用多种语法编写。例如,在微格式的情况下,可以嵌入微格式的标记语言之间存在差异。在其他情况下,需要降低复杂性(例如 RDF 语法)。

meta 标签

在 20 世纪 90 年代,meta元素对网络搜索结果有很大的影响。从那以后,它们的重要性一直在下降,部分原因是被用来操纵搜索引擎排名的不道德的伎俩。一个很好的例子是关键字填充,它被用来加载一个网页,网页中有一些流行的关键字,但这些关键字不一定与页面内容相关,或者在meta标签中,或者在内容中。在后一种情况下,关键字通常是隐藏的,但是包含它们的网页会被搜索引擎编入索引。这种伎俩使开发者有可能在搜索结果中获得更高的排名,但也大大增加了搜索结果列表中不相关链接的数量。虽然现在meta标签已经不那么重要了,但是它仍然应该被用来为搜索引擎提供网页内容的信息。

HTML/XHTML 中的meta标签可以定义各种元数据,例如,内容类型、作者、发布日期、关键字、页面内容描述、字符编码等等。这些标签是在 HTML 2.0 中引入的,现在仍然有效。

meta元素上可以使用四个属性:contenthttp equivnamescheme。第一个是唯一必需的属性。meta元素属性可以指定以下内容:

  • Alternatives to HTTP headers that are sent by web servers prior to the web page content. Listing 7-1 shows an example.

    **清单 7-1。**由meta标签提供的文件到期日期

    <meta http-equiv="expires" content="Fri, 15 October 2010 14:15:00 GMT" />

  • Names and associated content attributes describing aspects of (X)HTML pages. Listing 7-2 shows an example.

    ***清单 7-2。*meta标签的关键字声明

    <meta name="keywords" content="standardization, accessibility" />

    方案指定了定义键的含义及其值的语义框架。它们还可以防止潜在的歧义。清单 7-3 显示了一个例子。

    ***清单 7-3。*一个元方案

    <meta name="foo" content="bar" scheme="DC" />

    在这种情况下,meta 元素中的 foo 元素具有来自 Dublin Core (DC)资源描述框架(RDF)的值 bar。

通过定义文档语言、最相关的关键字和简短描述,languagekeywordsdescriptionrobots属性有助于更精确的 web 搜索。最后一个属性robots的值在有限的范围内提供了对搜索引擎行为的控制。可以阻止网页被索引(noindex)、抓取(nofollow)、缓存(noarchive)、描述(nosnippet)或者根据开放目录项目 ( noodp ) [4 ]进行描述。noindexnofollow值的组合可以用值none [5 代替。例如,该设置可用于搜索引擎不应考虑其内容和链接的机密文档。 1 从搜索引擎 Google、Yahoo!,而 Bing 可以具体禁用。要应用的meta name是谷歌的Googlebot,雅虎的Slurp!,而msnbot为 Bing ( 清单 7-4 )。


1 还有其他技术可以达到类似的效果。例如,robots.txt中不允许的目录所包含的 web 文档将不会包含在搜索结果中。

清单 7-4。 meta不同爬虫的标签

<meta name="Googlebot" content="noodp" /> <meta name="Slurp" content="noodp" /> <meta name="msnbot" content="noodp" />

如果您想阻止从 Yahoo!目录从搜索结果中显示出来,可以使用noydir值 [6 ] ( 清单 7-5 )。

***清单 7-5。*使用noydir属性值

<meta name="robots" content="noydir" />

重要的是要记住,尽管属性值多种多样,使用meta标签来阻止搜索引擎索引或抓取并不是最好的解决方案。为此,应该使用robots.txt文件。

web 文档头部分提供的典型通用元数据看起来像清单 7-6 中的。

***清单 7-6。*Web 文档meta标签的完整示例

<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta name="robots" content="index, follow" /> <meta name="content-language" content="en" /> <meta name="author" content="John Smith" /> <meta name="keywords" content="My Darling, pet shop, pet accessories, dog, collar, ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)   harness, dog lead, dog kennel, dog bowl, dog coats" /> <meta name="description" content="The website of the pet shop My Darling in Tauranga, ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)   New Zealand." />

因为meta元素上的name属性的属性值是robots,所以content属性的值(index, follow)应用于所有搜索引擎,而不是特定的一个。

模式、词汇和本体

分类法词汇表是可以用作元数据元素值的术语的结构化集合。它们是映射概念及其关系的概念数据模式(概念数据模型)的一部分。名称空间揭示了标签和属性的含义,并形成了词汇表。形式化的概念结构可以被定义为本体,换句话说,领域中概念集合的知识表示以及它们之间的关系。Web 本体使得以机器可读的格式描述任何主题的复杂语句成为可能。

名称空间提供了一种扩展标记语言词汇的机制。为了使用各种元数据技术的外部词汇和本体,应用了 XML 名称空间工具,以便将所有属性与定义它们的适当模式相关联。可以通过这种方式提供特定的元数据,例如作者的朋友、离作者最近的机场、办公室的 GPS 坐标等等。可以为资源的附加类和实例创建用户定义的名称空间(模式)。

在语义网中,速记符号被用来减少文档长度。一种流行的机制叫做限定名 ( Qname ,应用于 XML、XML Schema、RDF、RDF Schema、OWL、Dublin Core 等等。以下是最常见的 Qnames:

  • dc
  • 指命名空间 URI [purl.org/dc/elements/1.1/](http://purl.org/dc/elements/1.1/)
  • owl
  • 指命名空间 URI [www.w3.org/2002/07/owl#](http://www.w3.org/2002/07/owl)
  • rdf
  • 指命名空间 URI [www.w3.org/1999/02/22-rdf-syntax-ns#](http://www.w3.org/1999/02/22-rdf-syntax-ns)
  • rdfs
  • 指命名空间 URI [www.w3.org/2000/01/rdf-schema#](http://www.w3.org/2000/01/rdf-schema)
  • xsd
  • 指命名空间 URI [www.w3.org/2001/XMLSchema#](http://www.w3.org/2001/XMLSchema)

语义网应用的选择越来越多。例如,OntosMiner 运行本体驱动的多语言信息提取,并以各种格式提供输出,包括 RDF(S)、XML、OWL 和 N3 [7 ]。在 OWL 中,临床原型可以作为 web 本体来表示和管理。OWL 还可以应用于电子政务表示。网络本体可以用于考虑学习资源的观点,例如在线编程课程 [8 ]。财经头条新闻也可以用本体 [9 ]来表示。以下是一些比较成熟的本体论的简短列表:

  • 书目记录的功能需求,通常简称为 FRBR ,可以用来表达具有creatorpartembodimentsuccessorsubject等属性的书目记录。FRBR 有四个等级:WorkExpressionManifestationItem【0】。
  • 创意作品的许可可以用知识共享来表示。知识共享权利表达语言是描述 RDF 版权的理想语言。它有permitsrequiresprohibitsjurisdictionlegalcodedeprecatedOn等属性,还有WorkLicenseJurisdictionPermissionRequirementProhibition、 1 等类。
  • 开放数字权利语言是一种用于政策表达的开放标准,由 ODRL 倡议 [2 ]开发和推广。使用 ODRL 执行的权利的数字管理也引起了关注,ODRL 也被描述为 W3C 注释 [3 ]。
  • 叙词表和分类法可以用 W3C 标准 SKOS简单知识组织系统来描述。它具有诸如broadernarrowersubjectrelated [4 ]的属性,这些属性对应于分类法、叙词表、分类方案以及进一步结构化的受控词汇表的属性。
  • 地理位置可以在 Geo 中精确标注。它有latlongalt属性以及SpatialThingPoint类 [5 ]。
  • 传记信息可以用传记词汇 6 来表达。
  • 在教育方面,IMS/IEEE 学习对象元数据 ( LOM )可以做一个服务 7 。
  • Math-Net 可用于标准化数学部门和研究机构的信息呈现。
  • 人和他们的社交网络可以通过朋友的朋友(FOAF)的属性如namehomepageknowswebloginterest在 RDF/XML 或 OWL 中精确描述(参见“FOAF”一节) [9 )。所有社交网站都应该使用 FOAF。
  • 专业能力和成就可以通过职业描述来描述(DOAC)(见“DOAC”一节)[0]。DOAC 与可以从 FOAF+DOAC 文件生成的欧洲课程(Europass)兼容。
  • 软件项目,尤其是开源项目,可以用项目描述(DOAP)来表达。

这些模式、词汇和本体只是无尽变化的示范。这份名单无论如何都不完整。Schemaweb.info [2 ]、vocab.org[3]和其他库收集更具体和复杂的词汇、模式和本体,例如啤酒本体 [4 ]、音乐词汇 [5 ]或视频本体 [6 ]。你也可以用谷歌搜索找到很多词汇。

然而,网络本体论有其局限性和开放性的问题。例如,用规则扩展验证 OWL 本体是相当复杂的。但是,可以通过使用声明性方法(一种称为 Datalog 的新语言) [7 ]在符号级别验证它们。应该解决各种本体之间的语义差异。实现这一目标的努力被称为本体对齐。从大型 RDFs 中存储和检索数据只能通过高级技术来执行 [8 ]。

微格式

元数据的一种特殊方法是一组简单的开放数据格式,称为微格式(F).)通过应用和重用现有技术的特性(例如,( X)HTML rel属性),并通过尽可能简单的方法引入新技术——基于普通的旧语义 HTML ( POSH )(例如 hCard),它们与语义 Web 高度相关。它们不仅可以应用于(X)HTML 标记,还可以应用于 XML、RSS、Atom 等等。

微格式可以用classrelrev属性值 [9 ]来表达站点结构、链接权重、内容类型和人际关系。它们非常容易编写,支持它们的软件数量也在增加(例如,Operator [0]和 Tails Export[1]Firefox 的附加组件,Google Chrome 扩展 Michromeformats [2 ],Microformats transformer Optimus[3],或者 Safari、Firefox 和 IE 的 Microformats Bookmarklet[4])。

然而,仍有一些未决问题。例如,应该避免在a元素上应用各种微格式作为多个值(例如,rel="nofollow"rel="friend")。投票链接微格式使用的rev属性不能在 HTML5 中使用。

profile属性提供的配置文件 URIs 不能在 HTML5 中的head元素上使用,其中profile属性值可以在锚(a或链接元素(link)上为rel属性声明。例如,为 hCalender 微格式提供了一个包含所有三个选项的配置文件 URI。hCalendar 微格式基于 iCalendar 标准(RFC 2445 [5 ])。所有使用 hCalendar 符号的内容都应该引用 hCalendar XMDP 配置文件,换句话说就是 [microformats.org/profile/hcalendar](http://microformats.org/profile/hcalendar),如清单 7-7 或清单 7-8 中所示,作为文档头,或清单 7-9 中所示,作为文档体的一部分。这些方法也可以结合使用。

***清单 7-7。*在文档头中提供 hCalendar 头配置文件(不能在 HTML5 中使用)

<head profile="http://microformats.org/profile/hcalendar">

***清单 7-8。*链接到文档头中的 hCalendar 配置文件

<link rel="profile" href="http://microformats.org/profile/hcalendar">

***清单 7-9。*在文档正文中使用 hCalendar 配置文件

<a rel="profile" href="http://microformats.org/profile/hcalendar">hCalendar</a>

HTML5 引入的新结构元素,比如articlenavsection,不能被某些微格式解析器识别。

在接下来的部分中,我们将向您概述一些最流行的微格式,即 hCalendar、hCard、rel="license"rel="nofollow"rel="tag"、投票链接和 XFN。

hCalendar

您可以使用 hCalendar 微格式为体育赛事、周年纪念、提醒、会议、研讨会、会议和其他事件创建日历条目。hCalendar 的根类名是vcalendar。事件的根类名是vevent,这是所有事件列表所必需的。

这些属性由 hCalendar 的元素表示。需要的属性有dtstart,需要以 ISO 日期格式提供, 2summary

清单 7-10 显示了一个 hCalendar 的例子。

***清单 7-10。*为期三天的会议在 hCalendar 召开

`


  

Semantic Web Conference '11


  
The Semantic Web Conference 2011 will take place in Pretoria, 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
   South Africa.

  
Posted on: Aug 25, 2011

  
uid1@host.com

  
Organized by: js@expl.com

  
Dates: October 12, 2011, 09:30 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
   UTC
October 14, 2011, 20:00 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
   UTC

  
Status: Confirmed

  
Filed under:

  

  •     
  • Conference

  •   

`

除了 hAtom、hCalendar、hCard 和 hReview 等微格式之外,还有一些 web 技术将 ISO 8601 日期格式应用于日期时间表示,如 XML、XML schema 数据类型、RDF 和 Atom。

可选属性包括但不限于:locationurldtenddurationrdaterrulecategorydescriptionuidgeoattendeecontactorganizerattachstatusgeo属性有子属性latitudelongitude,而attendee有子属性partstatrole。根据规范,属性列表不是最终的,正在被扩展 [6 ]。

那些必须定期发布新事件的人可能会发现 hCalendar 生成器 hCalendar-o-matic 非常有用。

hCard

hCard 微格式标准可用于通过语义标记 [8 ]来表示个人、公司和组织的联系数据。hCard 元数据应该在网站的联系页面上提供。据雅虎称,2010 年夏天,hCard 突破了 20 亿大关。Search Monkey,使其成为网络上最受个人和组织欢迎的元数据格式。

hCard 基于 vCard 标准(RFC 2426 [9 ])。事实上,现有的 vcard 可以很容易地转换为 hCard。??

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 提示vCard 标准广泛用于存储电子名片。例如,Microsoft Outlook 将这种格式用于“联系人”下的名片。

hCard 类名应该是小写的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 注意hCard 的根类名是vcard。具有类名vcard的元素本身被称为 hCard。

hCard 中的两个必需属性是fnn。然而,如果任何隐含的“N”优化规则有效,则第二个是可选的。 4 属性n可能有子属性family-namegiven-nameadditional-namehonorific-prefixhonorific-suffix

其他所有属性都是可选的,包括adragentbdaycategoryclassemailgeokeylabellogomailernicknamenoteorgphotorevrolesort-stringsoundtel2titletzuidurladr允许的子属性有post-office-boxextended-addressstreet-addresslocalityregionpostal-codecountry-nametypevaluetypevalueemaillatitudelongitudegeoorganization-nameorganization-unitorgtel2typevalue

典型的 hCard 代码类似于清单 7-11 中的。


3vCard 符号BEGIN:VCARD是 hCard 中的class="vcard",N:是class="n",FN:是class="fn",以此类推。

4 如果 n 被省略但fn存在,n的值将等于fn的值。

***清单 7-11。*典型的 hCard

`


   Photo of John Smith
   John Smith
  
Smith and Sons

  
  

    
123 Nice Street

     Vancouver,
     BC,
     V5K
     Canada
  

  
+12345678

`

以下 hCard 元素是单数,只能提供一次:fnnbdaytzsort-stringuidclassrev。所有其他属性都允许有多个实例。

通常,标记元素的 visible 属性值表示 hCard 属性的值。然而,也有一些例外。

对于由一个或多个 hCard 属性的a元素表示的超链接,href属性为所有具有 URL 值的属性提供属性值(例如,photo)。如果使用了img元素,src属性保存所有带有 URL 值的属性的属性值。对于object元素,数据属性提供属性值。元素的内容是所有其他属性的属性值。

如果为带有 hCard 符号的abbr元素提供了title属性,则其值将被视为 hCard 属性,而不是其他情况下使用的元素内容。

虽然手动创建 hCard 元数据很容易,但是 hCard 元数据可以由 hCard 创建者 hCard-o-matic 在规范作者的网站上生成[0]。你只需简单地填写一张关于姓名、组织、国家、电子邮件和其他联系信息的表格,软件就会生成 hCard。

为了提供额外的信息,微格式也可以嵌套。例如,体育赛事评论可能不仅包含评论,同时还包含个人信息(hCard)(清单 7-12 )。

***清单 7-12。*hReview 和 hCard 的组合

`


   The winner takes it all Review
  
  By John Smith, Editor 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  at Consumer Reviews
  

  Rating: 4.5 out of 5.
   A fascinating performance.

`

审查由 hReview 微格式(class="hreview")描述。审核人姓名由span class="reviewer"透露。hCard 微格式嵌套在 hReview 微格式中,以便提供关于他的附加信息(在 <span class="reviewer vcard">中用空格分隔的属性值列表)。hCard 属性描述了审阅者的姓名(fn)、职位(title)和组织(org)。

rel= “许可证”

有数以百万计的网络资源保留部分或全部权利。许多与文档和对象相关联的许可证是复杂的,用户不可能知道它们。

可以将rel="license"微格式添加到指向许可证描述的超链接中。这对于图像尤其有用,但也可以用于任何资源。

基本的图像嵌入只应用于img元素的srcalt属性,如清单 7-13 中的所示。

***清单 7-13。*一个基本的图像嵌入

<img src="hotel.jpg" alt="The Palace Hotel" />

要声明图像许可,还应该使用relhref属性。以知识共享署名-相似分享许可为例,它应该是清单 7-14 所示的形式。

***清单 7-14。*申报图像许可

<img src="hotel.jpg" alt="The Palace Hotel" rel="license" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  **ref="http://creativecommons.org/licenses/by-sa/3.0/" />**

href属性的值提供了描述许可证的资源的相关 URI。一些最常用的许可证契约有 [1 如下:

  • 知识共享署名(cc by)
    [creativecommons.org/licenses/by/3.0/](http://creativecommons.org/licenses/by/3.0/)
  • 知识共享署名共享(cc by-sa)
    [creativecommons.org/licenses/by-sa/3.0](http://creativecommons.org/licenses/by-sa/3.0)
  • 知识共享署名无衍生品(cc by-nd)
    [creativecommons.org/licenses/by-nd/3.0](http://creativecommons.org/licenses/by-nd/3.0)
  • 知识共享署名非商业性(cc by-nc)
    [creativecommons.org/licenses/by-nc/3.0](http://creativecommons.org/licenses/by-nc/3.0)
  • 知识共享归属非商业共享(cc by-nc-sa)
    [creativecommons.org/licenses/by-nc-sa/3.0](http://creativecommons.org/licenses/by-nc-sa/3.0)
  • 知识共享归属非商业无衍生品(cc by-nc-nd)
    [creativecommons.org/licenses/by-nc-nd/3.0](http://creativecommons.org/licenses/by-nc-nd/3.0)

您应该选择一个与您允许他人对您的作品所做的事情相匹配的许可证(商业或非商业分发、重新混合、调整、适当授权共享、修改等等)。

这个微格式的概要文件是[microformats.org/profile/rel-license](http://microformats.org/profile/rel-license) [2 ,可以在head (X)HTML 标签上指定,如清单 7-15 所示。

清单 7-15。"rel=license"?? 的头像简介】

<head profile="http://microformats.org/profile/rel-license">

rel="nofollow "

rel 属性的一个值值得进一步关注,因为它经常在搜索引擎优化 (SEO)中使用。当rel="nofollow"被添加到一个超链接时,链接目的地不应该被搜索引擎考虑为附加排名。如果文档所有者需要超链接,而又不影响他们的网页或外部网站链接的排名,则可以应用该属性值。例如,如果一个超链接在网页上是至关重要的,但是它的目标页面具有非常低的 PageRank,那么该超链接应该提供有rel="nofollow"以避免背书。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 PageRank (PR)是一种链接分析算法,用于为每个 web 文档分配一个数字权重,以便在 0-10 的范围内表示其相对重要性。

例如,如果lowprsite.com的 PR 值很低,但是你必须链接到它,因为那里显示的内容,你可以使用rel="nofollow"微格式,如清单 7-16 所示。

***清单 7-16。*搜索引擎索引页面时不会考虑的链接

<a href="http://www.lowprsite.com" **rel="nofollow"**>Low PR site</a>

清单 7-17 显示了这种微格式的轮廓 URI。

*清单 7-17。rel="nofollow"*的简介 URI

<link rel="profile" href=**"http://microformats.org/profile/rel-nofollow"**>

尽管这种微格式被广泛使用,但它还有几个公开的问题。rel="nofollow"微格式表示一种行为而不是一种关系,所以这个定义是不合逻辑的。微格式的名称并不能反映其真正的含义。它不是名词。它不影响垃圾邮件。最后,许多合法的非垃圾链接可能会被忽略或降低权重,这是一个不幸的副作用,应该消除 [4 ]。

标记

自 2005 年 [5 ]以来,rel="tag"仍然是一个草案规范。与其他微格式和一般元关键字不同,这种微格式可用于可见链接。它可以应用于超链接元素,以指示链接的目的地是当前页面的一般作者指定的标签(关键字)。

在这个微格式中,空格可以作为+%20提供。Unicode 字符根据互联网协会(RFC 3986 [6 ]描述的 URIs 通用语法规则进行编码。

投票链接

投票链接是一种基本的微格式,在a元素的rev属性上有三个可能的值:vote-forvote-againstvote-abstain。这些值是互斥的。可选地,可视翻转可以由title属性提供。清单 7-18 显示了一个例子。

***清单 7-18。*投票链接示例

<a rev="vote-for" href="http://example.com/thumbsup/" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg) title="HTML should be the primary markup language">HTML5</a> <a rev="vote-against" href="http://example.com/thumbsdown/" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg) title="XHTML should be the primary markup language">XHTML5</a>

最初,规范草案在 rel 属性上应用了投票链接,现在不推荐使用 [7 ]。

清单 7-19 显示了 URI 档案参考。

***清单 7-19。*投票链接的 URI 简介

<link rel="profile" href=**"http://microformats.org/profile/vote-links"**>

XFN

第一个 HTML 微格式 XHTML 朋友网络(XFN)于 2003 年 12 月推出。XFN 是由全球多媒体协议组织设计的,用简单的超链接 [9 ]来表达人际关系。XFN 对于小册子风格的主页和博客条目特别有用。

应该提供人名作为超链接的文本(在<a></a>之间)。个人网站是超链接的目标,换句话说,是href属性的值。所有关系数据都可以由a元素上的rel属性提供。允许多个值,并用空格分隔。友谊类型可以是contactacquaintancefriend。如果是个人认识的人,可以用rel属性的met属性值来表示。例如,莱斯利·西科斯的一个朋友可以在他的网站上发布 XFN 的关系,如清单 7-20 所示。

***清单 7-20。*链接到朋友的网站

I am an old friend of <a href="http://lesliesikos.com" **rel="friend met"**>Leslie Sikos</a>.

该人的住所与其朋友的住所之间的距离可以用co-residentneighbor值来表示。亲属可以设置为childparentsiblingspousekin。也支持职业关系co-workercolleague。感情也可以表达(musecrushdatesweetheart)【0】。

CSS 样式也可以添加到 XFN 元数据中。例如,朋友可以用粗体显示,同事用斜体显示,CSS 规则如清单 7-21 所示。

***清单 7-21。*造型 XFN

`a[rel~=“friend”] {
  font-weight: bold;
}

a[rel~="colleague "] {
  font-style: italic;
}`

虽然从零开始创造 XFN 很容易,但 XFN 的创造者,如 XFN 创造者[1 或 Exefen[2 可能会加快发展。

XMDP

XHTML 元数据配置文件(XMDP)元数据是一种基于 XHTML 的格式,用于定义机器可读和人类可读的元数据配置文件。XMDP 由属性定义列表、可选描述以及一个或多个定义列表项(如果适用)组成。配置文件定义列表由class ( 列表 7-22 )标识。

清单 7-22。 XMDP 配置文件定义

<dl class="profile">

定义术语由id ( 列表 7-23 )标识。

清单 7-23。【XMDP 的定义术语和数据

 <dt id="property1">property1</dt>  <dd>propertydesc</dd>

例如,信息性使用的meta属性authorkeywords可以由 XMDP 定义,如清单 7-24 [3 所示。

***清单 7-24。*一个完整的 XMDP 例子

`


   author
  
A person who wrote (at least part of) the document.

   keywords
  
A comma and/or space separated list of the keywords or keyphrases of the document.

`

清单 7-25 显示了 XMDP 配置文件 URI 的结构。

***清单 7-25。*一个 XMDP 配置文件 URI

<link rel="profile" href=**"http://gmpg.org/xmdp/samplehtmlprofile.html"**>

草稿和未来的微格式

新开发的微格式的数量正在增加。您可以应用它们来提供各种资源的特定元数据。

地址信息可以用adr [4 来描述。地理坐标(经纬度对)可根据世界大地测量系统 (WGS)以geo微格式 [5 ]提供。hAtom可用于网络联合组织 [6 ]。通过使用hAudio微格式 [7 ]可以嵌入有关音频记录的信息。hListing微格式可以应用于开放的分布式列表。图像、视频和音频媒体组件可以用hMedia [9 来描述。hNews是一种在网站上提供新闻内容的微格式[0]。产品描述可以用hProduct1 表示。烹饪和烘焙食谱可以在网上用hRecipe [2 描述。简历和履历可以用hResume [3 发布。文档评论可以写在hReview [4 。rel-directory微数据可以指示链接目的地是引用当前页面的目录列表。提供下载的文件附件可以用rel-enclosure微格式 6 表示。rel-home提供到网站主页的超链接 [7 ]。微格式是一种在线支付机制。robots meta标签的返工是robots-exclusion微格式 9 。xFolk微格式(代表 xFolksomony)是为发布书签集合[0]而设计的。

微格式社区欢迎元数据爱好者创建新的微格式。

微数据

HTML5 中引入了微数据的概念,用于标记内容,以描述特定类型的信息 [2 ]。HTML5 微数据可用于对人、组织、事件、产品、评论和链接的语义描述。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 注意html 5 微数据中提供的很多描述也可以用微格式表示(前面讨论过),也可以用 RDFa 表示(后面会看到)。然而,每种格式都有其优点和缺点,这将在后面详细描述。

各种元数据可以用来描述网络上的人。表示姓名、职务或地址等属性的选项之一是微数据。可以用微数据描述一个人,如清单 7-26 所示。

***清单 7-26。*用微数据描述一个人

`


   John Smith lives in Adelaide, Australia and works as a 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
   Senior Developer at 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
   LS Inc.

`
事件

研讨会、会议、体育赛事等事件可以通过以下微数据属性进行描述:

  • description:事件的描述
  • duration:ISO 持续时间格式的事件持续日期
  • endDate(dtend):ISO 日期格式的事件结束日期和时间
  • eventType ( category):事件的类别,例如ConcertFestivalLecture
  • geo:地点的地理坐标,有两个元素:latitudelongitude
  • location:活动的地点或场所
  • photo:与事件相关的照片或图像的超链接
  • startDate ( dtstart):事件的开始日期和时间,ISO 日期格式(必选)
  • summary:事件名称(必填)
  • url:描述事件详情的网页超链接

例如,一个体育赛事可以被描述为清单 7-27 中的所示。

***清单 7-27。*用微数据描述体育赛事

`


National flyball competition
Flyball
The national flyball competition is approaching.
When: Nov 13, 9:00AM—12:00AM
Where: Dog Park, 123 Arena Eve, Melbourne, VIC
Category: Sport

`
使用微数据的图像许可

提供图像许可信息的选项之一是 HTML5 微数据。清单 7-28 显示了一个例子。

***清单 7-28。*用微数据描述图像许可

`


   My Aston Martin DB9.
  
The DB9.

  

All images are licensed under the

强烈建议您在网上发布带有许可元数据的照片。这可以消除版权问题和许可问题,并有助于先进的网络搜索。

福夫

FOAF 是一个机器可读的本体,用来描述人们以及他们的联系数据、兴趣和与他人的关系。2007 年,Berners-Lee 定义了一个新的语义网概念,称为“巨型全球图”。他表示,FOAF 是 GGG 的重要组成部分:“我在一个 FOAF 文件中表达了我的网络,这是革命的开始” 4 。

与用 PHP 或 JSP 开发的传统在线社交网络不同,FOAF 网络可以在没有中央数据库的情况下构建。此外,FOAF 内容可以自动处理。没有人必须在 FOAF 网络中寻找朋友,因为系统本身描述了联系。 5 根据 2000 年开始的原 FOAF 项目,这些系统都是开放式网络 [5 ]。

FOAF 搜索引擎越来越多,比如 QDOS FOAFNet [6 ],netEstate Friend Of A Friend (FOAF)搜索引擎 [7 ],语义网搜索 [8 ],或者 Quatuo [9 。例如,后者也可用于创建 FOAF 文件。然而,也有专门的 FOAF 发电机。最著名的是由利·多兹开发的 FOAF-O-MATIC。FOAF 文件可以通过填表生成(图 7-2)【0】。


然而,任何人都可以提供自己的 FOAF 文件,并搜索他人的文件。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 7-2。 FOAF 自动驾驶汽车在行动

一些流行的内容管理系统,比如 Drupal,也支持 FOAF。在这些工具出现之前,缺乏图形用户界面可能是这项强大技术直到最近才得到普遍使用的主要原因。

FOAF 词汇表提供了各种类和属性来表达个人数据和关系:

  • 基本信息
    • 类:AgentPerson
    • 属性:namenicktitlehomepagemboxmbox_sha1sumimgdepiction ( depicts)、surnamefamily_namegivennamefirstName
  • 个人信息
    • 属性:weblogknowsinterestcurrentProjectpastProjectplanbased_nearworkplaceHomepageworkInfoHomepageschoolHomepagetopic_interestpublicationsgeekcodemyersBriggsdnaChecksum
  • 在线账户
    • 班级:OnlineAccountOnlineChatAccountOnlineEcommerceAccountOnlineGamingAccount
    • 属性:holdsAccountaccountServiceHomepageaccountNameicqChatIDmsnChatIDaimChatIDjabberIDyahooChatID
  • 项目和成员资格
    • 班级:ProjectOrganizationGroup
    • 属性:membermembershipClassfundedBytheme
  • 文档和图像
    • 班级:DocumentImagePersonalProfileDocument
    • 属性:topic(page)primaryTopic``tipjar``sha1``made(maker)thumbnail``logo

一个完整的 FOAF 描述看起来像清单 7-29 。

***清单 7-29。*与 FOAF 描述个人元数据

<foaf:Person>   <foaf:name>Thomas Davis</foaf:name>   <foaf:gender>Male</foaf:gender>   <foaf:title>Mr</foaf:title>   <foaf:givenname>Thomas</foaf:givenname>   <foaf:family_name>Davis</foaf:family_name>   <foaf:homepage rdf:resource="http://www.example.com"/>   <foaf:weblog rdf:resource="http://www.example.com/blog/"/> </foaf:Person>

正如您将看到的,这样的描述可以嵌入到 XML 和 RDF 文件中。与传统的社区门户(如 PHP 和 MySQL 驱动的门户)的配置文件相比,这些文件的全部内容都可以自动处理。任何在网站上发布 FOAF 或 DOAC 文件的人都可以提供机器可读的个人介绍、资源以及同事和朋友的链接。

DOAC

FOAF 属性可以被认为是脸书上描述的个人特征和关系的语义对等物,DOAC 属性是 LinkedIn 特征的语义对等物。DOAC 词汇表不仅提供了描述专业能力的类和属性,还重新应用了来自foaf:Person领域的 FOAF 属性,包括doac:summarydoac:experiencedoac:educationdoac:skilldoac:referencedoac:publication、 7 。

就业历史和职业经历可以通过doac:Experience类的doac:titledoac:date-startsdoac:date-endsdoac:positiondoac:activitydoac:location属性来描述。

教育培训信息可以通过doac:Education类的doac:titlefoaf:organizationdoac:date-startsdoac:date-endsdoac:subjectdoac:level属性提供。

doac:Skill类有子类doac:Skilldoac:LanguageSkilldoac:SocialSkilldoac:OrganizationalSkilldoac:ComputerSkilldoac:DrivingSkill

一个 FOAF+DOAC 的文件看起来像清单 7-30 中的。

***清单 7-30。*一个完整的 FOAF+DOAC 的例子

<foaf:Person>   <foaf:name>John Smith</foaf:name>   <foaf:mbox rdf:resource="mailto:john@jsmith.com" />   <foaf:homepage rdf:resource="http://www.jsmith.com" />   <doac:experience>     <doac:VolunterExperience>       <doac:title>CEO</doac:title>       <doac:organization>ABC Company</doac:organization>       <doac:start-date>2010-04-06</doac:start-date>       <doac:end-date>2011-09-18</doac:end-date>     </doac:VolunterExperience>   </doac:experience>   <doac:education>     <doac:Degree>       <doac:title>Information Management</doac:title>       <doac:organization>Nanyang Technological University</doac:organization>       <doac:start-date>2000-09-01</doac:start-date>       <doac:end-date>2005-06-15</doac:end-date>     </doac:Degree>   </doac:education>   <doac:skill>     <doac:LanguageSkill>       <doac:language>en</doac:language>       <doac:reads rdf:resource="http://ramonantonio.net/doac/0.1/#nativelevel" />       <doac:writes rdf:resource="http://ramonantonio.net/doac/0.1/#nativelevel" />       <doac:speaks rdf:resource="http://ramonantonio.net/doac/0.1/#nativelevel" />     </doac:LanguageSkill>   </doac:skill> </foaf:Person>

当有人在找工作或想要以机器可处理的格式描述他们职业生涯的基石时,这种元数据特别有用。因此,DOAC 文件可以用来使软件代理人根据他们的资格和经验自动提供工作。

都柏林核心

都柏林核心是由都柏林核心元数据倡议(DCMI)开发和发布的一组基本元数据元素,并由国际标准化组织(ISO 15836[2)、互联网工程任务组(IETF)(RFC 5013[3)和美国国家标准协会(ANSI/NISO z 39.85-2007[4)进行标准化。Dublin Core 元数据经常用在(X)HTML 文档head部分(类似于一般的 meta 标签)、XHTML+RDFa 文档的属性中,以及 feed channels 等其他文件中。它可以使用 meta 和 link (X)HTML 元素、RDFa、RDF/XML 表示和普通 XML [5 ]来表示。都柏林核心语法在由都柏林核心抽象模型规范 6 定义的参考模型中提供。

都柏林核心元数据元素集合定义了都柏林核心的 15 个基本元素,包括contributorcoveragecreatordatedescriptionformatidentifierlanguagepublisherrelationrightssourcesubjecttitletype [7 。如果专门使用这些元素,我们说的就是简单都柏林核心。扩展的元素集是更高级别的都柏林核心集,称为合格都柏林核心集,它提供了更具体的元素。除了简单都柏林核心的一般规则,进一步的规则适用于合格都柏林核心。合格的都柏林核心属性不仅可以是 15 个都柏林核心元素,还可以是都柏林核心元数据倡议或 DCMI 元素细化所推荐的其他元素。可选地,合格的都柏林核心值可能具有关联的编码方案,每个编码方案由一个名称来标识。元素细分的处理类似于属性(与 Dublin Core 名称空间相关联的元素细分名称)。

都柏林核心命名空间

Dublin Core 名称空间可以由(X)HTML link元素上的rel属性声明,也可以用 XML 中的xmlns属性声明。(X)HTML 声明由前缀和名称空间 URI 组成(见清单 7-31 )。

***清单 7-31。*都柏林核心命名空间声明

<link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />

所有 DCMI 属性、类和编码方案的命名空间 URIs 由以下 DCMI 命名空间 URIs [8 ]定义:

  • [purl.org/dc/dcmitype/](http://purl.org/dc/dcmitype/)

    DCMI 类型词汇中的类别

  • [purl.org/dc/dcam/](http://purl.org/dc/dcam/)

    DCMI 抽象模型中使用的术语

  • [purl.org/dc/elements/1.1/](http://purl.org/dc/elements/1.1/)

    都柏林核心元数据元素集,版本 1.1(15 个原始元素)

  • [purl.org/dc/terms/](http://purl.org/dc/terms/)

    所有其他 DCMI 属性、类和编码方案

DCMI 抽象模型还应用了资源描述框架和 RDF Schema (RDFS)的一些语义概念,包括resourceproperty / elementclasssyntax encoding scheme,一些关系(has domainhas rangesub-property ofsub-class of),以及普通类型值字符串的概念 [9 。

简单的都柏林核心

都柏林核心记录由一个或多个属性及其相关属性值组成(清单 7-32 )。

清单 7-32*。*DC 属性(Creator)和与之关联的值(John Smith )

<meta **name="DC.Creator" content="John Smith"** />

每个属性都应该是来自 Dublin Core 元数据元素集的元素。所有属性都是可选的,并且可以重复[0]。DC 属性值被视为文字字符串,可能有关联的语言(例如,en-US)。都柏林核心记录和它们所应用的资源没有联系;然而,这种链接可以选择由元素identifier提供,资源 URI 作为属性值(清单 7-33 )。

***清单 7-33。*都柏林核心元数据与identifier

<dc:title>   Tutorials </dc:title> <dc:description>   HTML5 and CSS3 tutorials. </dc:description> <dc:publisher>   Dr. Leslie F. Sikos </dc:publisher> **<dc:identifier>** **  http://www.lesliesikos.com/tutorials/** **</dc:identifier>**

都柏林核心元数据倡议为都柏林核心的实施推荐了三个通用规则:

  1. Dublin Core properties should be provided as XML elements. Property values should be the contents of those elements. Listing 7-34 shows an example.

    ***清单 7-34。*作为 XML 元素的 Dublin Core 属性

    <dc:title>Dublin Core in XML element format</dc:title>

  2. All Dublin Core property names should be lowercase. Listing 7-35 shows an example.

    ***清单 7-35。*小写的都柏林核心酒店名称

    <dc:title>Dublin Core example</dc:title>

  3. Multiple property values should be declared by repeating the XML element for that property (see Listing 7-36).

    ***清单 7-36。*多个 Dublin Core 属性值的重复 XML 元素

    <dc:creator>John Smith</dc:creator> <dc:creator>Robert Johnson</dc:creator>

合格的都柏林核心

合格的 Dublin Core 使得比简单的 Dublin Core 更具体和更高级(有意义)的注释成为可能。使用合格的都柏林核心元数据类似于添加简单的都柏林核心,除了合格的都柏林核心属性不仅可以来自最初的 15 个 DC 元素的集合,还可以来自 DCMI 元数据术语建议 [1 ]定义的附加元素或元素细化。此外,所有合格的 Dublin Core 属性值可能具有相关联的编码方案,该编码方案具有在 DCMI 元数据术语建议中被列为Term name的唯一名称。

除了一般实施指南之外,以下规则适用于合格的都柏林核心:

  1. Similar to DC properties, the element refinement names should be XML qualified names (QName) that link to the associated DCMI namespace name (Listing 7-37).

    ***清单 7-37。*带 Dublin Core 的 XML QName】

    <dcterms:available>2011-04</dcterms:available>

    在本例中,资源变得可用或将变得可用的日期或期间用合格的 Dublin Core 表示。

    元素细分可能会进一步嵌入元素细分。

  2. Encoding schemes should be declared by the xsi:type attribute on the XML element for the property. The name of the encoding scheme is provided as the attribute value in the form of a QName. Listing 7-38 shows an example.

    ***清单 7-38。*编码方案申报

    <dc:identifier xsi:type="dcterms:URI">   http://www.example.com/ </dc:identifier>

  3. The names of both the element refinements and the encoding schemes should be those that are specified in the DCMI Metadata Terms recommendation. The first letter of the element and element refinement names should always be in lowercase. The first letter of encoding scheme names should be in uppercase. Scheme names are often provided in all uppercase. Listing 7-39 shows an example.

    ***清单 7-39。*元素细化和编码方案

    <dcterms:isPartOf xsi:type="dcterms:URI">   http://www.example.com/ </dcterms:isPartOf>

  4. The language of the property value can optionally be provided by using the xml:lang attribute (Listing 7-40).

    ***清单 7-40。*为都柏林核心设置自然语言

    <dc:subject xml:lang="en">   website standardization </dc:subject> <dc:subject xml:lang="hu">   weblap-szabványosítás </dc:subject>

由(X)HTML 元和链接元素表示的都柏林核心

URI 引用可以是 URI,也可以是以 RFC 3986 格式 [2 ]表示的相对引用。URI 参考资料应完整表示(清单 7-41 )。

***清单 7-41。*元数据subject的完整 URI 引用

<link rel="DCTERMS.subject" href="http://example.org/docs" />

仅当相对引用可以由基本 URI(base元素上的href属性或来自文档 URI)解析时,才允许相对引用。清单 7-42 显示了一个例子。

***清单 7-42。*都柏林核心集的相对 URI 参考

`

`

一个前缀名是 DC-HTML 格式中使用的 URI 的缩写 [3 ]。一个 DC-HTML 前缀名称由一个前缀后跟一个句点 ( .)和一个本地名称组成。例如,以 DC-HTML 为前缀的名称被表示为属性值,如清单 7-43 所示。

***清单 7-43。*一个 DC-HTML 前缀名

<link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" /> <meta name="DC.title" content="Smartphone descriptions" />

Dublin Core 语句由(X)HTML metalink元素表示,这取决于语句的内容(文字或非文字值代理)。例如,文档标题可以由 meta 元素提供,如清单 7-44 中的所示,而主题由清单 7-45 中的link元素表示。

***清单 7-44。*使用 Dublin Core 声明的文件标题

<meta name="DC.title" content="Smartphone descriptions" />

***清单 7-45。*使用 Dublin Core 声明的文档主题

<link rel="DCTERMS.subject" href="http://example.org/topic" title="Topic" />

关于文档语言、作者等的 Dublin Core 元数据可以在 XHTML 文档的 head 部分声明,如清单 7-46 所示。

***清单 7-46。*用 Dublin Core 描述的文档语言和创建者

<meta name=**"**DC.language**"** content=**"**en**"** /> <meta property=**"**dc:creator**"** content=**"**John Smith**"** />

用 XML 表示的都柏林核心

建议使用简单的 Dublin Core 元数据根据 XML 模式而不是 XML DTDs 创建 XML 应用。应该应用 XML 名称空间来标识都柏林核心元素、元素精化或编码方案。属性应该编码为 XML 元素和值。这些 XML 元素的名称应该是 XML 限定名(QNames)。属性名应该全部小写。当提供多个属性值时,XML 元素应该重复。

XML 元素的xsi:type属性应该用于实现编码方案。元素细化和编码方案使用由 DCMI 元数据术语指定的名称。属性应该被应用来在 XML [4 ]中提供合格的 Dublin Core 值的语言。清单 7-47 显示了一个复杂的例子。

***清单 7-47。*XML 中的 Dublin Core

<?xml version="1.0"?> <metadata ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg) ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg) xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg) xsi:schemaLocation="http://example.com/xmlapp/ http://example.com/schemata/schema.xsd" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg) xmlns:dc="http://purl.org/dc/elements/1.1/">   <dc:title>     DC in XML sample document   </dc:title>   <dc:description>     The description of the XML application.   </dc:description>   <dc:publisher>     John Smith   </dc:publisher>   <dc:identifier>     http://www.example.com   </dc:identifier> </metadata>

都柏林核心描述集(DC-DS-XML)也可以用 XML [5 ]来表示。这些集合由一个或多个描述(包含零个或一个描述的资源 URI)以及一个或多个语句组成。这些语句包含一个属性 URI 和一个值代理。根据值代理的类型,它可以是一个值字符串(在文字值代理的情况下)或零个或一个值 URIs,零个或一个词汇编码方案 URI,以及零个或多个值字符串(在非文字值代理的情况下)。值字符串可以是普通值字符串,也可以是类型化值字符串。第一个可以可选地与值字符串语言相关联,而后一个具有语法编码方案 URI。非文字值也可以用其他描述来描述。

一个描述集元素有一个扩展名称,带有一对 XML 名称空间名称[purl.org/dc/xmlns/2008/09/01/dc-ds-xml/](http://purl.org/dc/xmlns/2008/09/01/dc-ds-xml/)和本地名称descriptionSet ( 清单 7-48 )。

***清单 7-48。*一个描述集合元素

<?xml version="1.0" encoding="UTF-8" ?> <dcds:descriptionSet ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg) xmlns:dcds="http://purl.org/dc/xmlns/2008/09/01/dc-ds-xml/">   <dcds:description>     <dcds:statement ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)      dcds:propertyURI="http://purl.org/dc/terms/title">       <dcds:literalValueString>         Smith and Sons Inc Home Page       </dcds:literalValueString>     </dcds:statement>   </dcds:description> </dcds:descriptionSet>

描述元素是 XML 元素,是名为dcds:description的描述集元素的子元素。

statement 元素是由 description 元素的子 XML 元素表示的单个 Dublin Core 语句。语句元素的名称是dcds:statement

值字符串元素是语句元素的子元素。文字值代理,包含一个表示文字的值字符串的文字值的值代理,可以由值字符串元素dcds:literalValueString编码,每个语句元素只能提供一次。

非文字值代理可选地包含一个值 URI,表示为语句元素的 XML 属性dcds:valueURI的值(清单 7-49 )。

***清单 7-49。*非文字值代理中的可选值 URI

<dcds:statement ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg) dcds:propertyURI="http://purl.org/dc/terms/publisher" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg) dcds:valueURI="http://example.com">   <dcds:valueString>Smith and Sons Inc</dcds:valueString> </dcds:statement>

对于非文字值代理,词汇编码方案 URI 可以选择由dcds:vesURI属性提供。

普通值字符串的值字符串语言可以由值字符串元素的xml:lang属性提供。应该应用 IETF RFC 4646 或更高版本 [6 的语言标识符。清单 7-50 显示了一个例子。

***清单 7-50。*值字符串语言声明

<?xml version="1.0" encoding="UTF-8" ?>   <dcds:descriptionSet ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)    xmlns:dcds="http://purl.org/dc/xmlns/2008/09/01/dc-ds-xml/">     <dcds:description ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)      dcds:resourceURI="http://example.com">     <dcds:statement ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)       dcds:propertyURI="http://purl.org/dc/terms/title">       <dcds:literalValueString xml:lang="en-US">         Example document       </dcds:literalValueString>     </dcds:statement>   </dcds:description> </dcds:descriptionSet>

对于类型化的值字符串,应该使用语法编码方案 URI 属性dcds:sesURI

用 RDF 表示的都柏林核心

简单的 Dublin Core 也可以用 RDF 表示,包括 RDF/XML 序列化67。清单 7-51 显示了一个包括 XML 声明、XML DTD 引用、RDF 声明和资源描述的例子。

***清单 7-51。*RDF/XML 中的 Dublin Core

`<?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
    dc:titleInternet for everyone</dc:title>
    dc:creatorLeslie Sikos</dc:creator>
    dc:formatBook</dc:format>
    dc:identifierISBN 963 9425 08 7</dc:identifier>
  </rdf:Description>
</rdf:RDF>`

XML 字符编码规则适用。可选地,这些文档中任何元素的语言都可以由xml:lang属性提供。

在 RDF 中表达合格的 Dublin Core 由另一个 DCMI 规范 [8 描述。相反,像dc:creatordc:date这样的属性在本文中被认为是实体而不是名称。清单 7-52 显示了一个例子。

***清单 7-52。*RDF 中合格的 Dublin Core

<http://www.example.com> dc:creator <http://www.example.org/pj>

定义 DC RDF 实现的原始规范已经被 2008 规范 [9 ]和注释[0]所取代。例如,规范中已经删除了 DCMI 属性和类的 RDF 模式。


6 RDF 将在接下来的章节中描述。

资源描述框架

虽然最初被设计为元数据数据模型,资源描述框架 ( RDF )已经成为一种通用的 web 资源描述和建模语言。它可以用于存储在 web 资源中的信息的概念描述或建模。RDF 可以用来创建任何种类资源的机器可读描述,因为 RDF 文件可以用任意数量的外部词汇表进行扩展。与许多 W3C 标准不同,RDF 没有单一的规范,而是由一组文档定义的 [1 ]。

RDF 数据模型可用于描述可由 URI 识别的任何种类的资源。如前所述,RDF 文档是一系列被称为 RDF 三元组(资源-属性-值或主体-谓词-对象)的语句。表示主语和宾语之间关系的谓语(性质)只能是二元的。RDF 中的任何表达式都是三元组的集合。一组三元组被称为 RDF 图,这是一个有向的、带标签的图,表示网络上的信息。RDF 图的节点是资源和值 [2 ]。

如前所示,一个人可以用 FOAF 词汇来描述。这种描述可以用 XML 或 RDF 编写。清单 7-53 展示了如何用 RDF 编写 FOAF。

***清单 7-53。*用 RDF 描述一个人

`<rdf:RDF 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
xmlns:rdf=“http://www.w3.org/1999/02/22-rdf-syntax-ns#” 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
xmlns:foaf=“http://xmlns.com/foaf/0.1/” 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

<foaf:Person rdf:about=“http://www.example.com/johnsmith/contact.rdf#johnsmith”>
    <foaf:mbox rdf:resource=“mailto:john.smith@example.com” />
    <foaf:homepage rdf:resource=“http://www.example.com/johnsmith/” />
    foaf:family_nameSmith</foaf:family_name>
    foaf:givennameJohn</foaf:givenname>
  </foaf:Person>
</rdf:RDF>`

图 7-3 将该文件表示为 RDF 图。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

***图 7-3。*一个简单的 RDF 图

正如您将看到的,RDF 可以用多种格式表示。例如,清单 7-54 是清单 7-53 的另一种表示法。这个符号,N3,也将在后面详细描述。

***清单 7-54。*相当于前一个例子的 N3

`@prefix :     http://www.example.org/~joe/contact.rdf# .
@prefix foaf: http://xmlns.com/foaf/0.1/ .
@prefix rdf:  http://www.w3.org/1999/02/22-rdf-syntax-ns# .

:joesmith a foaf:Person ;
  foaf:givenname “Joe” ;
  foaf:family_name “Smith” ;
  foaf:homepage http://www.example.org/~joe/ ;
  foaf:mbox mailto:joe.smith@example.org .`

RDF 名称空间是[www.w3.org/1999/02/22-rdf-syntax-ns#](http://www.w3.org/1999/02/22-rdf-syntax-ns),它通常与名称空间前缀rdf:相关联。

RDF 图的 URI 引用中的 Unicode 字符串不能包含控制字符(#x00#x1F#x7F#x9F)。这些 URIs 应该是带有可选片段标识符的绝对 URIs。

RDF 文字用于标识数字和日期之类的值。RDF 文字是包含一个或两个命名组件的 Unicode 字符串。它们应该写成在 归一化形式 C 中归一化的 UTF-8(典范分解后是典范合成 [3 ])。RDF 文字可以是普通的,也可以是类型化的。普通文字是由可选的语言标签组合而成的字符串(规范化为小写)。它们对应于自然语言中的纯文本。类型化文字是与数据类型 URI 结合的字符串,用于将词汇到值的映射应用于文字字符串。

资源描述框架的正式语法是在 1999 年引入的。RDF 有以下词汇:

  • rdf:Alt, rdf:Bag, rdf:Seq

    替代容器、无序容器和有序容器(rdfs:Container是三者的超类)

  • rdf:List

    RDF 列表的类别

  • rdf:nil

    一个空列表(rdf:List的一个实例)

  • rdf:Property

    属性的类别

  • rdf:Statement, rdf:subject, rdf:predicate, rdf:object

    具体化

  • rdf:type

    一个谓词,标识资源是其实例的类

  • rdf:XMLLiteral

    类型化文字的类

这个词汇表也被用作可扩展知识表示语言 RDF 模式的基础(参见“RDF 模式”一节)。

有一种叫做 SPARQL (发音为“Sparkle”)的查询语言,可以用来检索和操作以 RDF 存储的信息,或者以 RDF [5 ]格式存储的信息。输出可以是结果集或 RDF 图。还可以通过一种称为 SPARQL 1.1 统一 HTTP 协议 [6 ]的协议来更新 RDF 图。

从标准化的角度来看,资源描述框架技术非常重要,原因有很多。首先,RDF 的基本数据模型是一个标准图。第二,命名系统应用标准的 URL。RDF 使用的数据检索和组合机制也是标准技术。

RDF 可以以多种语法/序列化格式提供,例如,RDF XML 序列化(RDF/XML)、RDFa、Turtle、Notation3、JSON-LD、N Triples [7 ]、TRiG [8 ]和 TRiX [9 。下一节将介绍最常见的方法。

XML 序列化语法中的 RDF

RDF 应用推荐和最常用的语法是 XML 序列化格式 RDF/XML [0]。尽管 RDF 还有其他更容易阅读和书写的符号(见下一节),RDF/XML 提供了广泛接受的 XML 文档。然而,RDF/XML 的基本问题是用树结构表示图形的矛盾。

RDF/XML 的互联网媒体类型是application/rdf+xml。推荐的文件扩展名是.rdf

RDF 的 XML 序列化提供了格式良好的 XML 文档(第一章)。

例如,一个人的维基百科页面可以用 RDF/XML 以机器可读的形式描述,如清单 7-55 所示。

***清单 7-55。*用 RDF/XML 描述的维基百科页面

<rdf:RDF ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg) xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg) xmlns:dc="http://purl.org/dc/elements/1.1/">   <rdf:Description rdf:about="http://en.wikipedia.org/wiki/Rowan_Atkinson">     <dc:title>Rowan Atkinson</dc:title>     <dc:publisher>Wikipedia</dc:publisher>   </rdf:Description> </rdf:RDF>

N3 语法中的 RDF

符号 3,通常缩写为 N3 ,是 RDF 的非 XML 序列化的简写。它是 RDF 的超集,比 RDF 的 XML 序列化更紧凑。N3 的语法由 W3C 以多种格式 [1 ]定义,例如以扩展的巴科斯诺尔形式(EBNF)7[2】。

N3 的 MIME 类型和字符编码应该声明为text/n3; charset=utf-8。典型的文件扩展名是.n3。语法中没有指定标记化和空白处理。

用于解析相对 URIs 的基本 URIs 可以用形式为@base <[example.com/overview/](http://example.com/overview/)>@base指令来设置。

前缀可以通过@prefix指令与名称空间 URI 相关联。

字符串转义的几个规则来源于 Python,分别是:stringliteralstringprefixshortstringshortstringitemlongstringlongstringitemshortstringcharlongstringchar。此外,还可以应用在另一个 RDF 序列化(N-Triples)中使用的\U扩展。合法的转义序列有\newline\\(反斜杠、\)、\'(单引号、')、\"(双引号、")、\n (ASCII 换行,LF)、\r (ASCII 回车,CR)、\t (ASCII 水平制表符,Tab)、\uhhhh(BMP 中的 Unicode 字符)和\U00hhhhhh(平面 1-16 符号中的 Unicode 字符)。无法使用转义符\a\b\f\v,因为 RDF 中不允许使用相应的字符。

速记符号可用于以下常见谓词:

  • a(代表<[www.w3.org/1999/02/22-rdf-syntax-ns#type>](http://www.w3.org/1999/02/22-rdf-syntax-ns#type>))
  • =(代表<[www.w3.org/2002/07/owl#sameAs](http://www.w3.org/2002/07/owl#sameAs)>)
  • =>(代表<[www.w3.org/2000/10/swap/log#implies](http://www.w3.org/2000/10/swap/log#implies)>)
  • <=(代表<[www.w3.org/2000/10/swap/log#implies](http://www.w3.org/2000/10/swap/log#implies)>)

可以在新的词汇表中定义新的类和新的属性 [3 ]。一个类可以被定义为清单 7-56 ,因为rdf:type属性在 N3 被缩写为a


EBNF 是一个元语法符号家族,可以用来表达上下文无关的语法。

***清单 7-56。*N3 的一个 RDF 班

:Sport a rdfs:Class.

该类的一个对象可以被定义,如清单 7-57 所示。

***清单 7-57。*声明一个 N3 类的对象

:Kayak a :Sport.

对象可以在多个类中。类之间的关系可以写成清单 7-58 所示。

***清单 7-58。*N3 的阶级关系

:Watersport a rdfs:Class; rdfs:subClassOf :Sport .

可以定义一个属性,如清单 7-59 所示。

***清单 7-59。*N3 财产申报

:paddle a rdf:Property.

类之间的关系不一定是层级关系。你可以在清单 7-60 中看到一个例子。

***清单 7-60。*N3 的非等级关系

:paddle rdfs:domain :Sport;         rdfs:range :Watersport.

上一节描述的这个人的维基百科页面可以用 N3 语编写,如清单 7-61 所示。

***清单 7-61。*N3 的一个维基百科页面描述

`@prefix dc: http://purl.org/dc/elements/1.1/.

http://en.wikipedia.org/wiki/Rowan_Atkinson
  dc:title “Rowan Atkinson”;
  dc:publisher “Wikipedia”.`

Notation3 有几个子集,包括 Turtle、N-Triples、n3 RDF 和 N3 规则。其中最流行的将在下一节讨论。

Turtle 语法中的 RDF

N3 的一个子集是简洁的 RDF 三重语言,通常被称为海龟。Turtle 提供了一种语法,以紧凑的文本形式描述 RDF 图,这种形式很容易开发。它是符号 3 (N3)的子集和 N-三元组的超集。Turtle 在语义 Web 开发人员中很流行,被认为是 RDF/XML 的易于阅读的替代品。Turtle 正在被万维网联盟标准化。海龟文件的典型文件扩展名是.ttl。海龟文件的字符编码应该是 UTF-8。乌龟的 MIME 类型是text/turtle。Turtle 得到了很多可用于查询和分析 RDF 数据的软件框架的支持,比如 Jena [5 ]、Redland [6 ]、Sesame [7 ]。

Turtle 文件由一系列指令、代表三元组的语句和空行组成。在 Turtle 中,三元组可以写成一系列主-谓-宾语术语,由空格分隔,以句号(.)结束。URIs 应该写在尖括号中(<>)。文字由双引号("")分隔。清单 7-62 显示了一个例子。

***清单 7-62。*海龟语法的一个基本例子

<http://example.com/shop> <http://example.com/contact> "Text content" .

URI 长度可以通过@PREFIX ( 列表 7-63 )减少。

***清单 7-63。*一个 URI 前缀声明

@PREFIX ex: <http://example.com/> .

在这种情况下,第一个例子可以写成清单 7-64 。

***清单 7-64。*使用前缀

ex:shop ex:contact "Text content" .

其中ex:shop声明了[example.com/](http://example.com/)shop的连接,揭示了最初的 URI [example.com/shop](http://example.com/shop)

RDFa

RDF 的力量,前面已经演示过,可以通过用相当复杂的语法编写的外部文件来利用。然而,有一个很好的例外:RDFa。RDFa(属性中的 RDF)为任何标记语言(从这个角度来看,宿主语言,如前面在第三章中讨论的)增加了属性级扩展,以描述结构化数据。换句话说,RDFa 符号可以在属性中声明,而不是在元素中声明(这是其他 RDF 序列化格式使用的方法)。虽然很多属性是由 RDFa 定义的,但是有些标记属性(比如hrefrel)是重用的。只要有可能,文本内容也会被重用。RDFa 可以充当“人类和数据网”之间的桥梁,因为 RDFa 使得在(X)HTML 标记 [8 ]中编写 RDF 三元组成为可能。可以通过 RDFa 应用编程接口(RDFa API) [9 ]从 web 文档中提取和利用结构化信息。RDF 数据模型映射的机制允许 RDF 三元组嵌入到 web 文档中,以及由兼容的软件提取 RDF 模型三元组。

RDFa 提供了在 web 文档的某些属性中嵌入丰富元数据的选项[0]。用于此目的的属性集如下:

  • about, src

    描述元数据的资源的统一资源标识符(URI)或压缩 URI(居里) [1

  • rel, rev

    与其他资源的关系

  • href, resource

    合作伙伴资源

  • property

    元素内容的属性

  • content

    使用property属性时元素内容覆盖(可选)

  • datatype

    指定用于property属性的文本数据类型(可选)

  • typeof

    主题的 RDF 类型(可选)

RDFa 使得任意混合多个独立开发的词汇表成为可能。它可以在不分析所应用的特定词汇表的情况下被解析。这是在标记中提供不同类型的机器可读结构化数据的最先进的技术之一。

由于 RDFa 中的“a”代表的属性的样式通常在级联样式表中提供,所以直接使用 CSS 选择器来样式化代码 [2 ]。例如,如果创建者的名字和前一个例子的书名出现在整个站点中,那么所有的实例都可以使用通用选择器(清单 7-65 )进行样式化。

***清单 7-65。*造型 RDFa

`* [property=“dc:creator”]  {
  color: #2a56d3;
  font-style:italic;

}

  • [property=“dc:title”] {
      font-size: 2em;
      font-family:  Georgia;
    }`

关于 RDFa 的最新消息可以在 W3C RDFa 工作组的网站上找到,网址是www.w3.org/2010/02/rdfa/[3。

例如,让我们用 FOAF 词汇用 RDFa 符号描述一个人!首先我们需要声明 FOAF 名称空间(要么在文档头中,要么在body元素上)。RDFa 的about属性可以用来表示主语,而 RDFa 属性property设置谓语(清单 7-66 )。

***清单 7-66。*使用 FOAF 的 RDFa 注释

`<body xmlns:foaf=“http://xlmns.com/foaf/0.1/”>
  <p about=“#smith” property=“foaf:name”>John Smith

`

p元素的内容是人类和机器可读的文本,将呈现在网页上。

现在用另一个人来扩展前面的例子,表达两个人之间的关系(清单 7-67 )!实体的类可以由typeof属性声明。在这种情况下,我们使用 FOAF 词汇表中的Person类来“让浏览器知道”John Smith 是一个人。第二个人用完全相同的方式声明。最后,我们使用 FOAF 词汇表中的术语knows,并将其作为属性rel的值传递,以表示约翰·史密斯认识彼得·约翰逊(由属性resource声明)。

***清单 7-67。*两个人以及他们之间的关系在 RDFa 中用 FOAF 表达

`<body xmlns:foaf=“http://xmlns.com/foaf/0.1”>
  


    <span about=“#john” typeof=“foaf:Person” property=“foaf:name”>John Smith is 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
    interested in smartphones. <span about=“#jane” typeof=“foaf:Person” 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
**    property=“foaf:name”>Peter Johnson** is an Android developer. <span 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
**    about=“#john” rel=“foaf:knows” resource=“#peter”>John and Peter knows each other. 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传**
    
  

`

将这个机器可读的语句与使用 PHP 显示的 MySQL 数据库记录进行比较,您就可以一窥语义 Web 的威力了!

RDFa 可以类似地使用其他词汇。例如,都柏林核心元数据可以使用 RDFa 嵌入到标记中,如清单 7-68 所示。

***清单 7-68。*使用 DC 的 RDFa 注释

`<p xmlns:dc=“http://purl.org/dc/elements/1.1/” 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
 about=“#standardweb” property=“dc:title”>
 Web standardista Dr. Sikos describes 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
Web standardization, accessibility, and Web semantics in his latest book 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
Web standards. The first press 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
release has been published on <span about=“#webstandards” property=“dc:date” 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
content=“2011-11-16”>16 November 2011.

`
微格式对比微数据对比 RDFa

您应该已经注意到,某些微格式和 HTML5 微数据定义了类似的概念来描述人、事件或许可证。另一方面,RDFa 并不局限于这些概念,它可以用来注释任何种类的资源。

正如前面所讨论的,微格式重用 HTML 属性(例如,classtitle),并且具有难以组合的独立词汇表,因为微格式不使用名称空间机制。最后但同样重要的是,微格式没有定义 RDF 表示。 8

如前所述,HTML5 微数据为 HTML5 标记提供新闻属性。HTML5 微数据易于编写,在使用单一外部词汇表的文档中工作良好。在 HTML5 微数据中,组合不同的词汇表相当复杂。默认情况下,该技术支持一些词汇表映射,比如 Dublin Core elements。一个缺失的特性是数据类型和名称空间的概念。然而,幸运的是,HTML5 微数据定义了到 RDF 的通用映射,因此它可以用来表示三元组。


使用 XSLT 和 GRDDL 等技术将微格式转换成 RDF 是可能的,但是这种转换依赖于所使用的词汇表。

与微格式和微数据相反,RDFa 是 RDF 的完全序列化,因此提供了所有这些的最先进的注释。默认情况下,RDFa 定义新的标记属性并使用 URIs 和名称空间。因此,组合词汇表非常容易(类似于 RDF)。RDFa 在文字和 URI 资源方面是完全灵活的。

RDF 模式

按照 W3C 元数据活动的说法, RDF Schema ( RDFS )是“一种受来自知识表示的思想影响的陈述性表示语言” 4 。RDF Schema 用结构(类、属性的属性等等)扩展了 RDF。它可以用来形式化人类可读和机器可处理的词汇表之间的元数据交换。除了前面讨论的基本 RDF 词汇,RDFS 还有几个额外的构造:

  • 班级
    • rdf:Property
    • rdf:XMLLiteral
    • rdfs:Class
    • rdfs:Datatype
    • rdfs:Literal
    • rdfs:Resource
  • Properties
    • rdf:type
    • rdfs:comment
    • rdfs:domain
    • rdfs:isDefinedBy
    • rdfs:label
    • rdfs:range
    • rdfs:seeAlso
    • rdfs:subClassOf
    • rdfs:subPropertyOf

这些类和属性提供了比 RDF 更高级的知识表示,可以用于 web 本体的基本描述。这就是更具表达性的语言 Web 本体语言(OWL)重用许多 RDFS 组件的原因(见下一节)。

例如,资源“金刚鹦鹉”可以被声明为“鸟”类的一个子类,如清单 7-69 所示。

***清单 7-69。*一个简单的 RDFS 例子

<?xml version="1.0"?> <rdf:RDF ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xml:base="http://www.example.com/birds#">   <rdf:Description rdf:ID="bird">     <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>   </rdf:Description>   <rdf:Description rdf:ID="macaw">     <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>     <rdfs:subClassOf rdf:resource="#bird"/>   </rdf:Description> </rdf:RDF>

这个符号也可以用rdfs:Class代替rdf:Description并省略rdf:type ( 清单 7-70 )来缩短。

***清单 7-70。*上一个例子的优化版本

<?xml version="1.0"?> <rdf:RDF ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xml:base="http://www.example.com/birds#">   <rdfs:Class rdf:ID="bird" />     <rdfs:Class rdf:ID="macaw">     <rdfs:subClassOf rdf:resource="#bird"/>   </rdfs:Class> </rdf:RDF>

猫头鹰

Web 本体语言是一种知识表示语言,主要目的是创建 web 本体。Web 本体可以用于各种目的,例如搜索、查询形成、索引、代理或服务元数据管理,或者提高应用和数据库的互操作性。Web 本体对于知识密集型应用尤其有用,在这些应用中,文本提取、决策支持或资源规划是常见的任务,在用于知识获取的知识库中也是如此。

Web 本体语言的缩写 OWL 不是故意直白的 [6 ]。OWL 本体是 RDF 图,换句话说,是 RDF 三元组的集合。类似于 RDF 图,OWL 本体图可以用各种语法符号表示。猫头鹰有三个变种:猫头鹰 Lite猫头鹰 DL猫头鹰 Full [7 。OWL 是比 RDF 更高级的语言;实际上,它是 RDF 的一个词汇扩展。因此,RDF 图是完整的本体。

默认的 OWL 名称空间是[www.w3.org/2002/07/owl#](http://www.w3.org/2002/07/owl),它定义了 OWL 词汇表。没有专门为 OWL 定义的 MIME 类型。建议对 OWL 文档使用application/rdf+xmlapplication/xml MIME 类型。推荐的文件扩展名是.rdf.owl

OWL 的第一个版本开始于 2002 年,第二个版本 OWL2 开始于 2008 年。OWL 在 2004 年成为 W3C 推荐标准 8,OWL2 在 2009 年成为 W3C 推荐标准[149,150]。

语法

在高层,可以使用 OWL 抽象语法 [1 ]和 OWL2 函数语法 [2 ]。OWL 还支持几种交换语法,包括 RDF 语法 [3 ] (RDF/XML [4 ],RDF/Turtle [5 ]),OWL2 XML 语法 [6 ],以及 Manchester 语法 [7 ]。RDF/XML 是标准语法 [8 ]。

例如,智能手机本体的类声明可以用不同的语法编写,如清单 7-71 到 7-75 所示。

清单 7-71。 OWL2 函数语法示例

Ontology(<http://example.com/smartphone.owl>   Declaration( Class( :Smartphone ) ) )

清单 7-72。 OWL2 XML 语法示例

<Ontology ontologyIRI="http://example.com/smartphone.owl">    <Prefix name="owl" IRI="http://www.w3.org/2002/07/owl#"/>    <Declaration>      <Class IRI="Smartphone"/>    </Declaration> </Ontology>

清单 7-73。 RDF/XML 语法示例

<rdf:RDF>   <owl:Ontology rdf:about=""/>   <owl:Class rdf:about="#Smartphone"/> </rdf:RDF>

清单 7-74。 RDF/Turtle 示例

<http://example.com/smartphone.owl> rdf:type owl:Ontology . :Smartphone  rdf:type            owl:Class .

***清单 7-75。*曼彻斯特语法示例

Ontology: <http://example.com/smartphone.owl> Class: Smartphone

属性

在 OWL 中,存在以下类型的属性:

  • 对象属性将个人与其他个人联系起来
  • 将个体链接到数据值的数据类型属性(对象属性的子类)
  • 标注属性 ( owl:AnnotationProperty)
  • 本体属性 ( owl:OntologyProperty)

属性特征由属性公理定义。基本形式只表达存在。例如,在智能手机本体中,属性hasKeyboard可以被声明来表达手机的一个主要特征(见清单 7-76 )。大多数入门级手机都有电话键盘,而许多智能手机只有触摸屏,但有些有完整的 QWERTY 键盘。

***清单 7-76。*猫头鹰里的一份财产申报

<owl:ObjectProperty rdf:ID="hasKeyboard"/>

OWL 属性公理也可以定义额外的特征。OWL 支持 RDF 模式结构,如rdfs:subPropertyOfrdfs:domainrdfs:range。与其他属性的关系可以用owl:equivalentPropertyowl:inverseOf ( 列表 7-77 )来表示。

***清单 7-77。*两个等效的智能手机属性(加速度计和重力传感器)

<owl:ObjectProperty rdf:ID="hasAccelerometer">   <owl:equivalentProperty>     <owl:ObjectProperty rdf:ID="hasGsensor"/>   </owl:equivalentProperty> </owl:ObjectProperty>

全局基数约束由owl:FunctionalPropertyowl:InverseFunctionalProperty定义。逻辑属性特征由owl:SymmetricPropertyowl:TransitiveProperty [9 ] ( 清单 7-78 )定义。

***清单 7-78。*OWL 中的一个对称性质

<owl:SymmetricProperty rdf:ID="hasLiveConnection">   <rdfs:domain rdf:resource="#Smartphone"/>   <rdfs:range rdf:resource="#Smartphone"/> </owl:SymmetricProperty>

OWL 为表达关系提供了精确的声明,即使它们是显而易见的。例如,两个智能手机特性的属性层次可以用函数语法来表达,如清单 7-79 所示。

***清单 7-79。*OWL 中的属性层次

SubObjectPropertyOf( :hasGeotagging :hasCamera )

类别

与 RDF 类似,OWL 提供了对资源进行分组的类。OWL 中有六种不同的类描述:

  • Class identifier (URI reference). A named instance of owl:Class, a subclass of rdfs:Class.9 Listing 7-80 shows an example.

    ***清单 7-80。*OWL 中的一个类标识符

    <owl:Class rdf:ID="Handheld"/>

  • Set of individuals (instances of a class) defined by the owl:oneOf property. For example, the class of smartphones can be declared in the RDF/XML syntax with the RDF construct rdf:parseType="Collection", as shown in Listing 7-81.

    ***清单 7-81。*OWL 中的类实例

    <owl:Class>   <owl:oneOf rdf:parseType="Collection">     <owl:Thing rdf:about="#Touch"/>     <owl:Thing rdf:about="#Type"/>     <owl:Thing rdf:about="#TouchType"/>     <owl:Thing rdf:about="#Business"/>   </owl:oneOf> </owl:Class>

  • Property restriction: a value constraint or a cardinality constraint (for example, Listing 7-82).

    ***清单 7-82。*猫头鹰里的财产限制

    <owl:Restriction>   <owl:onProperty rdf:resource="hasGPS" />   <owl:allValuesFrom rdf:resource="#Smartphone" /> </owl:Restriction>

  • Intersection of two or more class descriptions. For example, the intersection of two Brochures enumerations can be described by the statement owl:intersectionOf, as presented in Listing 7-83.

    ***清单 7-83。*十字路口的猫头鹰

    <owl:Class>   <owl:intersectionOf rdf:parseType="Brochures">     <owl:Class>       <owl:oneOf rdf:parseType="Brochures">         <owl:Thing rdf:about="#Manual" />         <owl:Thing rdf:about="#Guide" />         <owl:Thing rdf:about="#Prospectus" />       </owl:oneOf>     </owl:Class>     <owl:Class>       <owl:oneOf rdf:parseType="Brochures">         <owl:Thing rdf:about="#Specs" />         <owl:Thing rdf:about="#Overview" />         <owl:Thing rdf:about="#Guide" />       </owl:oneOf>     </owl:Class>   </owl:intersectionOf> </owl:Class>

    其中交集是具有唯一共同个体Guide的类。

  • 两个或多个类描述的联合。例如,前一个例子的并集包含个体ManualGuideProspectusSpecsOverview(如果他们都不同的话)。

  • 类描述的补充。类扩展恰好包含那些不属于构成语句对象的类描述的类扩展的个体。补码可以用owl:complementOf属性来描述。


OWL Lite 和 OWL DL 中的 9 。在 OWL Full 中,它们是等价的。

类描述可以组合成类公理。类的层次结构可以用子类公理 ( 清单 7-84 )来表示。

***清单 7-84。*猫头鹰中的阶级等级

SubClassOf( :Slide :Smartphone )

两个类的等价性表示它们所包含的个体是相同的。清单 7-85 显示了一个例子。

***清单 7-85。*OWL 中的等价类

EquivalentClasses( :Virtualkeyboard :Softquerty )

虽然一般来说,个人可以是几个阶层的成员,但在许多情况下,成员资格是排他性的。例如,智能手机属于直板或滑板外形。这种级不衔接可以用清单 7-86 表示。

***清单 7-86。*猫头鹰中的阶级脱节

DisjointClasses( :Bar :Slide )

组合元数据

模式经常在语义网上被组合,以便应用所有那些被设计来表达关于被描述的网页主题的元数据的特定词汇。最长的名称空间列表出现在提供大量附加元数据的 web 文档中,最常见的是在(X)HTML+RDFa 中。清单 7-87 显示了一个例子。

***清单 7-87。*XHTML+RDFa 文档中的一长串名称空间

<html version="XHTML+RDFa 1.0" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg) xmlns:air="http://www.daml.org/2001/10/html/airport-ont#" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:bio="http://vocab.org/bio/0.1/" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:bibo="http://purl.org/ontology/bibo/" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:cc="http://creativecommons.org/ns#" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:contact="http://www.w3.org/2000/10/swap/pim/contact#" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:dbp="http://dbpedia.org/property/" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:dbr="http://dbpedia.org/resource/" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:dc="http://purl.org/dc/elements/1.1/" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:dcterms="http://purl.org/dc/terms/" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:fb="http://www.facebook.com/2008/fbml" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:foaf="http://xmlns.com/foaf/0.1/" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:ical="http://www.w3.org/2002/12/cal/icaltzd#" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:og="http://opengraphprotocol.org/schema/" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:openid="http://xmlns.openid.net/auth#" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:owl="http://www.w3.org/2002/07/owl#" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:rdfa="http://www.w3.org/ns/rdfa#" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:rel="http://vocab.org/relationship/" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:rss="http://web.resource.org/rss/1.0/" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:sioc="http://rdfs.org/sioc/ns#" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:smap="http://purl.org/net/ns/sitemap#" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:vcard="http://www.w3.org/2006/vcard/ns#" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:wot="http://xmlns.com/wot/0.1/" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:xsd="http://www.w3.org/2001/XMLSchema#">

这些词汇前缀允许使用当前文档中列出的外部词汇定义的术语。强烈建议只列出文档中实际使用的名称空间,这有助于代码优化和维护。尽管不必要的名称空间不会在浏览器中导致任何错误信息,但它们会使标记更加复杂。

由于词汇表的不同特性,组合应用并不总是简单明了的。例如,许多术语包含在各种词汇表中,选择其中一个往往只受个人偏好的驱使。事实上,您应该考虑候选属性的规范,以便为给定的场景选择最合适的属性。

在 RDF 中组合词汇

混合任何词汇表中的属性的最简单方法是创建一个 RDF 文件。例如,一个完全机器可读的个人资料使用 FOAF 术语来描述一个人的头衔、姓名、性别、即时消息帐户、主页、电话号码和关系。离此人办公室最近的机场可以用联系词汇表中的一个术语来表示,文件创建的日期可以由 Dublin Core 来声明,等等(清单 7-88 )。

***清单 7-88。*用 RDF 写的个人简介使用的几个词汇

`<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
 xmlns:contact=“http://www.w3.org/2000/10/swap/pim/contact#” 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
 xmlns:dc=“http://purl.org/dc/terms/” 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
 xmlns:foaf=“http://xmlns.com/foaf/0.1/” 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
 xmlns:google=“http://rdf.data-vocabulary.org/#” 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
 xmlns:owl=“http://www.w3.org/2002/07/owl#” 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
 xmlns:rdf=“http://www.w3.org/1999/02/22-rdf-syntax-ns#” 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
 xmlns:rdfs=“http://www.w3.org/2000/01/rdf-schema#” 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
 xmlns:wot=“http://xmlns.com/wot/0.1/” 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
 xmlns:xhv=“http://www.w3.org/1999/xhtml/vocab#”

<rdf:Description rdf:about=“http://www.example.com/metadata/foaf.rdf”>
    foaf:titleDr</foaf:title>
    foaf:givennameJohn</foaf:givenname>
    foaf:surnameSmith</foaf:surname>
    foaf:gendermale</foaf:gender>
    <foaf:depiction rdf:resource=“http://www.example.cimg/jsmith.jpg”/>
    <foaf:based_near rdf:resource=“http://dbpedia.org/resource/New_York “/>
    <contact:nearestAirport rdf:resource=” http://www.panynj.gov/airports/jfk.html”/>
    <foaf:phone rdf:resource=“tel:+1123456789”/>
    <foaf:homepage rdf:resource=“http://www.example.com”/>
    <google:url rdf:resource=“http://www.example.com”/>
    <foaf:holdsAccount rdf:resource=“http://www.linkedin.com/in/jsmith”/>
    <foaf:holdsAccount rdf:resource=“http://www.facebook.com/jsmith”/>
    <foaf:holdsAccount rdf:resource=“http://www.twitter.com/jsmith”/>
    <foaf:interest rdf:resource=“http://dbpedia.org/resource/Photography”/>
    <foaf:interest rdf:resource=“http://dbpedia.org/resource/Semantic_Web”/>
    <foaf:interest rdf:resource=“http://dbpedia.org/resource/Classical_music”/>
    <rdfs:seeAlso rdf:resource=“http://www.example.com/metadata/foaf.rdf”/>
    <rdfs:seeAlso rdf:resource=“http://www.example.com/metadata/doac.rdf”/>
    <rdf:type rdf:resource=“http://xmlns.com/foaf/0.1/Person”/>
    <rdf:type rdf:resource=“http://rdf.data-vocabulary.org/#Person”/>
    <rdf:type rdf:resource=“http://purl.org/dc/terms/Agent”/>
    <owl:sameAs rdf:resource=“http://www.example.com/about/”/>
    <foaf:publications rdf:resource=“http://www.example.com/metadata/doac.rdf”/>
    <foaf:knows rdf:resource=“http://www.1stfriendsweb site.net/foaf.rdf”/>
    <foaf:knows rdf:resource=“http://www.2ndfriendssite.com/foaf/”/>
    <dc:date rdf:datatype=“http://www.w3.org/2001/XMLSchema#date”>2010-08-22</dc:date>
    dc:creatorJohn Smith</dc:creator>
    <rdf:type rdf:resource=“http://xmlns.com/foaf/0.1/PersonalProfileDocument”/>
    <xhv:stylesheet rdf:resource=“http://www.example.com/styles.css”/>
    <wot:assurance rdf:resource=“http://www.example.com/signature.asc”/>
    <foaf:primaryTopic rdf:resource=“http://www.example.com/about/”/>
    dc:titleDr. John Smith associate professor</dc:title>
  </rdf:Description>
</rdf:RDF>`

微数据和微格式

如前所述,重叠特征可以用微数据和微格式来描述,也可以用 RDFa 来描述任意特征。微格式也可以与(X)HTML5 微数据同时使用。例如,hCard 可以与微数据同时应用,如清单 7-89 所示。

***清单 7-89。*将 hCard 与微数据相结合

`


   <a href=“http://example.com” 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
   itemprop=“url”>John Smith
  
Photographer

  <dd class=“adr” itemprop=“address” itemscope 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
   itemtype=“http://data-vocabulary.org/Address”><span class=“locality” 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
   itemprop=“locality”>Memphis, <abbr title=“Tennessee” class=“region” 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
   itemprop=“region”>TN
   38145

`
RDF 中的都柏林核心和 vCard

资源描述框架的灵活性使得同时使用来自外部名称空间的多种元数据变得很简单。因此,丰富的语义可以同时从各种词汇表添加到文档中(清单 7-90 )。

***清单 7-90。*RDF 中的 Dublin Core 和 vCard

`<?xml:namespace ns="http://www.w3.org/RDF/RDF/" prefix="RDF" ?>

<?xml:namespace ns="http://purl.oclc.org/DC/" prefix="DC" ?> <?xml:namespace ns="http://person.org/BusinessCard/" prefix="CARD" ?>

RDF:RDF
  <RDF:Description RDF:HREF=“http://uri-of-Document-1”>
    <DC:Creator RDF:HREF=“#Creator_001”/>
  </RDF:Description>
  <RDF:Description ID=“Creator_001”>
    CARD:NameJohn SmithCARD:Name
    CARD:Emailjsmith@example.netCARD:Email
    CARD:AffiliationABC Ltd.CARD:Affiliation
  </RDF:Description>
</RDF:RDF>`

都柏林核心、vCard 和数学网

在小册子风格的主页上对一个人的介绍可以用多种方式描述。其中之一就是都柏林核心和 vCard 的结合。通过在 RDF 中提供这些数据,可以增强对这些数据的索引和处理。清单 7-91 显示了一个例子。

***清单 7-91。*将 DC 和 vCard 与 Math-Net 结合

<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg) xmlns:dc="http://purl.org/dc/elements/1.1/" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">   <rdf:Description>     <dc:creator>       <rdf:Description rdf:about="http://jsmith.com/about.htm">         <rdfs:label>John Smith</rdfs:label>         <vCard:FN>John Smith</vCard:FN>         <vCard:N rdf:parseType="Resource">           <vCard:Family>Smith</vCard:Family>           <vCard:Given>John</vCard:Given>           <vCard:Prefix>Dr</vCard:Prefix>         </vCard:N>         <vCard:BDAY>1976-05-12</vCard:BDAY>       </rdf:Description>     </dc:creator>   </rdf:Description> </rdf:RDF>

重要的是要记住,都柏林核心元素命名约定和 XML 元素嵌套并不适用于所有其他元数据模式。

Math-Net 方案中的一些词汇可以用来扩展其他词汇表达的人的描述,包括 Dublin Core 和 vCard [0]。

DC、IMS 和 ODRL

当使用 XML 或 RDF/XML 语法时,Dublin Core 可以与外部元数据词汇表结合使用,如 IEEE 学习对象元数据(IMS) [1 ]或开放数字版权语言(ODRL)元数据 [2 ]。例如,当使用绿石数字图书馆软件 [3 ]时,可以通过结合 Dublin Core、LOM 和描述学习材料的本地标签来适当地提供大学中数字学习材料的存储、保存和检索。

例如,一个在线教育系统可以用三种不同类型的元数据来精确描述(清单 7-92 )。

***清单 7-92。*DC、IMS 和 ODRL 的组合

<record ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)   ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xsi:schemaLocation="http://www.example.org/virtualtutor/ ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)     http://www.example.org/virtualtutor/schema.xsd" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:dc="http://purl.org/dc/elements/1.1/" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:dcterms="http://purl.org/dc/terms/" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:oex="http://odrl.net/1.0/ODRL-EX" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:odd="http://odrl.net/1.0/ODRL-DD" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:ims="http://www.imsglobal.org/xsd/imsmd_v1p2">   <dc:title>     Virtual Tutor   </dc:title>   <dc:identifier xsi:type="dcterms:URI">     http://www.example.org/virtualtutor/   </dc:identifier>   <dc:description>     Online educational system.   </dc:description>   <ims:typicallearningtime>     <ims:datetime>       2011-08-02T08:00     </ims:datetime>   </ims:typicallearningtime>   <dc:rights>     All rights reserved.   </dc:rights>   <oex:rights>     <oex:asset>       <oex:context>         <odd:uid idscheme="URI">           http://www.example.org/virtualtutor/         </odd:uid>       </oex:context>     </oex:asset>   </oex:rights> </record>

特殊应用

有一些元数据方法专门用于图像或给定的媒体内容类型,如 YouTube 视频。其中一些在标记中提供,而另一些则嵌入到二进制文件中,如图像。

图像元数据和 XMP

数码照片和自定义图像是网站不可或缺的组成部分。可以为它们提供各种类型的元数据,包括描述性、技术性和管理性元数据。

一种高级方法是通过标记提供图像元数据。alt 属性对于有效性至关重要。正确提供的属性值也可以提高可访问性(见第十章)。然而,longdesc属性可以用来提供到图像和其他非文本内容的详细描述的链接,它的软件支持很差,在(X)HTML5 中已经过时。

除了标记中提供的图像描述和前面讨论的用 RDFa 编写的描述或图像许可,高级和专业的图像处理软件,如 Adobe Photoshop,可用于添加或修改图像文件本身包含的元数据(图 7-4 )。在一定程度上,现代操作系统的文件浏览器也可以执行这项任务。

根据图像格式,可以应用各种各样的元数据,包括但不限于标题、作者、版权所有者、关键词、方向、视点、色彩空间、摄影师的联系数据、相机数据、来源、高级元数据等等。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 关于博览会的几种类型的元数据被嵌入数码相机拍摄的 JPEG 文件中,这些文件可以在图像浏览器和处理应用中检索。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

***图 7-4。*在 Photoshop 中处理图像文件元数据

在幕后,Adobe Photoshop 应用由 Adobe Systems 创建的可扩展元数据平台(XMP)标准。《XMP》的连载可以嵌入几种流行的文件格式,包括 GIF、JPEG、JPEG 2000、PNG、TIFF 图像,以及 PDF 文件 10 [4 。GIF 支持 XMP 嵌入作为一个应用扩展,带有标识符 XMP 数据和认证码 XMP。在 JPEG 文件中,XMP 元数据嵌入在具有段头 http://ns.adobe.com/xap/1.0/\x00.的应用段 1 (0xFFE1)中。在 JPEG 2000 图像中,XMP 元数据可以位于由 UID 0x be 7 ACF CB 97 a 942 e 89 c 71999491 E3 fac 标识的 uuid 原子处。在 PNG 文件中,xmp 嵌入在带有关键字 XML:com.adobe.xmp 的 iTXt 文本块中。XMP 位于 TIFF 图像中的标签 700 处。可移植文档格式支持在 PDF 对象的元数据流中嵌入 XMP。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

***图 7-5。*二进制 JPEG 图像文件中的文本 RDF 元数据

从这个角度来看,图像的主要问题是它们是二进制文件(图 7-5 ),需要不同于文本文件的索引或搜索方法。例如,在谷歌图片搜索中,还有其他方面,包括用于消除非常小(例如,1x1 像素)的图片、骗局等的技术。在存储在图像文件本身中的元数据之上使用的文本元数据总是提供高级别的处理和共享选项。


10 外部。xmp sidecar 文件可以提供给不支持嵌入式 xmp 元数据的所有其他文件格式。

YouTube 视频的元数据

流行的视频共享网站 YouTube 提供了一个方便的选项,可以将存储在 YouTube 服务器上的视频嵌入到自定义网页中。RDFa 符号可以用来提高这类视频的网络搜索效率。

关于如何通过删除embed标签并将所需属性移动到object标签来从 YouTube 嵌入代码中创建符合标准的标记的细节将在稍后的第十三章中描述。

有两种视频元数据格式可以写入谷歌认可的标记中:脸书共享和雅虎!SearchMonkey RDFa [5 ]。它们可以交替使用,也可以同时使用。它们应该以不需要 JavaScript 或 Flash 就可以阅读的方式直接写入标记中。

脸书分享和 RDFa 丰富的片段

脸书共享需要图像和视频资源 URL(image_srcvideo_src)。medium属性支持值audioimagevideonewsblogmult。可以使用video_widthvideo_height属性提供视频大小。视频的 MIME 类型可以用video_type(值为application/x-shockwave-flash)来识别。使用description属性可以编写最多 200 个字符的简短描述。视频的标题可以通过title属性添加,最长可以是 60 个字符。这些属性也被谷歌认可。

一个完整的脸书股票示例如清单 7-93 所示。

***清单 7-93。*一个脸书股票的例子

`

`
雅虎!SearchMonkey RDFa

雅虎!SearchMonkey 元数据可以在object标签上提供,如清单 7-94 所示。

***清单 7-94。*一个雅虎!SearchMonkey 示例

<object type="application/x-shockwave-flash" width="480" height="385" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  data="http://www.youtube.com/v/a38-oj8VEXI&amp;hl=en_US&amp;fs=1&amp;" rel="media:video" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg) ** resource="http://www.youtube.com/v/a38-oj8VEXI&amp;hl=en_US&amp;fs=1&amp;" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)** ** xmlns:media="http://search.yahoo.com/searchmonkey/media/" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)** ** xmlns:dc="http://purl.org/dc/terms/">** **  <a rel="media:thumbnail" href="http://example.com/preview.jpg" />** </object>

search monkey 媒体名称空间xmlns:media是必需的,唯一可接受的值是"http://search.yahoo.com/searchmonkey/media/"。在用户点击播放按钮之前预览视频的分辨率为 105x93 像素的 GIF、JPEG 或 PNG 图像应该由 URI 定义为media:thumbnailhref属性值。用户点击播放按钮时要播放的视频应该由media:video的资源定义。

所有其他标签都是可选的,包括都柏林核心名称空间(xmlns:dc)和都柏林核心元数据(dc:contributordc:creatordc:datedc:descriptiondc:identifierdc:licensedc:subject)、媒体元数据(media:durationmedia:heightmedia:playermedia:regionmedia:titlemedia:typemedia:viewsmedia:width)以及review:rating、 6 。

SEO 中的元数据

虽然较高的页面排名或较好的搜索列表位置与标准化网站之间没有严格的相关性,但有几种技术有助于获得更好、更高质量的 web 文档。语义内容为 web 文档增加了意义,使信息索引、搜索和处理更加容易。元数据注释极大地扩展了 web 搜索的潜力。

RDFa 丰富的 web 文档的潜力正在增加,因为主要的搜索引擎已经开始在索引的同时处理这些注释。越来越多的元数据被搜索引擎索引和考虑。例如,谷歌在 2009 年开始在搜索结果页面上应用 hCard、hProduct 和 hReview 微格式以及 RDFa,称之为丰富片段 [7 。雅虎!自 2008 年以来,已经为 RDFa 和微格式编制了索引 [8 ]。富含 RDFa 或微格式的 Web 站点内容可以通过提供有用的结构化数据来增强 web 搜索。

Google 对 hCard 微格式派生的微数据、微格式和 RDFa contact 属性进行索引,包括namenicknamephototitleroleurlaffiliationfriendcontactacquaintanceaddress。分别代表名称、隶属关系和地址的微格式属性fnorgadr也显示在 web 搜索页面上。 11 此外,谷歌还能识别 XFN 微格式friendcontactacquaintance 0】。在 XFN 和 FOAF 表达的关系和联系也由谷歌[ [1 ]处理。

如前所述,锚元素上的rel属性的nofollow属性值可用于确保网页不会从目的链接获得 PageRank。这样的链接被 Google 关注,但是不添加 PageRank。Bing 不跟随链接,页面也不被索引。雅虎!跟随链接并索引页面。清单 7-95 显示了一个例子。

***清单 7-95。*在链接上应用nofollow属性

<a href="http://www.lowprsite.com" rel="nofollow">External site</a>

雅虎!SearchMonkey 支持以下元数据 [2 ]:

  • 微格式,包括 hCard、hCalendar、hReview、hAtom、hResume、adr、geo、tag 和 XFN
  • 网页摘要和结构化标记
  • 嵌入式 RDF

11 谷歌只显示人类可读的内容。不显示机器可读的元数据。例如,声明为 span 元素内容的日期<span class="value-title" title="2011-12-06T20:00-08:00" /> 06 December,8 PM 是人类可读的内容,它是独立于 ISO 日期格式(2011-12-06T20:00-08:00)中的title属性的机器可读属性值而指定的。

雅虎中的微格式搜索可以用清单 7-96 中的所示的形式的查询很容易地执行。

***清单 7-96。*雅虎使用的微格式搜索语法

searchmonkeyid:com.yahoo.page.uf.*metadata_name*

其中metadata_name是小写的元数据名称。RDFa 和 eRDF 搜索是相似的。唯一的区别是字符串uf应该改为rdf。例如,可以使用查询searchmonkeyid:com.yahoo.page.uf.hcard搜索 hCard 微格式,使用searchmonkeyid:com.yahoo.page.rdf.rdfa搜索属性中的 RDF,等等。

RDFa 之类的元数据注释可以有效地提供更好的搜索结果。网上提供的语义内容越多,从搜索引擎得到的搜索结果就越合理和相关。 12 用(X)HTML 标记、XML、RDF、FOAF 和 DOAC 描述的小册子式名片和个人信息的索引非常简单。然而,嵌入在传统标记中的语义内容只有在网络爬虫使用的机制支持时才能被处理。幸运的是,可由搜索引擎处理的有意义的元数据类型的数量在不断增加。

尽管元数据应用在搜索引擎优化方面有相当大的潜力,但也有一些限制。例如,图像元数据无法得到充分利用,因为大部分社交媒体和照片共享网站要么在上传期间删除所有嵌入的元数据,要么在没有元数据的情况下应用新的即时生成的文件(即使是另一种文件格式)。另一方面,由匿名维基百科编辑上传到互联网的图像,可以通过谷歌索引的嵌入元数据找到(如果有的话)。这一特点是否有利尚有争议。

与任何其他数据类似,明智地决定在网上发布什么是很重要的。出版一本书的 ISBN 号或者一个网站条目的 DBpedia 描述的链接完全没有问题;然而,几种类型的元数据发布起来是有风险的,因为它们可能被滥用。尤其是电子邮件地址、电话号码和即时消息屏幕名称应该非常小心地提供。

元数据嵌入与可访问性密切相关。可访问性指南可以确保为对象提供替代内容,并且文档结构组织良好(第十章)。

同样需要注意的是,SEO 和用户体验(UX)并不一定一致。例如,频繁重复的关键字会降低人的可读性 [3 ]。

总结

在这一章中,你学习了语义网的基本概念。到目前为止,您已经知道如何在源代码级别创建机器可读的元数据注释和外部元数据文件。你熟悉最常见的模式、词汇和本体;资源描述框架的主要系列;以及用 OWL 创建本体的基础。您知道如何组合来自不同词汇表的注释,以机器可读的格式描述许可证和图像,并使用这些元数据来提高网站文件的可搜索性。

下一章将向您展示如何从头开始创建符合标准的新闻提要频道,并最大化它们的互操作性。


然而,重要的是要记住,标记只是搜索引擎考虑的一件事。例如,全面和独特的网站内容对于在搜索结果中获得更好的位置变得越来越重要。

参考文献

  1. Herman I (ed) (2009)你如何定义语义网的主要目标?W3C 语义网常见问题。万维网联盟。www.w3.org/2001/sw/SW-FAQ#swgoals2011 年 6 月 5 日访问
  2. 使用 SPARQL 和智能代理发现语义 Web 服务。网络语义学:万维网上的科学、服务和代理 2010,8(4):310–328
  3. 语义网上的芬兰博物馆。网络语义学:万维网上的科学、服务和代理 2005,3(2–3):224–241
  4. 使用语义网在 Web 2.0 社区中链接和重用数据。网络语义学:万维网上的科学、服务和代理 2008,6(1):21–28
  5. Celma,Raimond Y. ZemPod:播客的语义网方法。网络语义学:万维网上的科学、服务和代理 2008,6(2):162–169
  6. Berners-Lee T (2001)语义网的商业模型。万维网联盟。www.w3.org/DesignIssues/Business2010 年 11 月 16 日访问
  7. Murphy T (2010) Lin Clark 阐述了 Drupal 的重要性。社交媒体。social media . net/2010/09/07/Lin-Clark-on-why-Drupal-matters。2010 年 9 月 9 日访问
  8. Hausenblas M,Adida B,Herman I(2008)RDFa——连接文档网络和数据网络。Joanneum 研究,知识共享,万维网联盟。www.w3.org/2008/Talks/1026-ISCW-RDFa/2010 年 11 月 19 日访问
  9. 科比·N(编辑)(2011)问&答:康拉德·沃尔夫拉姆谈 Web 3.0 中的应用交流。丹尼斯出版有限公司www . it pro . co . uk/621535/q-a-Conrad-wolfram-on-communication-with-apps-in-web-3-0。2011 年 8 月 25 日访问
  10. Ankolekar A,krtzsch M,Tran T,Vrandeč,d .两种文化:混合 Web 2.0 和语义 Web。网络语义学:万维网上的科学、服务和代理 2008,6(1):70–75
  11. 香农 V (2006)一个“更具革命性”的网络。论坛报国际先驱。纽约时报公司。www.nytimes.com/2006/05/23/technology/23iht-web.html?scp=1&sq = A+% 27 more+革命性%27+Web & st=nyt 。2011 年 8 月 25 日访问
  12. Adida B,Birbeck M,McCarron S,Herman I (eds) (2010 年)摘要。在:RDFa 核心 1.1。通过属性嵌入 RDF 的语法和处理规则。W3C 工作草案。万维网联盟。www.w3.org/TR/rdfa-core/2010 年 11 月 22 日访问
  13. Herman I (2009) W3C 语义网常见问题。万维网联盟。www.w3.org/RDF/FAQ2010 年 11 月 16 日访问
  14. Arenas M,Prud’hommeaux E,Sequeda J (eds) (2010)关系数据到 RDF 的直接映射。万维网联盟。www.w3.org/TR/rdb-direct-mapping/2010 年 11 月 19 日访问
  15. Clark K(2010)RDF 数据库市场。克拉克&帕西亚有限责任公司。weblog . clarkparsia . com/2010/09/23/the-rdf-database-market/。2010 年 11 月 21 日访问
  16. Oinonen K (2005)在语义网技术的商业应用道路上。商业中的语义网——如何进行。《语义网的工业应用:第一届 IFIP 语义网工业应用 WG12.5 工作会议论文集》。国际信息处理联合会。纽约斯普林格科学+商业媒体公司
  17. Nagy M,Vargas-Vera M (2010)迈向自动语义数据集成:多主体框架方法。在:语义网。武科瓦尔·因特
  18. Dertouzos LM,Berners-Lee T,Fischetti M (1999)编织网络:万维网发明者的最初设计和最终命运。哈珀旧金山,旧金山
  19. 《关联数据——迄今为止的故事》。语义网和信息系统 2009,5(3):1–22
  20. 伯纳斯-李 T (2009)关联数据。万维网联盟。www.w3.org/DesignIssues/LinkedData.html2011 年 8 月 25 日访问
  21. Cyganiak R,Jentzsch A .链接开放数据云图。http://lod-cloud.net。2011 年 7 月 20 日访问
  22. 雅虎(2010)Flickr——照片分享。雅虎!www.flickr.com 公司 公司】。2010 年 10 月 15 日访问
  23. 谷歌站长中心团队(2007)使用 robots meta 标签。谷歌公司Google webmastercentral . blogspot . com/2007/03/using-robots-meta-tag . html。2010 年 10 月 16 日访问
  24. 美国在线公司(2010 年)ODP–开放目录项目。网景公司。www.dmoz.org/2010 年 10 月 16 日访问
  25. TWRP (2007)关于机器人< META >的标签。网络机器人页面。www.robotstxt.org/meta.html2010 年 11 月 2 日访问
  26. Sullivan D (2007)雅虎提供 NOYDIR 选择退出雅虎目录标题&描述。搜索引擎之地。第三门媒体。search engine land . com/Yahoo-provides-noydir-opt-out-of-Yahoo-directory-titles-descriptions-10631。2010 年 10 月 16 日访问
  27. Ontos (2010) OntosMiner。翁托斯股份公司。www.ontos.com/o_eng/index.php?cs=3-22011 年 8 月 25 日访问
  28. 吴克(主编)(2010)语义网。武科瓦尔科技公司
  29. Mellouli S,Bouslama F,Akande A (2010)一种用于表示财经标题新闻的本体。doi:2010 . 02 . 001
  30. Davis I、Newman R、D’Arcus B (2005)在 RDF 中表达核心 FRBR 概念。理查德.纽曼伊恩.戴维斯。vocab.org/frbr/core.html2011 年 2 月 21 日访问
  31. 知识共享(2011)描述了 RDF 中的版权。知识共享权利表达语言。知识共享。creativecommons.org/ns2011 年 2 月 21 日访问
  32. ODRL (2011)开放数字版权语言(ODRL)倡议。odrl.net2011 年 8 月 25 日访问
  33. Iannella R (2002)开放数字版权语言(ODRL)版本 1.1。万维网联盟。www.w3.org/TR/odrl2011 年 2 月 21 日访问
  34. Miles A,Bechhofer S (eds) (2009) SKOS 简单知识组织系统参考。万维网联盟。www.w3.org/TR/skos-reference/2011 年 2 月 21 日访问
  35. Brickley D (ed) (2006) WGS84 地理定位:一个 RDF 词汇表。万维网联盟。www.w3.org/2003/01/geo/wgs84_pos.rdf2011 年 2 月 21 日访问
  36. Davis I,Galbraith D (2010) BIO:传记信息的词汇。伊恩·戴维斯,大卫·加尔布雷斯。vocab.org/bio/0.1/2011 年 2 月 21 日访问
  37. 学习对象元数据的 IEEE 1484.12.1-2002 标准的 IMS (2006) IMS 元数据最佳实践指南。版本 1.3 最终规格。IMS 全球学习联盟。www . IMS global . org/metadata/mdv1p 3/imsmd _ bestv1p 3 . html。2011 年 2 月 21 日访问
  38. 奥斯纳布吕克大学(2002)数学-网络 RDF 集合。奥斯纳布吕克大学。www . iwi-iuk . org/material/rdf/1.1/。2011 年 2 月 21 日加入
  39. Brickley D,Miller L (2007) FOAF 词汇规范 0.9。丹·布里克利,莉比·米勒。xmlns.com/foaf/0.1/2011 年 2 月 21 日访问
  40. 帕拉达 RA (2008) DOAC 词汇规范。拉蒙·安东尼奥·帕拉达。ramonantonio.net/doac/0.1/2011 年 2 月 21 日访问
  41. 邓比尔·E(2011)DOAP。艾德·邓比尔。trac.usefulinc.com/doap2011 年 2 月 22 日访问
  42. 林赛诉 Schemaweb 案(2011 年)。RDF 模式目录。VicSoft 有限公司 www.schemaweb.info 。2011 年 2 月 21 日访问
  43. 戴维斯一世(2006)vocab.org——一个词汇的 URI 空间。伊恩·戴维斯。vocab.org2011 年 2 月 21 日访问
  44. 奥姆勒维(2006)啤酒本体论。大卫·奥姆勒。www.purl.org/net/ontology/beer.owl2010 年 11 月 17 日访问
  45. Kanzaki M (2007)音乐词汇。网络神崎。www.kanzaki.com/ns/music.rdf2010 年 11 月 17 日访问
  46. Sikos LF(2011)vid ont–视频本体。vidont.org/2011 年 5 月 30 日访问
  47. 鲍梅斯特 J,塞佩尔 D (2010)本体中的异常与规则。网络 Semant,doi:10.1016/j.websem
  48. Khan L (2009)语义网和云计算。在:拉蒂富尔汗博士的研究。达拉斯大学。www.utdallas.edu/~lkhan/research.html2010 年 11 月 13 日访问
  49. Smarty A (2010)如何使用各种 REL 属性——学习微格式。搜索引擎杂志。www . search engine journal . com/how-to-use-variable-rel-attributes-learning-microformats/16144/。2010 年 11 月 11 日访问
  50. Kaply M (2010)火狐操作插件。迈克尔·卡普里。addons.mozilla.org/en-US/firefox/addon/4106/2010 年 11 月 17 日访问
  51. De Bruin R (2010) Tails 出口火狐插件。罗伯特·德·布鲁因。addons.mozilla.org/en-US/firefox/addon/2240/2010 年 11 月 17 日访问
  52. ryckbost b(2010)michrome 格式 Google Chrome 扩展。布莱恩·赖克博。chrome . Google . com/extensions/detail/oalbifknmclbnmj jdemjkhmpjjj。2010 年 11 月 17 日加入
  53. Baranovskiy D(2010)Optimus–微格式转换器。德米特里·巴拉诺夫斯基。microformatique.com/optimus/2010 年 11 月 17 日访问
  54. 左逻辑(2010)微格式书签。左逻辑有限公司leftlogic.com/projects/microformats_bookmarklet。2010 年 11 月 17 日访问
  55. Dawson F,Stenerson D (1998)互联网日历和日程安排核心对象规范(iCalendar)。互联网协会。www.ietf.org/rfc/rfc2445.txt2010 年 11 月 12 日访问
  56. elik T,Suda B (2010) hCalendar 1.0。微格式社区。microformats.org/wiki/hcalendar2010 年 11 月 12 日访问
  57. King R,elik T,Mullen weg M(2008)hCalendar Creator。微格式社区。microformats.org/code/hcalendar/creator2010 年 11 月 11 日访问
  58. elik T,Suda B (2010) hCard 1.0。微格式社区。microformats.org/wiki/hcard2010 年 11 月 11 日访问
  59. 道森 F,霍维斯 T (1998) vCard MIME 目录简介。互联网协会。www.ietf.org/rfc/rfc2426.txt2010 年 11 月 11 日访问
  60. elik T (2005) hCard 创建者。微格式社区。microformats.org/code/hcard/creator2010 年 11 月 11 日访问
  61. Casserly C、Domicone A、Green L、Heung A、Kinkade N、Linksvayer M、Park J、Peters D、Rees J、Roberts A、Rose T、Ruttenberg A、Schultz AJ、Steuer E、Vollmer T、Webber C、Wilbanks J、Yergler N、Yip J 等人(编辑)(2010)执照。知识共享。creativecommons.org/about/licenses/2010 年 10 月 17 日访问
  62. elik T (2005) rel= “许可证”。microformats.org/wiki/rel-license微格式社区。2010 年 11 月 12 日访问
  63. Olbertz D(2010)No to rel = " No follow "。对抗垃圾邮件,而不是博客。德克·奥尔伯茨。nonofollow.net2010 年 11 月 13 日访问
  64. elik T,Marks K (eds),Cutts M,Shellen J (2005) rel="nofollow "。微格式社区。microformats.org/wiki/rel-nofollow2010 年 11 月 12 日访问
  65. elik T,Marks K,Powazek D (2010) rel="tag "。微格式社区。microformats.org/wiki/rel-tag2010 年 11 月 12 日访问
  66. Berners-Lee T,Fielding R,Masinter L (2005)统一资源标识符(URI):通用语法。互联网协会。www.ietf.org/rfc/rfc3986.txt2011 年 8 月 25 日访问
  67. elik T,Marks K (2010)投票链接。微格式社区。microformats.org/wiki/vote-links2010 年 11 月 13 日访问
  68. Paul A (2003)社交网络开始在网络上成形。西雅图时报。community.seattletimes.nwsource.com/archive/?date = 2003 12 29&slug = Paul 29。2010 年 11 月 10 日访问
  69. GMPG(2010)XFN-XHTML 朋友网。全球多媒体协议组。gmpg.org/xfn/2010 年 11 月 10 日访问
  70. Lewis EP (2008)用微格式获取语义,第二部分:XFN。艾米莉·p·刘易斯。ablognotlimited . com/index . PHP/articles/getting-semantic-with-microformats-part-2-xfn/。2010 年 11 月 11 日访问
  71. Mullenweg M,elik T (2004) XFN 1.1 创建者。全球多媒体协议组。gmpg.org/xfn/creator2010 年 11 月 11 日访问
  72. mulweng m(2010)exefen。马修穆朗格。ma . TT/tools/exefen . PHP/。2010 年 11 月 11 日加入
  73. elik T (2003) XMDP:简介和格式描述。全球多媒体协议组。gmpg.org/xmdp/description2010 年 11 月 13 日访问
  74. elik T(2010)ADR 微格式草案规范。微格式社区。microformats.org/wiki/adr2010 年 11 月 13 日访问
  75. elik T(2009)geo 微格式草案规范。微格式社区。microformats.org/wiki/geo2010 年 11 月 13 日访问
  76. Janes D,Carlyle B,Tantek e lik T(2010)hAtom 微格式草案规范。微格式社区。microformats.org/wiki/hatom2010 年 11 月 13 日访问
  77. Sporny M,McEvoy M 等人(2010 年)提出的 hAudio 微格式草案规范。微格式社区。microformats.org/wiki/haudio2010 年 11 月 13 日访问
  78. 埃利克·T、哈雷·R(编辑)、阿尔金·A、多纳托·C、金·R(2010)所列的缩微格式草案规范。微格式社区。microformats.org/wiki/hlisting2010 年 11 月 13 日访问
  79. McEvoy M、elik T、Marks K、Hodder M、Begbie R、Kinberg J、Messina C、Rein L、Newell C、Sporny M、Johnson M、MC evoy M(2010)hMedia 微格式草案规范。微格式社区。microformats.org/wiki/hmedia2010 年 11 月 13 日访问
  80. Malek J,Myles S,Moore M,Ng M,Martin TB(2010)hNews 微格式草案规范。微格式社区。microformats.org/wiki/hnews2010 年 11 月 13 日访问
  81. Lee P,Myers J,Cook C,gustaf son A(2010)h product 微格式草案规范。微格式社区。microformats.org/wiki/hproduct2010 年 11 月 13 日访问
  82. l rtsch T(ed),Berriman F,Ward B,Inkster T(2010)h recipe 微格式草案规范。微格式社区。microformats.org/wiki/hrecipe2010 年 11 月 13 日访问
  83. King R,elik T,Levine J,Marks K(2010)hResume 微格式草案规范。微格式社区。microformats.org/wiki/hresume2010 年 11 月 13 日访问
  84. elik T,Diab A,McAllister I,Panzer J,Rifkin A,Sippey M(2010)hre view 微格式草案规范。微格式社区。microformats.org/wiki/hreview2010 年 11 月 13 日访问
  85. King R,Cook B,elik T,Marks K(2009)rel-directory 微格式草案规范。微格式社区。microformats.org/wiki/rel-directory2010 年 11 月 14 日访问
  86. Marks K(2009)rel = " enclosure "微格式草案规范。微格式社区。microformats.org/wiki/rel-enclosure2010 年 11 月 14 日访问
  87. Ayers D(2009)rel = " home "微格式草案规范。微格式社区。microformats.org/wiki/rel-home2010 年 11 月 14 日访问
  88. Pedersen AH、Kinberg J、Dedman J、Van Dijk P(2010)rel-payment 微格式草案规范。微格式社区。microformats.org/wiki/rel-payment2010 年 11 月 14 日访问
  89. Janes P (2009 年)机器人排斥概况。规范草案。微格式社区。microformats.org/wiki/robots-exclusion2010 年 11 月 14 日访问
  90. Gibson B (2010)的 xFolk 微格式。规范草案。微格式社区。microformats.org/wiki/xfolk2010 年 11 月 14 日访问
  91. 4K 协会(2009)所以你想开发一种新的微格式?微格式社区。microformats.org/wiki/process2010 年 11 月 13 日访问
  92. 希克森一世(2010) HTML 微数据。万维网联盟。http://www.w3.org/TR/microdata/.于 2010 年 10 月 17 日加入
  93. Berners-Lee T (2007)巨型全球图。麻省理工学院。dig.csail.mit.edu/breadcrumbs/node/2152010 年 9 月 23 日访问
  94. Berners-Lee T (2007)巨型全球图。麻省理工学院。dig.csail.mit.edu/breadcrumbs/node/2152010 年 9 月 23 日访问
  95. Brickley D (2010) FOAF 项目网站。朋友的朋友(FOAF)项目。www.foaf-project.org/2010 年 9 月 23 日访问
  96. QDOS (2010) FOAFNet。qdos!qdos! foaf.qdos.com/ 。2010 年 9 月 23 日加入
  97. NetEstate (2010)朋友的朋友(FOAF)搜索引擎。NetEstate。www.foaf-search.net2010 年 9 月 23 日访问
  98. Intellidimension (2010)语义网搜索。智能维度。www.semanticwebsearch.com/query/.于 2010 年 9 月 23 日加入
  99. Quatuo (2010)搜索 FOAF 个人资料/创建、管理、存储和发布你的朋友的朋友(FOAF)的个人资料-一个语义网项目。夸托。www.quatuo.com2010 年 9 月 23 日访问
  100. 多兹 L(2010)FOAF-阿-马蒂奇。www.ldodds.com/foaf/foaf-a-matic.en.html.·利·多兹。2010 年 9 月 23 日访问
  101. 沃克 J (2010)的 Drupal FOAF 模块。drupal.org/project/foaf德赖斯·布塔尔特。2010 年 9 月 23 日访问
  102. ISO (2009)信息和文件——都柏林核心元数据元素集。ISO 15836:2009。国际标准化组织。www . iso . org/iso/iso _ catalogue/catalogue _ ics/catalogue _ detail _ ics . htm?csnumber=52142 。2011 年 8 月 26 日访问
  103. 昆泽 J,贝克 T (2007)都柏林核心元数据元素集。IETF 信托。www.ietf.org/rfc/rfc5013.txt2011 年 8 月 27 日访问
  104. NISO ANSI(2007)都柏林核心元数据元素集。ANSI/NISO Z39.85。国家信息标准组织。www.niso.org/kst/reports/standards/kfile_download?id %说明% 3 iso-8859-1 = Z39-85-2007 . pdf&pt = rkgkixzw 643 yeuayuqz 1 bfwdhig 4-24 rjbczbw 8 UE 4 vwdpzsjds 4 rjlz 0t 90 _ D5 _ ymGsj _ ikva 86 hjp 37 r _ hfeijh 12 lhqjw 52b-5 uda Amy 22 wjjl0 y 5 ghhtjwci3 v。2011 年 8 月 26 日访问
  105. 希尔曼 D (2005)语法问题。In:使用都柏林核心。都柏林核心元数据倡议。dublincore.org/documents/usageguide/#whichsyntax2010 年 11 月 2 日访问
  106. Powell A,Nilsson M,Naeve A,Johnston P,Baker T (2007) DCMI 抽象模型。DCMI 推荐。都柏林核心元数据倡议。dublincore.org/documents/abstract-model/2010 年 10 月 25 日访问
  107. DCMI (2010)都柏林核心元数据元素集,版本 1.1。DCMI 推荐。都柏林核心元数据倡议。dublincore.org/documents/dces/2010 年 10 月 22 日访问
  108. Powell A、Wagner H (eds)、Weibel S、Baker T、Matola T、Miller E、Johnston P (2007)都柏林核心元数据倡议(DCMI)的名称空间政策。都柏林核心元数据倡议。dublincore.org/documents/dcmi-namespace/2010 年 10 月 26 日访问
  109. Powell A,Nilsson M,Naeve A,Johnston P,Baker T (2007) DCMI 抽象模型语义学。在:DCMI 抽象模型。都柏林核心元数据倡议。Dublin core . org/documents/2007/02/05/abstract-model/# Sect-5。2010 年 10 月 26 日访问
  110. Hillmann D (2005)使用都柏林核心元素,都柏林核心元数据倡议。都柏林核心元数据倡议。dublincore.org/documents/usageguide/elements.shtml2010 年 9 月 11 日访问
  111. DCMI 使用委员会(2010) DCMI 元数据术语。DCMI 推荐。都柏林核心元数据倡议。dublincore.org/documents/dcmi-terms/2010 年 10 月 22 日访问
  112. Berners-Lee T,Fielding R,Masinter L (2005) RFC 3986:统一资源标识符(URI):通用语法。互联网工程任务组。www.ietf.org/rfc/rfc3986.txt2010 年 10 月 26 日访问
  113. Johnston P,Powell A (2008)使用 HTML/XHTML 元和链接元素表达都柏林核心元数据。都柏林核心元数据倡议。dublincore.org/documents/dc-html/2010 年 11 月 9 日访问
  114. Powell A,Johnston P (2003)用 XML 实现都柏林核心的指南。都柏林核心元数据倡议。dublincore.org/documents/dc-xml-guidelines/2010 年 11 月 6 日访问
  115. Johnston P,Powell A (2008)使用 XML (DC-DS-XML)表达都柏林核心描述集。都柏林核心元数据倡议。dublincore.org/documents/dc-ds-xml/2010 年 11 月 7 日访问
  116. Phillips A,Davis M (2006)用于识别语言的标签。互联网协会。www.ietf.org/rfc/rfc4646.txt2010 年 11 月 8 日访问
  117. Beckett D,Miller E,Brickley D (2002)用 RDF/XML 表达简单的都柏林核心。都柏林核心元数据倡议。dublincore.org/documents/dcmes-xml/2010 年 10 月 31 日访问
  118. Kokkelink S,schwnzl R(2002)在 RDF / XML 中表达合格的都柏林核心。都柏林核心元数据倡议。dublincore.org/documents/dcq-rdf-xml/2010 年 11 月 2 日访问
  119. Nilsson M、Powell A、Johnston P、Naeve A (2008)使用资源描述框架(RDF)表达都柏林核心元数据。都柏林核心元数据倡议。dublincore.org/documents/dc-rdf/2010 年 11 月 2 日访问
  120. Nilsson M,Baker T (2008)对 RDF 中 Dublin Core 元数据的 DCMI 规范的注释。都柏林核心元数据倡议。dublincore.org/documents/dc-rdf-notes/2010 年 11 月 2 日访问
  121. Beckett D,McBride B (eds) (2004)导言。In: RDF/XML 语法规范。W3C 推荐。万维网联盟。www.w3.org/TR/rdf-syntax-grammar/#section-Introduction2010 年 11 月 21 日访问
  122. 克莱恩 G,卡罗尔 JJ,麦克布赖德 B(编辑)(2004)资源描述框架(RDF):概念和抽象语法。W3C 推荐。万维网联盟。www.w3.org/TR/rdf-concepts/.于 2010 年 11 月 21 日加入
  123. Davis M,Whistler K (eds) (2010) Unicode 标准附录 15。Unicode 规范化形式。Unicode 联合会。www.unicode.org/reports/tr15/#Norm_Forms2010 年 11 月 15 日访问
  124. Ora Lassila O,Swick RR(eds)(1999)RDF 的形式语法。In:资源描述框架(RDF)模型和语法规范。万维网联盟。www.w3.org/TR/1999/REC-rdf-syntax-19990222/#grammar2010 年 11 月 21 日访问
  125. Prud’hommeaux E,Seaborne A(eds)(2008)RDF 的 SPARQL 查询语言。万维网联盟。www.w3.org/TR/rdf-sparql-query/2011 年 2 月 22 日访问
  126. Ogbuji C (ed) (2010) SPARQL 1.1 用于管理 RDF 图的统一 HTTP 协议。万维网联盟。www.w3.org/TR/sparql11-http-rdf-update/2011 年 2 月 22 日访问
  127. 格兰特 J,贝克特 D,麦克布赖德 B(编辑)(2004) N-Triples。RDF 测试用例。W3C 推荐。万维网联盟。www.w3.org/TR/rdf-testcases/#ntriples2010 年 11 月 21 日访问
  128. Chris Bizer C,cyganak r(2007)trig 语法。柏林自由大学。www . wiwiss . fu-Berlin . de/bizer/trig/spec/。2010 年 11 月 21 日加入
  129. 卡罗尔·JJ,Stickler P(2004)XML 中的 RDF 三元组。惠普实验室。www.hpl.hp.com/techreports/2003/HPL-2003-268.pdf2010 年 11 月 21 日访问
  130. Beckett D,McBride B (2004) RDF/XML 语法规范。万维网联盟。www.w3.org/TR/rdf-syntax-grammar/2010 年 11 月 15 日访问
  131. 伯纳斯李 T,康诺利 D (2008)注释 3 (N3):一个可读的 RDF 语法。W3C 团队提交。万维网联盟。www.w3.org/TeamSubmission/n3/2010 年 11 月 15 日访问
  132. Berners-Lee T,Connolly D(2008)XML 1.1 格式中使用的 EBNF N3 语法。万维网联盟。www.w3.org/2000/10/swap/grammar/n3-ietf.txt2010 年 11 月 15 日访问
  133. Berners-Lee T (2005)初级读本:使用 N3 进入 RDF 语义网。万维网联盟。www.w3.org/2000/10/swap/Primer2010 年 11 月 15 日访问
  134. 134。Prud’hommeaux E,Carothers G (ed),Beckett D,Berners-Lee T (2011)简明 RDF 三重语言。万维网联盟。www.w3.org/TR/2011/WD-turtle-20110809/2011 年 8 月 25 日访问
  135. Jena——一个面向 Java 的语义 Web 框架。http://openjena.orgepi morphics 有限公司2011 年 8 月 26 日访问
  136. Beckett D (2011)雷德兰 RDF 库。戴夫·贝克特。librdf.org2011 年 8 月 26 日访问
  137. 阿杜纳(2011)openRDF.org——芝麻的故乡。阿杜纳。www.openrdf.org2011 年 8 月 26 日访问
  138. Zeldman J,Marcotte E (2009)用网络标准进行设计,第三版。新骑手,伯克利
  139. Sporny M,Adrian B,Birbeck M(编辑),Herman I (2010) RDFa API。用于从 Web 文档中提取结构化数据的 API。万维网联盟。www.w3.org/TR/rdfa-api/2011 年 2 月 22 日访问
  140. Adida B、Birbeck M、McCarron S、Herman I (eds) (2010) RDFa Core 1.1。通过属性嵌入 RDF 的语法和处理规则。万维网联盟。www.w3.org/TR/rdfa-core/2011 年 2 月 22 日访问
  141. 伯贝克 M,麦卡隆 S (2009)居里语法 1.0。一种表达紧凑 URIs 的语法,W3C 候选推荐标准。万维网联盟。www.w3.org/TR/curie/2010 年 9 月 11 日访问
  142. 小 Lewis,Moscovitz M (2009)高级 CSS。伯克利艾德的朋友
  143. Adida B,Herman I (eds) (2011) W3C RDFa 工作组。万维网联盟。www.w3.org/2010/02/rdfa/2011 年 2 月 22 日访问
  144. Swick R (ed) (2002)元数据活动声明。万维网联盟。www.w3.org/Metadata/Activity.html2010 年 10 月 28 日访问
  145. Brickley D,Guha RV,McBride B (eds) (2004) RDF 词汇描述语言 1.0: RDF 模式。万维网联盟。www.w3.org/TR/rdf-schema/2011 年 2 月 22 日访问
  146. 赫曼一世(2010)“为什么是猫头鹰而不是 WOL?”。语义网技术教程。万维网联盟。www . w3 . org/People/Ivan/core presentations/RDFTutorial/slides . html # % 28114% 29。2010 年 10 月 28 日访问
  147. 史密斯 MK,韦尔蒂 C,麦克吉尼斯 DL (eds) (2004)猫头鹰的种类。OWL 网络本体语言指南。W3C 推荐。www.w3.org/TR/2004/REC-owl-guide-20040210/#OwlVarieties2010 年 11 月 15 日访问
  148. 迪安 M,施赖伯 G (eds),贝希霍费尔 S,范哈梅林 F,亨德勒 J,霍罗克斯 I,麦克吉尼斯 DL,帕特尔-施耐德 PF,斯坦拉(2004) OWL 网络本体语言参考。W3C 推荐。万维网联盟。www.w3.org/TR/owl-ref/2011 年 8 月 26 日访问
  149. Hitzler P,krtzsch M,Parsia B,Patel-Schneider PF,鲁道夫 S (eds) (2009) OWL 2 网络本体语言-初级读本。W3C 推荐。万维网联盟。www.w3.org/TR/owl-primer/2011 年 8 月 26 日访问
  150. Motik B,Grau BC,Horrocks I,Wu Z,Fokoue A,Lutz C (eds),Calvanese D,Carroll J,德贾科莫 G,Hendler J,Herman I,Parsia B,Patel-Schneider PF,Ruttenberg A,Sattler U,Schneider M(2009)OWL 2 Web Ontology Language-Profiles。W3C 推荐。万维网联盟。www.w3.org/TR/owl2-profiles/2011 年 8 月 26 日访问
  151. Patel-Schneider PF,Horrocks I (eds) (2004)抽象语法。在:OWL 网络本体语言。语义和抽象语法。万维网联盟。www.w3.org/TR/2004/REC-owl-semantics-20040210/syntax.html2010 年 10 月 28 日访问
  152. Motik B,Patel-Schneider PF,Parsia B (eds),Bock C,Fokoue A,Haase P,Hoekstra R,Horrocks I,Ruttenberg A,Sattler U,Smith M (2009) OWL 2 Web 本体语言。结构规范和函数式语法。W3C 推荐。万维网联盟。www.w3.org/TR/owl-syntax/2010 年 10 月 28 日访问
  153. Patel-Schneider PF,Motik B (eds),Grau BC,Horrocks I,Parsia B,Ruttenberg A,Schneider M (2009) OWL 2 Web 本体语言。映射到 RDF 图。W3C 推荐。万维网联盟。www.w3.org/TR/2009/REC-owl2-mapping-to-rdf-20091027/2010 年 10 月 29 日访问
  154. Beckett D,McBride B (eds) (2004) RDF/XML 语法规范。W3C 推荐。万维网联盟。www.w3.org/TR/rdf-syntax-grammar/2010 年 10 月 28 日访问
  155. Beckett D,Berners-Lee T(2008)Turtle-Terse RDF 三元组语言。W3C 团队提交。万维网联盟。www.w3.org/TeamSubmission/turtle/2010 年 10 月 28 日访问
  156. Motik B,Parsia B,Patel-Schneider PF (eds),Bechhofer S,Grau BC,Fokoue A,Hoekstra R (2009) OWL 2 Web 本体语言。XML 序列化。W3C 推荐。万维网联盟。www.w3.org/TR/owl-xml-serialization/.于 2010 年 10 月 28 日加入
  157. Horridge M,Patel-Schneider PF (2009) OWL 2 Web 本体语言。曼彻斯特语法。W3C 工作组说明。万维网联盟。www.w3.org/TR/2009/NOTE-owl2-manchester-syntax-20091027/2010 年 10 月 28 日访问
  158. W3C OWL 工作组(eds) (2009)语法。OWL 2 网络本体语言。文档概述。W3C 推荐。万维网联盟。www.w3.org/TR/owl2-overview/#Syntaxes2010 年 10 月 28 日访问
  159. 迪安 M,施赖伯 G(编辑),贝赫霍费尔 S,范哈梅伦 F,亨德勒 J,霍罗克斯 I,麦克吉尼斯 DL,帕特尔-施耐德 PF,斯坦拉(2004)性质。OWL 网络本体语言参考。W3C 推荐。万维网联盟。www.w3.org/TR/owl-ref/#Property2010 年 10 月 30 日访问
  160. Kokkelink S,schwnzl R(2002)DC 与其他词汇和 DumbDown 合作。In:用 RDF / XML 表达合格的都柏林核心。都柏林核心元数据倡议。dublincore.org/documents/dcq-rdf-xml/#sec32010 年 11 月 2 日访问
  161. Barker P,Campbell LM,Roberts A,Smythe C(eds)(2006)IEEE 1484 . 12 . 1-2002 学习对象元数据标准的 IMS 元数据最佳实践指南。最终规格。IMS 全球学习联盟。www.imsglobal.org/metadata/mdv1p3/imsmd_bestv1p3.html2010 年 10 月 23 日访问
  162. Iannella R (ed) (2002) ODRL 1.1 表达式语言模式。开放数字权利语言倡议。odrl.net/1.1/ODRL-EX-11-DOC/index.html2010 年 10 月 23 日访问
  163. Rivera-Aguilera AB,Vega-López M,Pozo-Marrero A (2010 年)元数据应用简介:整合不同的元数据方案,对数字学习材料集合进行编目。都柏林核心和元数据应用国际会议论文集。匹兹堡都柏林核心元数据倡议
  164. Adobe Systems Inc. (2010)在应用文件中嵌入 XMP 元数据。见:XMP 规范,第三部分-文件存储。www . Adobe . com/content/dam/Adobe/en/devnet/xmp/pdf/xmpspecificationpart 3 . pdf。2010 年 11 月 17 日访问
  165. Sikos LF (2011)针对 Web 3.0 视频的高级(X)HTML5 元数据和语义。DESIDOC 图书馆与信息技术杂志 2011,31(4):247–252;publications . drdo . gov . in/ojs/index . PHP/DJ lit/article/view file/1105/434。2011 年 7 月 20 日访问
  166. 雅虎!Inc .(2009)search monkey–视频。雅虎!开发者网络。http://developer.search.yahoo.com/help/objects/video 公司 公司】。2010 年 10 月 15 日访问
  167. Goel K,Guha RV,Hansson O (2009)介绍了丰富的片段。谷歌公司Google webmastercentral . blogspot . com/2009/05/introducing-rich-snippets . html。2010 年 10 月 21 日访问
  168. Bir beck M(2009)RDFa 简介。一份单独的杂志。www.alistapart.com/articles/introduction-to-rdfa2010 年 9 月 9 日访问
  169. Goel K,Gupta P,Hansson O (2009)帮助我们让网络更好:丰富片段的更新。谷歌公司Google webmastercentral . blogspot . com/2009/10/help-us-make-web-better-update-on-rich . html。2010 年 10 月 21 日访问
  170. 谷歌站长中心(2010)人。关于联系方式。谷歌公司www.google.com/support/webmasters/bin/answer.py?答案=146646 。2010 年 11 月 10 日访问
  171. 谷歌(2010 年)社交图谱 API。谷歌代码实验室。code.google.com/intl/hu/apis/socialgraph/2010 年 11 月 11 日访问
  172. 雅虎!开发者网络(2008) Monkey 发现微格式和 RDF。雅虎!Inc .developer . Yahoo . com/blogs/ydn/posts/2008/12/monkey _ finds _ microformats _ and _ rdf/。2010 年 11 月 13 日访问
  173. 安德森 E,德波特 V,费瑟斯通 D,巩特尔 L,雅各布博士,詹森-因曼 L,米尔斯 C,施密特 C,西姆斯 G,沃尔特 A (2010)网络写作的工作(或不工作)。《与网页标准互动——网页设计的整体方法》。新骑手,伯克利

八、网络联合

互联网上共享的最新信息量不断增长。Web syndication 提供新闻订阅渠道,以便发布最近更新的网站内容、最新新闻或论坛帖子的摘要。这些 web 提要使用户无需浏览网站就能了解最新信息。此外,相同的提要还可以在多个网站之间共享。尽管两种流行的 web 联合格式(RSS 和 Atom)具有相对简单的词汇表,但是新闻提要通道需要符合严格的标准,首先是 XML。

在本章中,您将学习如何手动创建符合标准的新闻订阅源频道,并在保持符合标准的同时经常更新它们。你将熟悉 RSS 和 Atom 这两个主要竞争对手的优缺点。此外,您将了解用于新闻提要元素的数据格式,以及缺省值和合法属性值。您还将熟悉所需的通道和项目元素,以及为了最大化互操作性而应该提供的元素。

新闻提要

Web syndication 使网站组件可用于多个站点,而无需登录或下载其他站点的无关组件。这个短语通常指的是网络新闻源 ( 新闻频道),提供最近添加内容的最新摘要和网站的最新变化。最常见的新闻提要用于最新新闻、新闻标题、博客条目和论坛帖子。

web syndication 的第一批技术出现于 1997 年,包括频道定义格式 [1 ,元内容框架 [2 ,以及scripting news[3。Netscape 在 1999 年发布了第一个版本的Really Simple Syndication(RSS),后来成为了最广泛使用的 web 提要格式。另一个流行的新闻提要 Atom 的规范的第一部分是在 2005 年引入的。

由于订阅源阅读器和聚合器运行在各种软件平台和设备上,包括但不限于 web 浏览器、Windows 新闻订阅源阅读器小工具、Microsoft Outlook 和智能手机上的新闻订阅源阅读器,因此互操作性至关重要。

真正简单的联合

真正简单的联合(RSS)是最广泛使用的 web 联合格式。因为 RSS 是一个 XML 应用,所以它可以通过 XML 名称空间进行扩展。除了表示新闻和新闻稿的传统用途之外,RSS 还有一些特殊的应用,比如为银行提供最新的汇率。

RSS 的典型文件扩展名是.rss.xml。与 RSS 相关的互联网媒体类型是application/rss+xml,它还没有被标准化 6 。

RSS 用属性titlelinkdescriptionchannelitem描述轻量级联合频道。

RSS 有以下版本:RSS 0.90、RSS 0.91、RSS 0.92 和 RSS 2.0。在 2000 年,RDF Site Summary 这个名称被使用,它指的是基于 RDF 的模块化的可扩展性。0.91 版本被称为 Rich Site Summary,它放弃了 RDF 结构,并从 Dave Winer 为他的新闻网站“scriptingNews”开发的 Scripting News 联合格式中导入了元素。当前的首字母缩略词是简单联合。RSS 规范的最新版本在 RSS 咨询委员会网站 [8 ]上有一个永久的 URI。最广泛使用和最先进的版本 RSS 2.0.11 [9 ]将在接下来的章节中讨论。

创建 RSS 文件

要创建一个 RSS 文件,首先需要一个 XML 声明和一个rss元素。rss元素是 RSS 文件的根元素,也是channel元素的容器,后者提供关于文件的信息并包含item元素(新闻提要条目)。清单 8-1 显示了一个 RSS 文件的一般结构。对于 RSS 2.0.11 来说,rss元素上的version属性是必需的,其值必须是2.0(没有指明 subversion)。

***清单 8-1。*具有最大互操作性的 RSS 文件的一般结构

<?xml version="1.0" encoding="utf-8" ?> <rss version="2.0" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:content="http://purl.org/rss/1.0/modules/content/" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:dc="http://purl.org/dc/elements/1.1/" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  xmlns:atom="http://www.w3.org/2005/Atom">    <channel>     <title>An RSS news feed example</title>     <link>http://www.example.com</link>     <pubDate>Mon, 08 Aug 2011 08:03:00 +0200</pubDate>     <image>       <url>http://www.example.cimg/logo.png</url>       <title>An RSS news feed example</title>       <link>http://www.example.com</link>     </image>     <dc:creator>John Smith</dc:creator>     <description>The news feed of rock star John Smith. Concerts, CDs, and more.</description>     <language>en</language>     <sy:updatePeriod>daily</sy:updatePeriod>     <sy:updateFrequency>1</sy:updateFrequency>     <atom:link href="http://www.example.com/rss.xml" rel="self" type="application/rss+xml" />     <item>       <title>News item 2</title>       <link>http://www.news2link.com</link>       <pubDate>Mon, 08 Aug 2011 08:03:00 +0200</pubDate>       <dc:creator>John Smith</dc:creator>       <category>CDs</category>       <guid>http://www.news2link.com</guid>       <description>Description of news item 2</description>       <content:encoded>The full content of News #2.</content:encoded>     </item>     <item>       <title>News item 1</title>       <link>http://www.news1link.com</link>       <pubDate>Sun, 07 Aug 2011 08:48:00 +0200</pubDate>       <dc:creator>John Smith</dc:creator>       <category>Concerts</category>       <guid>http://www.news1link.com</guid>       <description>A bit more about news 1</description>       <content:encoded><![CDATA The full content of News #1\. In CDATA sections, ![images        <a href="http://examp.com">markup code</a> can also be included. ]]></content:encoded>     </item>   </channel> </rss>

自然,RSS 文件通常包含更多的item元素。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 提示理论上,一个 RSS 频道可以包含任意数量的条目。但是,一些 RSS 阅读器(如 Windows 中的新闻阅读器小工具)不支持大于大约 150KB 或 2,800 行的 RSS 文件,如果您每天更新 RSS 文件,这相当于大约 7 个月。建议您将文件大小保持在此限制之下,以最大化互操作性。

有些元素是必需的,有些是可选的,但强烈建议使用。首先,我们将检查所需的元素。

必需元素

如前一节所示,rss元素包含了channel元素及其所有内容。RSS 2.0 中channel元素的必需元素有titlelinkdescription

标题元素

title元素表示频道的名称。它通常与相关网站的标题相一致。清单 8-2 显示了一个例子。

***清单 8-2。*一个 RSS 频道的标题

<title>John Smith Headlines</title>

链接元素

link元素是一个 URI,代表新闻提要所在的域。清单 8-3 显示了一个例子。

***清单 8-3。*RSS 中的一个链接

<link>http://example.com/</link>

描述元素

description元素包含一个描述频道的句子或句子片段,如清单 8-4 所示。

***清单 8-4。*RSS 中的一个频道描述

<description>The latest news about rock star John Smith.</description>

可选元素

在 RSS 2.0 新闻源中,channel元素有 16 个可选的子元素,包括categorycloudcopyrightdocsgeneratorimagelanguagelastBuildDatemanagingEditorpubDateratingskipDaysskipHours、textInput、ttlwebMaster。我们将在这里更详细地查看所有这些子元素。

所有提供 URL 的 RSS 2.0 元素的一个共同特点是,它们应该以 IANA [10 ]定义的 URI 方案开头,例如,http://https://news://mailto://ftp://。注意http://ftp://方案不能在 RSS 2.0 之前的 RSS 版本中使用。

类别元素

可以为 RSS 频道指定一个或多个类别,用于分类和过滤。例如,致力于语义 web 事件的网站的 RSS 新闻提要可能包含诸如会议、研讨会、规范等类别。另一个例子可能是一个书商,他使用类别来指示最新图书发行的类别,以便潜在客户可以轻松地跟踪某个类别的最新图书(例如,对罗马人感兴趣的人不一定涉及技术书籍)。category元素不仅可以用于整个频道,还可以单独用于每个项目。清单 8-5 显示了一个例子。

***清单 8-5。*RSS 中的一个category元素

<category>Workshops</category>

元素有一个可选的domain属性,它是一个标识分类的 URI(清单 8-6 )。

***清单 8-6。*类别带域

<category domain="http://www.example.com/vocab">WS</category>

为频道声明的category元素的值可以被门户用来对 RSS 新闻订阅源频道进行分类,而为 item 元素指定的category元素的值被某些新闻订阅源阅读器显示为超链接,可以用作过滤器(例如,在现代浏览器中实现的订阅源阅读器中)。通过点击其中一个链接,订阅源阅读器可以隐藏所有其他类别的新闻条目。

云元素

为了立即得到 RSS 频道更新的通知,可以使用cloud元素为 RSS 提要编写一个发布-订阅协议。它指定了一个支持 rssCloud 接口的 web 服务(可以在 HTTP-POST、XML-RPC 或 SOAP 1.1 中实现)。支持两种请求方法:请求通知的客户端到云调用和执行通知的云到客户端调用。一个客户端请求有五个必需的参数,包括发生更新时云调用的远程过程的名称、客户端的 TCP 端口、客户端的远程过程调用路径、字符串xml-rpc(如果客户端使用 XML-RPC)或soap(如果使用 SOAP),以及 RSS 文件的 URL。用于通知请求的 IP 地址必须与接收通知的 IP 地址一致。清单 8-7 显示了一个例子。

***清单 8-7。*使用 RSS 中的cloud元素

<cloud domain="rpc.example.com" port="80" path="/RPC2" registerProcedure="pingMe" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  protocol="soap"/>

云发送给客户机的更新通知包含一个参数:发生变化的 RSS 文件的 URL。作为响应,客户端必须返回布尔值TRUE

版权元素

RSS 频道的版权声明可以由copyright元素提供。清单 8-8 显示了一个例子。

***清单 8-8。*在 RSS 中提供版权信息

<copyright>Copyright © 2011 John Smith. All rights reserved.</copyright>

docs 元素

使用的 RSS 格式文档的超链接可以由docs元素提供。典型的元素值是[www.rssboard.org/rss-specification](http://www.rssboard.org/rss-specification)

发电机元件

软件工具生成的 RSS 提要可以很容易地从generator元素的值中识别出来,生成器软件通常在这里识别自己(清单 8-9 )。

***清单 8-9。*由活字生成的 RSS 新闻源

<generator>Movable Type 4.34-en</generator>

如果元素被省略或者包含一个简单的文本编辑器,通常表明提要是由源代码级别的手工编码人员编写的(正如我们在本章中所做的)。在这种情况下,作者提供一个文本编辑器,如 Notepad++并通常使用都柏林核心词汇表将自己标识为创建者。但是,大多数人应用饲料发电机。

图像元素

channel元素的一个可选子元素是image,它可以用来为 RSS 提要提供一个图像。它有三个必需的和三个可选的子元素:

  • 表示频道的图像的 URL 由url子元素表示。图像格式可以是 GIF、JPEG 或 PNG。必选。
  • 图像的替代文本由title定义。当 RSS 被嵌入到(X)HTML 中时,这个字符串作为alt属性的文本被转发。title子元素的值应该与通道的title元素的值一致。必选。
  • 到频道站点的图像超链接由link子元素决定。子元素link的值应该与通道的link元素的值一致。必选。
  • 图像宽度可以由width子元素以像素为单位确定。默认值为88,最大值为144。可选。
  • 图像高度可以由width子元素以像素为单位确定。默认值为31,最大值为400。可选。
  • 包含在(X)HTML 中图像超链接的title属性中的图像描述可以由description子元素提供。可选。

清单 8-10 显示了一个例子。

***清单 8-10。*为 RSS 文件指定的标志图像

<image>   <url>http://www. bigprofitconsulting.cimg/logo.png</url>   <title>Big Profit Consulting</title>   <link>http://www.bigprofitconsulting.com</link> </image>

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 注意为 RSS 文件声明的图像显示在 RSS 阅读器中,例如在浏览器中实现的阅读器,但不被提要阅读器使用,例如 Outlook 中的提要阅读器或 Windows 提要阅读器小工具。

语言元素

新闻提要内容的自然语言可以由language元素声明。例如:

<language>en</language>

表 8-1 总结了允许值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

除了最初的 Netscape 版本(0.91)不包含代码et(爱沙尼亚语)和haw(夏威夷语),所有 RSS 版本都支持这些语言代码。也可以使用 HTML 4.01 规范 [11 ]中定义的 HTML language标签中允许的语言代码。W3C 参考 RFC 1766 [12 ]。为 ISO 639 [13 ]语言缩写保留两个字母的主要代码,包括fr(法语)、de(德语)、it(意大利语)、nl(荷兰语)、el(希腊语)、es(西班牙语)、pt(葡萄牙语)、ar(阿拉伯语)、he(希伯来语)、ru(俄语)、zh(中文)、ja(日语)、hi(印地语)、ur(乌尔都语)和sa(梵语)。两个字母的子码是 ISO 3166 国家代码 [14 ]。

managing editor 元素

元素可以用来提供新闻提要编辑器的电子邮件地址。清单 8-11 显示了一个例子。

***清单 8-11。*声明 RSS 编辑器

<managingEditor>john@example.com (John Smith)</managingEditor>

pubDate 和 lastBuildDate 元素

频道内容的发布日期可以由pubDate元素提供。每次更新新闻提要时,元素值都会发生变化。RSS 应用日期和时间规范 RFC 822 [15 ,除了年份可以用两个或四个字符表示(后者是首选)。应根据格林威治标准时间(GMT)/协调世界时(UTC)的差异提供偏移量。例如,在英国伦敦时间 2010 年 11 月 24 日上午 08:04(换句话说,在 GMT 时区)更新的一个 RSS 频道可以显示在清单 8-12 、中所示的发布日期,而在斐济苏瓦(时区 1200 GMT 或 UTC+12)发布的另一个新闻订阅源同时可以被编写为如清单 8-13 中所示。

***清单 8-12。*GMT 时区的出版日期

<pubDate>Wed, 24 Nov 2010 08:04:00 GMT</pubDate>

***清单 8-13。*UTC+12 时区的发布日期

<pubDate>Wed, 24 Nov 2010 08:04:00 +1200</pubDate>

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 注意在管辖区实行夏令时(夏令时)的国家,时差一年变化两次。

新闻提要的最后修改日期可以用与pubDate相同的格式由lastBuildDate元素表示。

skip hours 和 skipDays 元素

没有更新的时间段可以由skipHours元素提供,天数可以由skipDays元素提供。skipHours的允许值是介于023(GMT 时间)之间的整数(清单 8-14 )。

***清单 8-14。*一个只在工作时间检查更新的 RSS 频道

<skipHours>   <hour>0</hour>   <hour>1</hour>   <hour>2</hour>   <hour>3</hour>   <hour>4</hour>   <hour>5</hour>   <hour>6</hour>   <hour>7</hour>   <hour>17</hour>   <hour>18</hour>   <hour>19</hour>   <hour>20</hour>   <hour>21</hour>   <hour>22</hour>   <hour>23</hour> </skipHours>

skipDays元素有七个day子元素(完整的星期几)。它们可以用来指定新闻订阅频道不更新的日子,因此没有必要检查更新(清单 8-15 )。

***清单 8-15。*周末不更新的 RSS 源

 <skipDays>   <day>Saturday</day>   <day>Sunday</day> </skipDays>

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 申报的小时或天数仅为提示。RSS 阅读器可能无法在列出的时间段内读取频道。

文本输入元素

channel元素的另一个可选子元素是文本Input,它可以用来指定一个搜索框。它有四个必需的子元素:

  • Submit按钮的标签由title子元素决定。
  • 文本输入区可以由description子元素描述。
  • name子元素标识文本对象。
  • link子元素提供了用于处理请求的 CGI 脚本的 URL。

许多 RSS 阅读器都忽略了 text Input元素。

TTL 元件

从源刷新之前的缓存持续时间可以用ttl元素(代表“生存时间”)以分钟表示。以三个小时为例,它可以写成清单 8-16 。

***清单 8-16。*RSS 中的 180 分钟缓存

<ttl>180</ttl>

站长元素

负责 RSS 频道技术问题的网站管理员的电子邮件地址可以用webMaster元素表示。

item 元素的子元素

item 元素有十个子元素:authorcategorycommentsdescriptionenclosureguidlinkpubDatesourcetitle。所有子元素都是可选的;但是,至少应该为每个项目元素提供一个标题或描述。

作者子元素

新闻提要条目作者的电子邮件地址可以由author子元素提供。清单 8-17 显示了一个例子。

***清单 8-17。*RSS 作者

<author>info@example.com (John Smith)</author>

类别和发布子元素

item元素的categorypubDate子元素的语法与channel元素的相应子元素的语法相同(参见“0”和“0”部分)。

注释子元素

如果有一个与新闻条目(item元素)相关的论坛或博客,那么可以通过item元素的comments子元素提供到该页面的链接。清单 8-18 显示了一个例子。

***清单 8-18。*一个 RSS 条目的评论

<comments>http://example.com/blog/14352</comments>

描述子元素

项目(新闻摘要)的文本由description子元素分隔,如清单 8-19 中的所示。

***清单 8-19。*一个 RSS 项目描述

<description>  Reports from workshop sessions </description>

外壳子元件

item元素的enclosure子元素可以用来描述与新闻提要条目相关的文件(通常是音频或视频)。它有三个必需的属性:url(文件的 URL)、length(以字节为单位的文件大小)和type(媒体类型),如清单 8-20 所示。

***清单 8-20。*一个圈地

<enclosure url="http://example.com/download/words.mp3" length="4875577" type="audio/mpeg"/>

guid 子元素

每个 RSS 条目可能有一个唯一标识它的字符串,称为全局唯一标识符guid子元素没有特定的语法规则,但是它的内容通常是一个 URL ( 清单 8-21 )。

清单 8-21。 A guid指定与新闻条目相关的永久链接

<item>   <title>New HTML5 and CSS3 tutorials</title>   <link>http://www.lesliesikos.com/tutorials/</link>   <pubDate>Mon, 06 Feb 2012 14:22:00 +0930</pubDate>   <dc:creator>Dr. Leslie Sikos</dc:creator>   <category>Website</category> **  <guid isPermaLink="true">http://www.lesliesikos.com/tutorials/</guid>**   <description>Tutorials on HTML5 video embedding and CSS3 transitions</description>   <content:encoded>Several tutorials have recently been published on emerging ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)    technologies such as HTML5 video embedding and CSS3 transitions.</content:encoded> </item>

guid子元素有一个可选属性isPermaLink,可以设置为truefalse。在第一种情况下(这是默认的),属性值必须是一个 URL,指向由item元素描述的完整文章或故事。很少使用false值。事实上,整个isPermaLink属性经常被省略。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 注意guid子元素,如果提供的话,在整个 RSS 文件中应该是唯一的。如果在文件中多次描述了同一网站的频繁更新,则可能很难满足此标准。

RSS 阅读器将guid子元素的值视为一个字符串。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 提示虽然guid子元素是可选的,但是为了最大化互操作性,建议为所有的item元素都提供这个子元素。

链接子元素

项目的 URL 可以由link子元素提供。清单 8-22 显示了一个例子。

***清单 8-22。*为 RSS 项目声明的链接

<link>http://example.com/news</link>

源子元素

如果条目内容来自外部 RSS 频道,它可以由source子元素提供。该值是资源通道的标题。source元素有一个必需的属性url,它是资源的 URL(清单 8-23 )。

***清单 8-23。*一个 RSS 条目的来源

<source url="http://www.example.com/news.xml">John Smith Headlines</source>

标题子元素

RSS 频道项目的标题可以由item元素的title子元素声明。清单 8-24 显示了一个例子。

***清单 8-24。*一个 RSS 条目的标题

<title>A new W3C standard</title>

名称空间

RSS 的默认名称空间是[purl.org/rss/1.0/](http://purl.org/rss/1.0/),它是 RDF Site Summary (RSS) 1.0 名称空间[web.resource.org/rss/1.0/](http://web.resource.org/rss/1.0/)永久 URL 形式。名称空间可以以清单 8-25 中的形式提供。

***清单 8-25。*声明 RSS 名称空间

<rss version="2.0" xmlns:rss="http://purl.org/rss/1.0/">

关于频道更新的附加数据可以由 RSS ( [purl.org/rss/1.0/modules/syndication/](http://purl.org/rss/1.0/modules/syndication/))的网络联合命名空间提供。它用三个元素扩展了 RSS 频道:

  • 新闻频道更新的周期可以用sy:updatePeriod元素来描述。允许的值有hourlydailyweeklymonthlyyearly。如果省略,则假定为daily
  • 更新的频率可以用sy:updateFrequency元素来表示与更新周期的关系。它的值是一个正整数。
  • 为了计算发布时间表,可以通过sy:updateBase元素定义一个基准日期。它应该是 W3C 日期和时间格式之一的#PCDATA 日期 [16 ]。

默认情况下,新闻源条目是纯文本内容。然而,新闻聚合器通常支持 XML 中不允许的(X)HTML 标记。实体编码和 CDATA 转义的内容可以通过由[purl.org/rss/1.0/modules/content/](http://purl.org/rss/1.0/modules/content/)名称空间定义的content:encoded元素来提供。如果由link元素限定的超链接不够,并且需要额外的超链接(在新闻条目内容中),那么content:encoded元素特别有用。尽管文本格式和其他标记代码也可以用这种方式编写,但它们被许多 RSS 阅读器忽略了。

有一个元素atom:link,它可以从另一个联合格式(Atom 1 )中使用,以提供新闻提要频道的自链接。为了应用这个元素,应该声明 Atom 名称空间[www.w3.org/2005/Atom](http://www.w3.org/2005/Atom)

高级新闻提要通常至少包含清单 8-26 中的名称空间声明。

***清单 8-26。*RSS 中典型的名称空间声明

`<rss version=“2.0” 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
**  xmlns:content=“http://purl.org/rss/1.0/modules/content/”** 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
**  xmlns:dc=“http://purl.org/dc/elements/1.1/”** 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
**  xmlns:sy=“http://purl.org/rss/1.0/modules/syndication/”** 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
**  xmlns:atom=“http://www.w3.org/2005/Atom”** 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

`

这样做,可以在channel中使用这些名称空间中的元素,如清单 8-27 所示,或者在item元素中使用,如清单 8-28 中的示例。

***清单 8-27。*RSS 频道中来自外部名称空间的元素

**<dc:creator>**Dr. Leslie Sikos**</dc:creator>** **<sy:updatePeriod>**daily**</sy:updatePeriod>** **<sy:updateFrequency>**1**</sy:updateFrequency>** **<sy:updateBase>**2011-01-01T12:00+00:00**</sy:updateBase>** **<atom:link** href="http://www.lesliesikos.com/sikos.xml" rel="self" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  type="application/rss+xml" **/>**

***清单 8-28。*RSS 项目中来自外部名称空间的元素

**<content:encoded>**<![CDATA An escaped RSS item can contain markup elements such as ![images <a href="http://www.example.com/">hyperlinks</a> that work in all major news feed ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  readers. ]]>**</content:encoded>**

设计 RSS 源

支持新闻提要的浏览器通常提供基本样式或者根本不提供样式(而是呈现树结构)。对此不满意或者想要确保高级外观(在所有浏览器中也是相似的)的开发人员可以使用 CSS 或 XSLT 格式化 RSS 频道。

在第一种情况下,需要一个 CSS 引用,如清单 8-29 中的所示。

***清单 8-29。*使用 CSS 文件对 RSS 进行样式化

<?xml version="1.0" encoding="utf-8" ?> **<?xml-stylesheet type="text/css" href="css/feed.css" ?>** <rss version="2.0">

编写 CSS 规则很简单。例如,主标题的字体大小可以通过清单 8-30 中给出的 CSS 规则来增加。


原子格式将在本章后面描述。

***清单 8-30。*设置 RSS 频道和标题的字体大小

**channel title** {   font-size: 1.4em; }

可以设置文档的字体,如清单 8-31 所示。

***清单 8-31。*整个 RSS 文档的 CSS 规则

**rss** {   font-family: Verdana, Helvetica, sans-serif; }

类似地,可以为其他 RSS 元素设置更多样式。许多信息不一定相关,可以省略,例如清单 8-32 中的信息。

***清单 8-32。*用 CSS 隐藏 RSS 元素

channel link, channel language, channel copyright, channel managingEditor, ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)  channel webMaster, channel docs, channel lastBuildDate { **  display: none;** }

第二种方法应用 XSL 转换,这提供了更多的控制。例如,可以激活超链接,可以更改节点顺序。XSL 文件可以被链接,如清单 8-33 所示。

***清单 8-33。*使用 XSLT 对 RSS 进行样式化

<?xml version="1.0" encoding="utf-8" ?> **<?xml-stylesheet type="text/xsl" href="css/feed.xsl" ?>** <rss version="2.0">

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 注意当自定义样式表应用于新闻源时,某些浏览器的内置 RSS 阅读器提供的搜索或类别列表等附加功能将不可用。

原子

Atom 新闻提要规范由两个标准组成:Atom 联合格式和 ?? Atom 发布协议。第一种是由 IETF 提议的标准(RFC 4287 [17 ]定义的 XML 语法的 web 提要格式。第二个是基于 HTTP 的协议,可用于创建和更新 web 资源。它也是一个建议标准(RFC 5023 [18 )。本节重点介绍 Atom 联合格式。

Atom 提要的文件扩展名是.atom.xml。Atom 的互联网媒体类型是application/atom+xml

Atom 命名空间是[www.w3.org/2005/Atom](http://www.w3.org/2005/Atom)

创建原子文件

Atom 文件以 XML 声明开始。Atom 文件的根元素和新闻提要条目的容器(entry元素)是feed元素。清单 8-34 显示了一个 Atom 文件的一般结构。

***清单 8-34。*原子文件的一般结构

<?xml version="1.0" encoding="utf-8"?> <feed >   <title>An Atom news feed example</title>   <link rel="alternate" type="text/html" href="http://www.example.com/" />   <link rel="self" type="application/atom+xml" href="http://www.example.com/News/atom.xml" />   <id>tag:www.example.com,2008-09-29://4</id>   <updated>2011-08-08T08:03:00Z</updated>   <entry>     <title>News item 2</title>     <link rel="alternate" type="text/html" href="http://www.expl.com/2011.html#entry-9167" />     <id>tag:www.expl.com,2011://4.9167</id>     <published>2011-08-08T08:03:00Z</published>     <updated>2011-08-08T08:03:00Z</updated>     <summary>Summary of news entry 2</summary>     <author>       <name>John Smith</name>     </author>     <category term="Home Page Stories" />     <category term="Web of Services" />     <content type="html" xml:lang="en" xml:base="http://www.example.com/">The full content ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/web-std-master-h5c3-xml/img/U001.jpg)      of News #2.</content>   </entry>   <entry>     <title>News item 1</title>     <link rel="alternate" type="text/html" href="http://www.example.com/news/#entry-9165" />     <id>tag:www.example.com,2011://4.9165</id>     <published>2011-08-07T08:48:00Z</published>     <updated>2011-08-07T08:48:00Z</updated>     <summary>Summary of news entry 1</summary>     <author>       <name>John Smith</name>     </author>     <category term="Publication" />     <category term="Web design" />     <category term="Press releases" />     <content type="html" xml:lang="en" xml:base="http://www.example.com/">       <![CDATA The full content of News #1\. In CDATA sections, ![images        <a href="http://example.com/markup/">markup code</a> can also be included. ]]>     </content> </entry> </feed>

这些元素和属性将在下面的章节中详细描述。

文本构造

Atom 的文本构造包含语言敏感的、人类可读的文本。文本构造的一个可选属性是type属性。如果提供,该属性必须具有下列值之一:texthtmlxhtml。如果省略,Atom feed 阅读器会将文本构造视为用默认值text指定的。MIME 类型不能声明为type属性的属性值。

人称结构

Atom 中有三个 person 构造来描述一个实体,比如一个人或一个公司:nameuri和 email。

Atom 新闻提要必须恰好包含一个提供作者姓名的name元素。元素内容是区分语言的。

uri元素是可选的,最多可以提供一个链接到作者网站的元素。元素的内容是一个国际化资源标识符(IRI),其格式由 RFC 3987 [19 ]定义。

作者的电子邮件地址可以由可选的email元素声明,在 Atom 文件中只能使用一个这样的元素。元素的内容应该符合 RFC 2822 [20 ]定义的标准互联网消息格式。

日期结构

日期构造元素的内容应该根据 RFC 3339 [21 ]中定义的日期时间格式进行声明。日期和时间应该用大写的T分开,而当省略数字时区偏移量时,应该使用大写的Z(清单 8-35 )。

***清单 8-35。*Atom 中的一些有效时间戳

<updated>2012-12-13T08:15:01Z</updated> <updated>2012-12-13T08:15:01.25Z</updated> <updated>2012-12-13T08:15:01+01:00</updated> <updated>2012-12-13T08:15:01.25+01:00</updated>

Atom 新提要的所有日期值都应符合日期和时间表示的 ISO 标准(ISO 8601:2004 [22 ])和 W3C 日期和时间格式 [23 ]规范,以及 W3C 推荐标准“XML Schema Part 2:data types Second Edition”[24]中的 ISO 8601 公约。

容器

Atom 中有三个容器元素:

  • feed元素,包含整个提要
  • entry元素,包含一个简单的新闻条目
  • content元素,包含完整的故事(新闻条目的内容)

接下来的部分将详细描述这些容器。

进给元素

如前所述,Atom feeds 的顶层元素是feed;它包含新闻提要元数据和内容(所有其他 Atom 元素)。除了feed元素的所有子entry元素包含至少一个author元素之外,feed元素需要一个或多个author元素。必须为所有feed元素提供一个id元素。feed元素必须恰好包含一个updated元素。所有的feed元素只需要一个title元素。feed元素应该包含一个link元素,其rel属性值设置为self

任意数量的categorycontributor元素可以包含在feed元素中。每个feed只允许有一个generator。这同样适用于iconlogo元件。

feed元素最多可以包含一个link元素,其rel属性值设置为alternate,并且具有相同的typehreflang属性值。除了这些link元素之外,额外的link元素可以包括在feed元素中。

每个feed元素只允许有一个rightssubtitle元素。

所有的原子元素都将在接下来的章节中描述。

条目元素

Atom 新闻可以由entry元素提供。它可以是feed元素的子元素,也可以是提要中独立的顶级元素。entry元素必须至少有一个author元素,除非在具有author元素的entry中提供了一个source元素,或者feed元素包含一个author元素。可选地,entry元素具有任意数量的category元素。entry元素可能最多有一个content元素。entry元素的另一个可选子元素是contributor。可以提供任意数量的贡献者。

entry元素必须有一个id元素。

没有contententry元素必须至少提供一个具有rel属性和alternate属性值的link元素。

entry元素不能包含多个具有rel属性的link元素和具有完全相同类型和hreflang属性值的替代属性值。可选地,还可以为entry元件提供额外的link元件。

entry元素最多可以包含一个publishedrightssourcesummary元素。

如果entry包含一个具有src属性的content元素或者entry内容是 Base64 编码的,则应该为entry元素提供summary子元素。 2

条目元素必须恰好包含一个title和一个updated元素。

内容元素

Atom 新闻内容可以由content元素提供。此元素的内容是语言敏感的。元素有两个属性:typesrc

content元素上的type属性的值可能是texthtmlxhtml。如果省略,text将被 Atom 阅读器视为默认值。另一种选择是提供 MIME 媒体类型(但不是复合类型)。

content元素有一个可选的src属性。该属性的值应该是符合 RFC 3987 的国际化资源标识符。如果提供了src属性,content必须为空。type属性也应该和src属性一起提供一个 MIME 类型。


2 尽管atom:content元素的type属性是一种互联网媒体类型,但它既不是 XML 媒体类型,也不是以文本/开头或以/xml+xml结尾。

元数据和内容元素

与 RSS 类似,Atom 中有几个元素用来表示元数据和描述新闻条目的内容,如authorcategorycontributorgeneratoriconidlinklogopublishedrightssourcesubtitlesummarytitleupdated。其规范赋予内容意义的元素和具有特殊限制的元素将在以下部分中描述。

作者元素

Atom 提要中的作者可以分为三个级别。如果author元素不是作为entry元素的子元素提供的,那么作者是从source元素的author子元素派生的。否则,由feed元素的author声明的作者被认为是(清单 8-36 )。

***清单 8-36。*声明 Atom 提要的作者

<author>    <name>John Smith</name> </author>

类别元素

category元素有三个属性:必需的term和可选的schemelabel ( 清单 8-37 )。

***清单 8-37。*Atom 中的类别声明

<category term="Publication" />

属性的值是语言敏感的。属性值中使用的字符实体被视为字符,而不是标记。

贡献者元素

对条目或整个提要做出贡献的个人或公司可以用contributor元素来表示(清单 8-38 )。

***清单 8-38。*一个饲料贡献者

<contributor>   <name>Alex Sikos</name> </contributor>

发电机元件

如果使用软件工具来生成 Atom 新闻提要,那么可以通过generator元素来识别。generator元素有两个可选属性。根据 RFC 3987,uri属性的值应该是一个国际化的资源标识符。另一个可选属性是代表 Atom 生成器版本的version(清单 8-39 )。

***清单 8-39。*在供料中发现了一台原子发生器

<generator uri= "http://www.sixapart.com/movabletype/" ver="4.34-en">Movable Type</generator>

图标元素

类似于uri元素的内容和generator元素的uri属性的内容,icon元素的内容也应该是符合 RFC 3987 的 IRI 引用。该元素为 Atom 新闻提要指定一个图像文件。应提供图像分辨率(清单 8-40 )。

***清单 8-40。*Atom Feed 的图标

<icon>http://example.cimg/ icon.gif</icon>

id 元素

id元素是以小写形式提供的永久标识符(清单 8-41 )。它被用作feed元素和entry元素的子元素。

***清单 8-41。*一个原子标识符

<id>tag:example.org,2003:3</id>

百分号编码,这种使用以百分号(%)、 3 开头的字符串对 URI 的某些字符进行编码的机制应该尽可能地消除。4URIs 应避免圆点。国际化资源标识符应该是 NFC 标准化的,或 NFKC 标准化的。应该保留空的片段标识符。id元素中的 URIs 区分大小写。在比较id实例时,应用百分比转义的标识符被认为不同于不应用百分比转义的标识符。

链接元素

与 Atom 条目或整个提要相关的外部超链接可以由link元素提供。这个元素有六个属性:hrefreltypehreflangtitlelength。必需的href属性包含链接的国际化资源标识符。根据 RFC 3987 的 IRIisegment-nz-nc 语法规则,可选的rel属性必须有一个非空字符串作为值。允许的值有alternaterelatedselfenclosurevia。可选的属性type必须有一个 MIME 媒体类型作为它的值。hreflang属性也是可选的。当提供时,它必须有一个 RFC 3066 语言标签。可选的title属性是语言敏感的。标题中使用的字符实体被认为是字符而不是标记。关于链接内容的建议长度的提示可以由可选的八位字节的length属性提供。清单 8-42 显示了一个典型的link元素。


3 百分比编码最广为人知的一个例子是在设计拙劣的 URIs 中代替空格字符出现的%20字符串。

4 如果百分比编码是必要的并且无法消除,字母应该是大写字母 A-f。

**清单 8-42。**原子中的一种link元素

<link rel="self" type="application/atom+xml" href="http://example.net/ atom.xml" />

标志元素

可以通过logo元素(清单 8-43 )提供一个图像来直观地标识您的 Atom 新闻提要。其内容是 IRI 参考(RFC 3987)。徽标图像的纵横比应为 2:1(水平对垂直)。

***清单 8-43。*一个 Atom Feed 的 Logo 图片

<logo>http://example.cimg/ icon.gif</logo>

发布的元素

新闻条目的第一个版本的编写时间可以通过published元素的日期结构来指定(清单 8-44 )。

***清单 8-44。*一个published元素

<published>2011-09-18T16:35:24Z</published>

这样的时间戳可能与条目中的updated元素的内容一致。

权利元素

自定义版权信息可以写成文本结构,并使用rights元素添加到 Atom 新闻提要中(清单 8-45 )。

***清单 8-45。*Atom 中的版权信息

<rights>Copyright © 2012 John Smith. All rights reserved.</rights>

源元素

如果一个entry来自外部 Atom 新闻提要,那么原始条目的元数据可以有选择地用作source元素的子元素。在所有情况下都应该保留元素authorcontributorrightscategory

子标题元素

Atom 提要可以用一个字符串来描述,该字符串作为subtitle元素的内容提供,它提供了比title元素更长的描述(清单 8-46 )。

***清单 8-46。*Atom 新闻提要的描述

<title type="text">Steven Johnson News</title> <subtitle>  The news feed of poet Steven Johnson. New booklets, press releases, readings, and more. </subtitle>

摘要元素

可以用summary元素为每个 Atom 条目添加一个简短的描述(清单 8-47 )。

***清单 8-47。*一个原子条目的概要

<summary>The latest book of S. Johnson, “My Darling”, has been released.</summary>

RSS 还是 Atom?

RSS 和 Atom 在所有主要的消费类阅读器中都得到了广泛的支持。不过,RSS 似乎比 Atom 更受欢迎。然而,从标准的角度来看,RSS 2.0 规范是由哈佛大学版权所有的,并且被认为是最终确定的。尽管该规范已经在知识共享许可下发布,但预计不会有重大变化。相比之下,Atom 1.0 在默认情况下是一种功能更加丰富的联合格式,并且可以扩展。

互联网媒体类型application/rss+xml未注册,而application/atom+xml由 IANA 注册。

与仅支持 RSS 文档格式的 RSS 2.0 相比,Atom 新闻提要的 Atom 条目文档可以应用任何网络协议。因此,Atom 新闻提要的聚合和提取有了更多的可能性。

尽管 RSS 2.0 的名称空间不是 XML 名称空间,但是它可以选择包含来自外部 XML 名称空间的元素(如前所述)。Atom 1.0 的名称空间本身就是一个 XML 名称空间,也可能包含来自其他 XML 名称空间的元素和属性。这些外部元素和属性的实现由规范指南明确定义。可以得出结论,Atom 比 RSS 更具可扩展性。

RSS 不支持相对 URIs,而 Atom 重用 xml:base 属性,该属性允许相对引用。

RSS 2.0 中没有定义模式。Atom 1.0 应用了 RelaxNG 模式,这是一个非标准化的 ISO 标准 ISO/IEC 19757-2:2008[25]。它可以用来验证 Atom 新闻提要中提供的数据。可选地,可以从 RelaxNG 生成更多的模式。

实际上,大多数新闻提要阅读器都支持这两种格式。正确编写的 RSS 和 Atom 文件是格式良好的 XML 文件,可以用多种方式进行处理,并且可以使用名称空间机制进行扩展。在使用提要阅读器应用时,用户通常不会注意到这两种格式之间的区别。

总结

本章向您介绍了 RSS 和 Atom 新提要格式,以及创建符合标准的提要通道和手动维护它们所需的所有背景信息和实践,而不会中断 XML 序列化格式、RSS 或 Atom 格式要求或最高级别的互操作性。

在下一章中,您将学习如何保护网站的布局,如何在 web 上使用高级排版功能,以及如何优化图像文件以最大化用户体验。您还将学习符合标准的跨浏览器视频和多媒体嵌入技术。

参考文献

  1. 埃勒曼 C (1997)通道定义格式(CDF)。微软公司。www.w3.org/TR/NOTE-CDFsubmit.html2010 年 11 月 23 日访问
  2. Guha RV,Bray T (eds) (1997)使用 XML 的元内容框架。www.w3.org/TR/NOTE-MCF-XML/2010 年 11 月 23 日访问
  3. Winer D (1997)用 XML 编写新闻脚本。戴夫·维纳。scripting . com/davenet/1997/12/15/scriptingnewsinxml . html。2010 年 11 月 23 日访问
  4. RAB (2008) RSS 0.90 规范。转自 1999 年出版的 Netscape 原始规范。RSS 咨询委员会。www.rssboard.org/rss-0-9-02010 年 11 月 23 日访问
  5. Asman P,Cannon S,Sommo C (2010)扩展 RSS 以满足中央银行的需求。都柏林核心和元数据应用国际会议论文集。匹兹堡都柏林核心元数据倡议
  6. Cadenhead R,Smith G,Hanna J,Kearney B (2006)应用/rss+xml 媒体类型。互联网协会。www.rssboard.org/rss-mime-type-application.txt2010 年 11 月 22 日访问
  7. Beged-Dov G、Brickley D、Dornfest R、Davis I、Dodds L、Eisenzopf J、Galbraith D、Guha RV、MacLeod K、Miller E、Swartz A、van der Vlist E 等(2008) RDF 站点摘要(RSS) 1.0。RSS 开发工作组。web.resource.org/rss/1.0/spec2010 年 11 月 23 日访问
  8. RAB(2008)RSS 规范的当前版本。RSS 咨询委员会。www.rssboard.org/rss-specification2010 年 11 月 23 日访问
  9. RAB (2010)规范历史。RSS 咨询委员会。www.rssboard.org/rss-history2011 年 8 月 28 日访问
  10. 互联网名称与数字地址分配机构(2010)永久 URI 计划。互联网号码分配机构。www.iana.org/assignments/uri-schemes.html2010 年 11 月 26 日访问
  11. Raggett D,Le Hors A,Jacobs I (eds) (1999)语言代码。在:HTML 4.01 规范。万维网联盟。www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes2010 年 11 月 24 日访问
  12. Alvestrand H (1995)用于识别语言的标签。互联网工程任务组。www.ietf.org/rfc/rfc1766.txt2010 年 11 月 24 日访问
  13. ISO (2002) ISO 639-1:2002。国际标准化组织。www . iso . org/iso/iso _ catalogue/catalogue _ ics/catalogue _ detail _ ics . htm?csnumber=22109 。2010 年 11 月 24 日访问
  14. ISO (2006) ISO 3166-1:2006。国际标准化组织。www . iso . org/iso/iso _ catalogue/catalogue _ TC/catalogue _ detail . htm?csnumber=39719 。2010 年 11 月 24 日访问
  15. Crocker DH(ed)(1982)ARPA 互联网文本信息的格式标准。特拉华大学。http://asg.web.cmu.edu/rfc/rfc822.html。2010 年 11 月 24 日访问
  16. Wolf M,Wicksteed C (1997)日期和时间格式。万维网联盟。www.w3.org/TR/NOTE-datetime2010 年 11 月 27 日访问
  17. Nottingham M,say re R(eds)(2005)Atom 联合格式。提议的标准。互联网协会。tools.ietf.org/html/rfc42872010 年 11 月 22 日访问
  18. 格雷戈里奥 J,德霍拉 B(编辑)(2007)原子出版协议。提议的标准。互联网协会。tools.ietf.org/html/rfc50232010 年 11 月 22 日访问
  19. Duerst M,Suignard M (2005)国际化资源标识符(IRIs)。互联网工程任务组。tools.ietf.org/html/rfc39872010 年 12 月 1 日访问
  20. 雷斯尼克 P(编辑)(2001)互联网信息格式。互联网协会。tools.ietf.org/html/rfc28222010 年 12 月 1 日访问
  21. Klyne G,Newman C (2002)互联网上的日期和时间:时间戳。互联网协会。tools.ietf.org/html/rfc33392010 年 12 月 2 日访问
  22. ISO (2004)数据元素和交换格式-信息交换-日期和时间的表示。ISO 8601:2004。国际标准化组织。www . iso . org/iso/iso _ catalogue/catalogue _ TC/catalogue _ detail . htm?csnumber=40874 。2010 年 12 月 2 日访问
  23. Wolf M,Wicksteed C (1998)日期和时间格式。万维网联盟。www.w3.org/TR/NOTE-datetime2010 年 12 月 2 日访问
  24. Biron PV,Malhotra A (eds) (2004 年)ISO 8601 公约。XML 模式第二部分:数据类型第二版。W3C 推荐。万维网联盟。www.w3.org/TR/xmlschema-2/#isoformats2010 年 12 月 2 日访问
  25. 国际标准化组织(2008)国际标准化组织/IEC 19757-2:2008。信息技术-文件模式定义语言(DSDL)-第二部分:基于常规语法的验证 RELAX NG。国际标准化组织。www . iso . org/iso/iso _ catalogue/catalogue _ TC/catalogue _ detail . htm?csnumber=52348 。2010 年 12 月 7 日访问