XML RDF
RDF 文档示例
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:si="https://w3schools.org.cn/rdf/">
<rdf:Description rdf:about="https://w3schools.org.cn">
<si:title>W3Schools</si:title>
<si:author>Jan Egil Refsnes</si:author>
</rdf:Description>
</rdf:RDF>
什么是 RDF?
- RDF 代表 Resource Description Framework
- RDF 是一个用于描述 Web 上资源的框架
- RDF 旨在被计算机读取和理解
- RDF 不适用于向人们展示
- RDF 用 XML 编写
- RDF 是 W3C 语义 Web 活动的一部分
- RDF 是 W3C 于 2004 年 2 月 10 日发布的推荐标准
RDF - 使用示例
- 描述购物商品的属性,例如价格和可用性
- 描述 Web 事件的时间安排
- 描述有关网页的信息(内容、作者、创建和修改日期)
- 描述 Web 图片的内容和评级
- 描述搜索引擎的内容
- 描述电子图书馆
RDF 旨在被计算机读取
RDF 被设计为提供一种描述信息以供计算机应用程序读取和理解的通用方式。
RDF 描述不适用于在 Web 上显示。
RDF 用 XML 编写
RDF 文档用 XML 编写。RDF 使用的 XML 语言称为 RDF/XML。
通过使用 XML,RDF 信息可以轻松地在不同类型的计算机之间交换,这些计算机使用不同的操作系统和应用程序语言。
RDF 和“语义 Web”
RDF 语言是 W3C 语义 Web 活动的一部分。W3C 的“语义 Web 愿景”是未来,其中
- Web 信息具有确切的含义
- Web 信息可以被计算机理解和处理
- 计算机可以整合来自 Web 的信息
RDF 使用 Web 标识符 (URI) 来标识资源。
RDF 使用属性和属性值来描述资源。
RDF 资源、属性和属性值
RDF 使用 Web 标识符 (URI) 来标识事物,并使用属性和属性值来描述资源。
资源、属性和属性值的解释
- 资源 是任何可以具有 URI 的东西,例如“https://w3schools.org.cn/rdf”
- 属性 是具有名称的资源,例如“作者”或“主页”
- 属性值 是属性的值,例如“Jan Egil Refsnes”或“https://w3schools.org.cn”(注意,属性值可以是另一个资源)
以下 RDF 文档可以描述资源“https://w3schools.org.cn/rdf”
<?xml version="1.0"?>
<RDF>
<Description about="https://w3schools.org.cn/rdf">
<author>Jan Egil Refsnes</author>
<homepage>https://w3schools.org.cn</homepage>
</Description>
</RDF>
上面的示例是简化的。命名空间被省略了。
RDF 语句
资源、属性和属性值的组合构成一个语句(称为语句的主语、谓语和宾语)。
让我们看一些示例语句,以更好地理解
语句:“https://w3schools.org.cn/rdf 的作者是 Jan Egil Refsnes”。
- 上面语句的主语是:https://w3schools.org.cn/rdf
- 谓语是:author
- 宾语是:Jan Egil Refsnes
语句:“https://w3schools.org.cn/rdf 的主页是 https://w3schools.org.cn”。
- 上面语句的主语是:https://w3schools.org.cn/rdf
- 谓语是:homepage
- 宾语是:https://w3schools.org.cn
RDF 示例
以下是来自 CD 列表的两个记录
标题 | 艺术家 | 国家 | 公司 | 价格 | 年份 |
---|---|---|---|---|---|
帝国狂想曲 | 鲍勃·迪伦 | 美国 | 哥伦比亚 | 10.90 | 1985 |
隐藏你的心 | 邦妮·泰勒 | 英国 | 哥伦比亚唱片 | 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://w3schools.org.cn/rdf/">
<rdf:Description rdf:about="https://w3schools.org.cn">
<si:title>W3Schools.com</si:title>
<si:author>Jan Egil Refsnes</si:author>
</rdf:Description>
</rdf:RDF>
解析上面的示例时,结果将类似于此。
RDF 元素
RDF 的主要元素是根元素 <RDF> 和 <Description> 元素,它标识资源。
The <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>
The <rdf:Description> 元素
The <rdf:Description> 元素使用 about 属性标识资源。
The <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>
元素 artist、country、company、price 和 year 在 http://www.recshop.fake/cd# 命名空间中定义。此命名空间位于 RDF 之外(并且不是 RDF 的一部分)。RDF 仅定义框架。元素 artist、country、company、price 和 year 必须由其他人(公司、组织、个人等)定义。
属性作为属性
属性元素也可以定义为属性(而不是元素)
<?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> 和 <Alt>。
The <rdf:Bag> 元素
The <rdf:Bag> 元素用于描述不需要按特定顺序的值列表。
The <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>
The <rdf:Seq> 元素
The <rdf:Seq> 元素用于描述值的排序列表(例如,按字母顺序)。
The <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>
The <rdf:Alt> 元素
The <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 术语
在上面的示例中,我们在描述容器元素时谈论了“值列表”。在 RDF 中,这些“值列表”称为成员。
因此,我们有以下内容
- 容器是一个包含事物的资源
- 包含的事物称为成员(而不是值列表)
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 Schema 和应用程序类
RDF Schema (RDFS) 是 RDF 的扩展。
RDF 使用类、属性和值来描述资源。
此外,RDF 还需要一种方法来定义特定于应用程序的类和属性。特定于应用程序的类和属性必须使用 RDF 的扩展来定义。
其中一项扩展是 RDF Schema。
RDF Schema (RDFS)
RDF Schema 不提供实际的特定于应用程序的类和属性。
相反,RDF Schema 提供了描述特定于应用程序的类和属性的框架。
RDF Schema 中的类很像面向对象编程语言中的类。这使得资源可以定义为类的实例和类的子类。
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 代替 rdf:Description 并删除 rdf:type 信息来缩写上面的示例
<?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>
就是这样!
Dublin Core
Dublin Core 元数据倡议 (DCMI) 创建了一些预定义的属性来描述文档。
RDF 是元数据(关于数据的數據)。RDF 用于描述信息资源。
Dublin Core 是一组用于描述文档的预定义属性。
第一个 Dublin Core 属性是在 1995 年的 **俄亥俄州都柏林元数据研讨会** 上定义的,目前由 Dublin Core 元数据倡议 维护。
属性 | 定义 |
---|---|
贡献者 | 负责为资源内容做出贡献的实体 |
覆盖范围 | 资源内容的范围或范围 |
创建者 | 主要负责创建资源内容的实体 |
格式 | 资源的物理或数字表现形式 |
日期 | 资源生命周期中事件的日期 |
描述 | 对资源内容的描述 |
标识符 | 在给定上下文中对资源的明确引用 |
语言 | 资源智力内容的语言 |
出版者 | 负责使资源可用的实体 |
关系 | 对相关资源的引用 |
权利 | 有关资源中和资源上的权利的信息 |
来源 | 对当前资源所来自的资源的引用 |
主题 | 资源内容的主题 |
标题 | 赋予资源的名称 |
类型 | 资源内容的性质或类型 |
快速浏览上面的表格表明 RDF 非常适合表示 Dublin Core 信息。
RDF 示例
以下示例演示了在 RDF 文档中使用一些 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 rdf:about="https://w3schools.org.cn">
<dc:description>W3Schools - 免费教程</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) 是:http://www.w3.org/1999/02/22-rdf-syntax-ns#
RDFS 命名空间 (xmlns:rdfs) 是:http://www.w3.org/2000/01/rdf-schema#
RDF 文件的推荐文件扩展名为 **.rdf**。但是,扩展名 **.xml** 通常用于提供与旧 xml 解析器的兼容性。
MIME 类型应为 **"application/rdf+xml"**。
RDFS/RDF 类
元素 | 类的 | 子类的 |
---|---|---|
rdfs:Class | 所有类 | |
rdfs:Datatype | 数据类型 | 类 |
rdfs:Resource | 所有资源 | 类 |
rdfs:Container | 容器 | 资源 |
rdfs:Literal | 文字值(文本和数字) | 资源 |
rdf:List | 列表 | 资源 |
rdf:Property | 属性 | 资源 |
rdf:Statement | 语句 | 资源 |
rdf:Alt | 备选容器 | 容器 |
rdf:Bag | 无序容器 | 容器 |
rdf:Seq | 有序容器 | 容器 |
rdfs:ContainerMembershipProperty | 容器成员属性 | 属性 |
rdf:XMLLiteral | XML 文字值 | 文字 |
RDFS/RDF 属性
元素 | 域 | 范围 | 描述 |
---|---|---|---|
rdfs:domain | 属性 | 类 | 资源的域 |
rdfs:range | 属性 | 类 | 资源的范围 |
rdfs:subPropertyOf | 属性 | 属性 | 该属性是属性的子属性 |
rdfs:subClassOf | 类 | 类 | 该资源是类的子类 |
rdfs:comment | 资源 | 文字 | 资源的人类可读描述 |
rdfs:label | 资源 | 文字 | 资源的人类可读标签(名称) |
rdfs:isDefinedBy | 资源 | 资源 | 资源的定义 |
rdfs:seeAlso | 资源 | 资源 | 有关资源的其他信息 |
rdfs:member | 资源 | 资源 | 资源的成员 |
rdf:first | 列表 | 资源 | |
rdf:rest | 列表 | 列表 | |
rdf:subject | 语句 | 资源 | RDF 语句中资源的主题 |
rdf:predicate | 语句 | 资源 | RDF 语句中资源的谓词 |
rdf:object | 语句 | 资源 | RDF 语句中资源的宾语 |
rdf:value | 资源 | 资源 | 用于值的属性 |
rdf:type | 资源 | 类 | 该资源是类的实例 |
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 | 定义元素内容的语言 |