一、RDF是什么?
是用于描述网络资源的 W3C 标准,比如网页的标题、作者、修改日期、内容以及版权信息。
RDF序列化的方式主要有:RDF/XML,N-Triples,Turtle,RDFa,JSON-LD等几种。
二、RDF/XML
用XML的格式来表示RDF数据。
解释
- <xmlns:cd > 命名空间,规定了带有前缀 cd 的元素来自命名空间 “http://www.recshop.fake/cd#”。
- <rdf:Description> 元素包含了对被 rdf:about 属性标识的资源的描述。
- 元素:<cd:artist>、<cd:country>、<cd:company> 等是此资源的属性。
<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>
1、RDF 元素
- rdf:RDF:是 RDF 文档的根元素
- rdf:Description :包含描述资源的那些元素
- property:定义属性,比方说上面的cd:artist,cd:country等
2、RDF容器
- 一个容器是一个包含事物的资源
- 被包含的事物被称为成员(不能称为"值的列表")。
1.<rdf:Bag>
- 用于描述一个规定为无序的成员
- 可包含重复的值
下面代码是在属性cd:artist下使用容器rdf:Bag :
<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>
2.<rdf:Seq>
- 描述一个规定为有序的成员
下面代码是在属性cd:artist下使用容器rdf:Seq
<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>
3.<rdf:Alt>
- 用于一个可替换的成员
<cd:format>
<rdf:Alt>
<rdf:li>CD</rdf:li>
<rdf:li>Record</rdf:li>
<rdf:li>Tape</rdf:li>
</rdf:Alt>
</cd:format>
3、RDF集合
正如在前面的章节所看到的,我们无法关闭一个容器。容器规定了所包含的资源为成员 - 它没有规定其他的成员是不被允许的。
RDF 集合用于描述仅包含指定成员的组。
集合是通过属性 rdf:parseType=“Collection” 来描述的。
<rdf:Description
rdf:about="http://recshop.fake/cd/Beatles">
<cd:artist rdf:parseType="Collection">
...
</cd:artist>
</rdf:Description>
4、RDFS
RDF Schema 不提供实际的应用程序专用的类和属性,而是提供了描述应用程序专用的类和属性的框架。
RDF Schema 中的类与面向对象编程语言中的类非常相似。这就使得资源能够作为类的实例和类的子类来被定义。
实例:资源 “horse” 是类 “animal” 的子类。
<?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>
由于一个 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>
5、RDF 都柏林核心元数据倡议
Contributor:一个负责为资源内容作出贡献的实体(如作者)。
Coverage:资源内容的氛围或作用域
Creator:一个主要负责创建资源内容的实体。
Format:物理或数字的资源表现形式。
Date:在资源生命周期中某事件的日期。
Description:对资源内容的说明。
Identifier:一个对在给定上下文中的资源的明确引用
Language:资源智力内容所用的语言。
Publisher:一个负责使得资源内容可用的实体
Relation:一个对某个相关资源的引用
Rights:有关保留在资源之内和之上的权利的信息
Source:一个对作为目前资源的来源的资源引用。
Subject:一个资源内容的主题
Title:一个给资源起的名称
Type:资源内容的种类或类型。
实例:
<?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="http://www.runoob.com">
<dc:description>Run Noob - 奔跑吧!菜鸟</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>
三、N-Triples
即用多个三元组来表示RDF数据集,是最直观的表示方法。每一行表示一个三元组,方便机器解析和处理.
知识图谱通常是用这种格式来发布数据。
<http://www.kg.com/person/1> <http://www.kg.com/ontology/chineseName> "罗纳尔多·路易斯·纳萨里奥·德·利马"^^string.
<http://www.kg.com/person/1> <http://www.kg.com/ontology/career> "足球运动员"^^string.
<http://www.kg.com/person/1> <http://www.kg.com/ontology/fullName> "Ronaldo Luís Nazário de Lima"^^string.
<http://www.kg.com/person/1> <http://www.kg.com/ontology/birthDate> "1976-09-18"^^date.
<http://www.kg.com/person/1> <http://www.kg.com/ontology/height> "180"^^int.
<http://www.kg.com/person/1> <http://www.kg.com/ontology/weight> "98"^^int.
<http://www.kg.com/person/1> <http://www.kg.com/ontology/nationality> "巴西"^^string.
<http://www.kg.com/person/1> <http://www.kg.com/ontology/hasBirthPlace> <http://www.kg.com/place/10086>.
<http://www.kg.com/place/10086> <http://www.kg.com/ontology/address> "里约热内卢"^^string.
<http://www.kg.com/place/10086> <http://www.kg.com/ontology/coordinate> "-22.908333, -43.196389"^^string.
四、Turtle
应该是使用得最多的一种RDF序列化方式了。它比RDF/XML紧凑,且可读性比N-Triples好。
@prefix person: <http://www.kg.com/person/> .
@prefix place: <http://www.kg.com/place/> .
@prefix : <http://www.kg.com/ontology/> .
person:1 :chineseName "罗纳尔多·路易斯·纳萨里奥·德·利马"^^string;
:career "足球运动员"^^string;
:fullName "Ronaldo Luís Nazário de Lima"^^string;
:birthDate "1976-09-18"^^date;
:height "180"^^int;
:weight "98"^^int;
:nationality "巴西"^^string;
:hasBirthPlace place:10086.
place:10086 :address "里约热内卢"^^string;
:address "-22.908333, -43.196389"^^string.
总结
以上就是今天学习的内容,本文仅仅简单介绍了RDF的相关知识。
参考来源:
https://www.runoob.com/rdf/rdf-tutorial.html
https://blog.csdn.net/u011801161/article/details/78833958