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 | 定义元素内容的语言 |