XML 教程

XML 教程 XML 简介 XML 用途 XML 树结构 XML 语法 XML 元素 XML 属性 XML 命名空间 XML Display XML HttpRequest XML Parser XML DOM XML XPath XML XSLT XML XQuery XML XLink XML 验证器 XML DTD XML Schema XML 服务器 XML 实例 XML 测验

XML AJAX

AJAX 简介 AJAX XMLHttp AJAX 请求 AJAX 响应 AJAX XML 文件 AJAX PHP AJAX ASP AJAX 数据库 AJAX 应用程序 AJAX 实例

XML DOM

DOM 简介 DOM 节点 DOM 访问节点 DOM 节点信息 DOM 节点列表 DOM 节点遍历 DOM 节点导航 DOM 获取节点 DOM 更改节点 DOM 删除节点 DOM 替换节点 DOM 创建节点 DOM 添加节点 DOM 克隆节点 DOM 实例

XPath 教程

XPath 简介 XPath 节点 XPath 语法 XPath 轴(Axes) XPath 运算符 XPath 实例

XSLT 教程

XSLT 简介 XSL 语言 XSLT 转换 XSLT <template> XSLT <value-of> XSLT <for-each> XSLT <sort> XSLT <if> XSLT <choose> XSLT Apply XSLT 客户端 XSLT 服务端 XSLT 编辑 XML XSLT 实例

XQuery 教程

XQuery 简介 XQuery 实例 XQuery FLWOR 表达式 XQuery FLWOR + HTML XQuery 术语 XQuery 语法 XQuery 添加元素和属性 XQuery 选择和过滤 XQuery 函数

XML DTD

DTD 简介 DTD 构建模块 DTD 元素 DTD 属性 DTD 元素 vs. 属性 DTD 实体 DTD 实例

XSD Schema

XSD 简介 XSD How To XSD <schema> XSD 元素 XSD 属性 XSD 限制

XSD Complex

XSD 复杂元素 XSD 空元素 XSD 仅限元素 XSD 纯文本元素 XSD 混合 XSD 指示器 XSD <any> XSD <anyAttribute> XSD 替换 XSD 实例

XSD 数据类型

XSD 字符串 XSD 日期 XSD 数值 XSD 杂项 XSD 参考手册

Web Services

XML Services 简介 XML WSDL XML SOAP XML RDF XML RSS

参考手册

DOM 节点类型 DOM 节点 DOM NodeList DOM NamedNodeMap DOM 文档 DOM 元素 DOM 属性 DOM 文本 DOM CDATA DOM 注释 DOM XMLHttpRequest DOM 解析器 XSLT 元素 XSLT/XPath 函数


XML 和 RDF

RDF文档实例

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:si="https://www.w3ccoo.com/rdf/">

<rdf:Description rdf:about="https://www.w3ccoo.com">
  <si:title>W3Schools</si:title>
  <si:author>Jan Egil Refsnes</si:author>
</rdf:Description>

</rdf:RDF>

什么是RDF?

  • RDF代表资源描述框架
  • RDF是一个描述web资源的框架
  • RDF被设计成可以被计算机读取和理解
  • RDF不是为向人们展示而设计的
  • RDF是用XML编写的
  • RDF是W3C语义Web活动的一部分
  • RDF 是 2004 年 2 月 10 日的 W3C 推荐标准

RDF-使用实例

  • 描述购物项目的属性,如价格和可用性
  • 描述web事件的时间表
  • 描述有关网页的信息(内容、作者、创建和修改日期)
  • 描述web图片的内容和分级
  • 描述搜索引擎的内容
  • 描述电子图书馆

RDF被设计成可以被计算机读取

RDF的目的是提供一种描述信息的通用方法,以便计算机应用程序能够读取和理解这些信息。

RDF描述不是为在web上显示而设计的。



RDF是用XML编写的

RDF文档是用XML编写的。RDF使用的XML语言称为RDF/XML。

通过使用XML,RDF信息可以很容易地在不同类型的计算机之间使用不同类型的操作系统和应用程序语言进行交换。


RDF 与 "The Semantic Web"

RDF语言是W3C语义Web活动的一部分。W3C的"Semantic Web Vision"是一个未来:

  • Web信息具有确切的含义
  • 网络信息可以被计算机理解和处理
  • 计算机可以整合来自网络的信息

RDF使用Web标识符(URI)来标识资源。

RDF用属性和属性值描述资源。


RDF资源、属性和属性值

RDF使用Web标识符(URI)标识事物,并用属性和属性值描述资源。

资源、财产和财产价值的说明:

  • Resource 是任何可以有URI的内容,例如 "https://www.w3ccoo.com/rdf"
  • Property 是具有名称的资源,例如 "author" or "homepage"
  • Property value 属性的值,例如 "Jan Egil Refsnes" or "https://www.w3ccoo.com" (请注意,属性值可以是另一个资源)

下面的RDF文档可以描述这个资源 "https://www.w3ccoo.com/rdf":

<?xml version="1.0"?>

<RDF>
  <Description about="https://www.w3ccoo.com/rdf">
    <author>Jan Egil Refsnes</author>
    <homepage>https://www.w3ccoo.com</homepage>
  </Description>
</RDF>

上面的例子被简化了。省略名称空间。


RDF语句

资源、属性和属性值的组合形成一个语句(称为语句的主语、谓语和宾语)。

让我们看一些实例语句以更好地理解:

声明: "The author of https://www.w3ccoo.com/rdf is Jan Egil Refsnes".

  • 上述声明的主题是: https://www.w3ccoo.com/rdf
  • 谓词是: author
  • 对象是: Jan Egil Refsnes

声明: "The homepage of https://www.w3ccoo.com/rdf is https://www.w3ccoo.com".

  • 上述声明的主题是: https://www.w3ccoo.com/rdf
  • 谓词是: homepage
  • 对象是: https://www.w3ccoo.com

RDF实例

这是 CD 列表中的两条记录:

Title Artist Country Company Price Year
Empire Burlesque Bob Dylan USA Columbia 10.90 1985
Hide your heart Bonnie Tyler UK CBS Records 9.90 1988

下面是RDF文档中的几行:

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Empire Burlesque">
  <cd:artist>Bob Dylan</cd:artist>
  <cd:country>USA</cd:country>
  <cd:company>Columbia</cd:company>
  <cd:price>10.90</cd:price>
  <cd:year>1985</cd:year>
</rdf:Description>

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Hide your heart">
  <cd:artist>Bonnie Tyler</cd:artist>
  <cd:country>UK</cd:country>
  <cd:company>CBS Records</cd:company>
  <cd:price>9.90</cd:price>
  <cd:year>1988</cd:year>
</rdf:Description>
.
.
.
</rdf:RDF>

RDF文档的第一行是XML声明。XML声明后面是RDF文档的根元素: <rdf:RDF>.

xmlns:rdf 命名空间,指定具有rdf前缀的元素来自命名空间 "http://www.w3.org/1999/02/22-rdf-syntax-ns#".

xmlns:cd 命名空间,指定具有cd前缀的元素来自命名空间 "http://www.recshop.fake/cd#".

<rdf:Description> 元素包含由 rdf:about 属性.

元素: <cd:artist>, <cd:country>, <cd:company>, 等是资源的属性。


RDF在线验证程序

W3C 的 RDF 验证服务 在学习RDF时非常有用。在这里您可以尝试使用RDF文件。

在线RDF验证器解析RDF文档,检查语法,并生成RDF文档的表格和图形视图。

将下面的实例复制并粘贴到W3C的RDF验证器中:

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:si="https://www.w3ccoo.com/rdf/">
<rdf:Description rdf:about="https://www.w3ccoo.com">
  <si:title>W3Schools.com</si:title>
  <si:author>Jan Egil Refsnes</si:author>
</rdf:Description>
</rdf:RDF>

当您解析上面的实例时,结果如下所示结果看起来像这样


RDF元素

RDF的主要元素是根元素<RDF>和标识资源的<Description>元素。


<rdf:RDF> 元素

<rdf:RDF> 是RDF文档的根元素。它将XML文档定义为RDF文档。它还包含对RDF命名空间的引用:

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  ...Description goes here...
</rdf:RDF>

<rdf:Description> 元素

<rdf:Description> 元素用关于属性标识资源。

<rdf:Description> 元素包含描述资源的元素:

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Empire Burlesque">
  <cd:artist>Bob Dylan</cd:artist>
  <cd:country>USA</cd:country>
  <cd:company>Columbia</cd:company>
  <cd:price>10.90</cd:price>
  <cd:year>1985</cd:year>
</rdf:Description>

</rdf:RDF>

元素艺术家、国家、公司、价格和年份定义在 http://www.recshop.fake/cd# 命名空间。此命名空间位于RDF之外(而不是RDF的一部分)。RDF只定义框架。元素艺术家、国家、公司、价格和年份必须由其他人(公司、组织、人员等)定义。


Properties as Attributes

属性元素也可以定义为属性(而不是元素):

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Empire Burlesque"
cd:artist="Bob Dylan" cd:country="USA"
cd:company="Columbia" cd:price="10.90"
cd:year="1985" />

</rdf:RDF>

属性作为资源

属性元素也可以定义为资源:

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Empire Burlesque">
  <cd:artist rdf:resource="http://www.recshop.fake/cd/dylan" />
  ...
  ...
</rdf:Description>

</rdf:RDF>

在上面的实例中,属性artist没有值,而是对包含艺术家信息的资源的引用。


RDF容器

RDF容器用于描述一组事物。

以下RDF元素用于描述组: <Bag>, <Seq>, and <Alt>.


<rdf:Bag> 元素

<rdf:Bag> 元素用于描述不必按特定顺序排列的值列表。

<rdf:Bag> 元素可能包含重复的值。

实例

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Beatles">
  <cd:artist>
    <rdf:Bag>
      <rdf:li>John</rdf:li>
      <rdf:li>Paul</rdf:li>
      <rdf:li>George</rdf:li>
      <rdf:li>Ringo</rdf:li>
    </rdf:Bag>
  </cd:artist>
</rdf:Description>

</rdf:RDF>

<rdf:Seq> 元素

<rdf:Seq> 元素用于描述值的有序列表(例如,按字母顺序)。

<rdf:Seq> 元素可能包含重复的值。

实例

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Beatles">
  <cd:artist>
    <rdf:Seq>
      <rdf:li>George</rdf:li>
      <rdf:li>John</rdf:li>
      <rdf:li>Paul</rdf:li>
      <rdf:li>Ringo</rdf:li>
    </rdf:Seq>
  </cd:artist>
</rdf:Description>

</rdf:RDF>

<rdf:Alt> 元素

<rdf:Alt> 元素用于描述可选值的列表(用户只能选择其中一个值)。

实例

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">

<rdf:Description
rdf:about="http://www.recshop.fake/cd/Beatles">
  <cd:format>
    <rdf:Alt>
      <rdf:li>CD</rdf:li>
      <rdf:li>Record</rdf:li>
      <rdf:li>Tape</rdf:li>
    </rdf:Alt>
  </cd:format>
</rdf:Description>

</rdf:RDF>

RDF术语

在上面的例子中,我们讨论了描述容器元素时的"list of values"。在RDF中,这些"list of values"称为成员。

因此,我们有以下几点:

  • 容器是一种包含东西的资源
  • 包含的内容称为成员(不是值列表)

RDF集合

RDF集合描述只能包含指定成员的组。


rdf:parseType="Collection" 属性

如前一章所示,容器表示包含资源的是成员,但并不表示不允许其他成员。

RDF集合用于描述只能包含指定成员的组。

集合由属性描述 rdf:parseType="Collection".

实例

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://recshop.fake/cd#">

<rdf:Description
rdf:about="http://recshop.fake/cd/Beatles">
  <cd:artist rdf:parseType="Collection">
    <rdf:Description rdf:about="http://recshop.fake/cd/Beatles/George"/>
    <rdf:Description rdf:about="http://recshop.fake/cd/Beatles/John"/>
    <rdf:Description rdf:about="http://recshop.fake/cd/Beatles/Paul"/>
    <rdf:Description rdf:about="http://recshop.fake/cd/Beatles/Ringo"/>
  </cd:artist>
</rdf:Description>

</rdf:RDF>

RDF模式和应用程序类

RDF Schema (RDFS) 是RDF的扩展.

RDF用类、属性和值来描述资源。

此外,RDF还需要一种方法来定义特定于应用程序的类和属性。应用程序特定的类和属性必须使用RDF的扩展来定义。

RDF模式就是这样一个扩展。


RDF Schema (RDFS)

RDF模式不提供实际的特定于应用程序的类和属性。

相反,RDF模式提供了描述特定于应用程序的类和属性的框架。

RDF模式中的类与面向对象编程语言中的类非常相似。这允许将资源定义为类的实例和类的子类。


RDFS 实例

以下实例演示了一些RDFS功能:

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://www.animals.fake/animals#">

<rdf:Description rdf:ID="animal">
  <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
</rdf:Description>

<rdf:Description rdf:ID="horse">
  <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
  <rdfs:subClassOf rdf:resource="#animal"/>
</rdf:Description>

</rdf:RDF>

在上面的例子中,资源"horse"是类"animal"的一个子类。


缩略实例

由于RDFS类是RDF资源,我们可以使用rdfs:Class instead 的rdf:Description,然后放下rdf:type information:

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://www.animals.fake/animals#">

<rdfs:Class rdf:ID="animal" />

<rdfs:Class rdf:ID="horse">
  <rdfs:subClassOf rdf:resource="#animal"/>
</rdfs:Class>

</rdf:RDF>

That's it!


都柏林核心

都柏林核心元数据倡议 (DCMI) 创建了一些用于描述文档的预定义属性。

RDF 是元数据(关于数据的数据)。 RDF用于描述信息资源。

都柏林核心是一组用于描述文档的预定义属性。

第一个都柏林核心属性于 1995 年在俄亥俄州都柏林的元数据研讨会定义,目前由 Dublin Core Metadata Initiative 维护。

属性 定义
Contributor 负责对资源内容作出贡献的实体
Coverage 资源内容的范围或范围
Creator 主要负责制作资源内容的实体
Format 资源的物理或数字表现
Date 资源生命周期中事件的日期
Description 对资源内容的描述
Identifier 在给定上下文中对资源的明确引用
Language 资源智力内容的语言
Publisher 负责提供资源的实体
Relation 对相关资源的引用
Rights 有关在资源中和资源上拥有的权利的信息
Source 对一种资源的引用,当前资源是从中派生出来的
Subject 资源内容的主题
Title 资源的名称
Type 资源内容的性质或类型

快速查看上表可以发现RDF非常适合表示都柏林核心信息。


RDF实例

以下实例演示在RDF文档中使用一些都柏林核心属性:

<?xml version="1.0"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc= "http://purl.org/dc/elements/1.1/">

<rdf:Description rdf:about="https://www.w3ccoo.com">
  <dc:description>W3Schools - Free tutorials</dc:description>
  <dc:publisher>Refsnes Data as</dc:publisher>
  <dc:date>2008-09-01</dc:date>
  <dc:type>Web Development</dc:type>
  <dc:format>text/html</dc:format>
  <dc:language>en</dc:language>
</rdf:Description>

</rdf:RDF>

RDF参考

RDF 命名空间 (xmlns:rdf) is: http://www.w3.org/1999/02/22-rdf-syntax-ns#

RDFS 命名空间 (xmlns:rdfs ) is: http://www.w3.org/2000/01/rdf-schema#

RDF文件的建议文件扩展名为.rdf。但是,extension .xml通常用于提供与旧xml解析器的兼容性。

MIME类型应为 "application/rdf+xml".


RDFS / RDF 类型

Element Class of Subclass of
rdfs:Class All classes  
rdfs:Datatype Data types Class
rdfs:Resource All resources Class
rdfs:Container Containers Resource
rdfs:Literal Literal values (text and numbers) Resource
rdf:List Lists Resource
rdf:Property Properties Resource
rdf:Statement Statements Resource
rdf:Alt Containers of alternatives Container
rdf:Bag Unordered containers Container
rdf:Seq Ordered containers Container
rdfs:ContainerMembershipProperty 容器成员属性 Property
rdf:XMLLiteral XML literal values Literal

RDFS / RDF 属性

Element Domain Range 描述
rdfs:domain Property Class 资源的域
rdfs:range Property Class 资源范围
rdfs:subPropertyOf Property Property 属性的子属性
rdfs:subClassOf Class Class 资源是类的子类
rdfs:comment Resource Literal 资源的可读描述
rdfs:label Resource Literal 资源的可读标签(名称)
rdfs:isDefinedBy Resource Resource 资源的定义
rdfs:seeAlso Resource Resource 关于资源的附加信息
rdfs:member Resource Resource 资源的成员
rdf:first List Resource  
rdf:rest List List  
rdf:subject Statement Resource RDF 语句中资源的主题
rdf:predicate Statement Resource RDF 语句中资源的谓词
rdf:object Statement Resource RDF 语句中的资源对象
rdf:value Resource Resource 用于值的属性
rdf:type Resource Class 资源是一个类的实例

RDF 属性

属性 描述
rdf:about 定义所描述的资源
rdf:Description 用于描述资源的容器
rdf:resource 定义用于标识属性的资源
rdf:datatype 定义元素的数据类型
rdf:ID 定义元素的ID
rdf:li 定义列表
rdf:_n 定义节点
rdf:nodeID 定义元素节点的ID
rdf:parseType 定义如何解析元素
rdf:RDF RDF文档的根
xml:base 定义XML基
xml:lang 定义元素内容的语言