资源描述框架的用途及实际应用解析
什么是RDF?
RDF代表 资源描述框架
RDF是用于描述网络资源的框架
RDF旨在被计算机阅读和理解
RDF并非设计用于供人阅读
RDF以 XML
编写
示例
- 描述购物商品的属性,如价格和可用性
- 描述网络活动的时间表
- 描述网页的信息(内容,作者,创建和修改日期)
- 描述网络图片的内容和评级
- 为搜索引擎描述内容
- 描述电子图书馆
RDF旨在提供一种通用的描述信息的方式,以便计算机应用程序可以阅读和理解。RDF描述并不是设计用于在网络上显示。RDF文档以XML编写。 RDF使用的XML语言称为RDF/XML。通过使用XML,可以轻松地在使用不同类型的操作系统和应用程序语言的不同类型的计算机之间交换RDF信息。
RDF与“语义网络”
- 网络信息具有确切的含义
- 网络信息可以被计算机理解和处理
- 计算机可以集成来自网络的信息
RDF使用Web标识符(URI)来标识资源。 RDF使用属性和属性值描述资源。RDF资源,属性和属性值RDF使用Web标识符(URI)标识事物,并使用属性和属性值描述资源。
RDF语句
资源,属性和属性值的组合形成语句(称为语句的主题,谓词和宾语)
RDF示例
以下是来自CD列表的两个记录:
标题 | 艺术家 | 国家 | 公司 | 价格 | 年份 |
---|---|---|---|---|---|
帝国脱衣舞 | Bob Dylan | 美国 | 哥伦比亚 | 10.90 | 1985 |
隐藏你的心 | Bonnie Tyler | 英国 | CBS Records | 9.90 | 1988 |
以下是RDF文档中的几行:
<?xml version="1.0"?>
<rdf:RDF
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:cd命名空间指定了带有cd前缀的元素来自命名空间“http://www.recshop.fake/cd#”。rdf:Description元素包含了由rdf:about属性标识的资源的描述。元素:cd:artist,cd:country,cd:company等是资源的属性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#">
...描述放在这里...
</rdf:RDF>
<rdf:Description>
元素
<rdf:Description>
元素使用 about
属性标识一个资源。
<?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的一部分)。 元素 artist
,country
,company
,price
和 year
必须由其他人(公司,组织,个人等)定义。
属性作为属性
属性元素也可以定义为属性(而不是元素):
<?xml version="1.0"?>
<rdf:RDF
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>
。
<rdf:Bag>
元素
<rdf:Bag>
元素用于描述一个值列表,这些值不必按特定顺序排列。
<rdf:Bag>
元素可以包含重复值。
示例
<?xml version="1.0"?>
<rdf:RDF
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: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: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: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 模式(RDFS)是对 RDF 的扩展。RDF 用类、属性和值描述资源。此外,RDF 还需要一种方法来定义特定于应用程序的类和属性。必须使用 RDF 的扩展来定义特定于应用程序的类和属性。
RDF 模式(RDFS)
RDF 模式不提供实际的特定于应用程序的类和属性。相反,RDF 模式提供了描述特定于应用程序的类和属性的框架。RDF 模式中的类与面向对象编程语言中的类非常相似。这允许资源被定义为类的实例,并且类的子类。
RDFS 示例
以下示例演示了一些 RDFS 功能:
<?xml version="1.0"?>
<rdf:RDF
xml:base="http://www.animals.fake/animals#">
<rdf:Description rdf:ID="animal">
</rdf:Description>
<rdf:Description rdf:ID="horse">
<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
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>
达布林核心
达布林核心元数据倡议(DCMI)已经创建了一些预定义属性来描述文档。RDF 是元数据(关于数据的数据)。RDF 用于描述信息资源。达布林核心是一组用于描述文档的预定义属性。第一个达布林核心属性是在 1995 年在俄亥俄州达布林的元数据研讨会上定义的,目前由达布林核心元数据倡议维护。
属性 | 定义 |
---|---|
Contributor | 对资源内容做出贡献的实体 |
Coverage | 资源内容的范围或覆盖范围 |
Creator | 对资源内容负主要责任的实体 |
Format | 资源的物理或数字表示 |
Date | 资源生命周期中的事件日期 |
Description | 资源内容的说明 |
Identifier | 在给定上下文中对资源的明确引用 |
Language | 资源的知识内容语言 |
Publisher | 使资源可用的实体 |
Relation | 到相关资源的引用 |
Rights | 资源所拥有的和持有的权利信息 |
Source | 当前资源的来源参考 |
Subject | 资源内容的主题 |
Title | 资源的名称 |
Type | 资源内容的性质或类型 |
快速查看上面的表格表明,RDF 非常适合表示达布林核心信息。
RDF 示例
以下示例演示了 RDF 文档中一些达布林核心属性的使用:
<?xml version="1.0"?>
<rdf:RDF>
<rdf:Description rdf:about="http://example.org/resource">
<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>
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 | 定义元素内容的语言 |
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding
,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎点赞、收藏、关注