RDF/RDFS/OWL
Posted twilight0319
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RDF/RDFS/OWL相关的知识,希望对你有一定的参考价值。
RDF(Resource Description Framework 资源描述框架)
- 知识总是以三元组形式出现:
(subject, predicate, object)
即
(主,谓,宾)
- 资源和属性用URI来定义(
http://demo.com/KG
) - 属性值可以一个值,或者一个资源(URI)
- 可用命名空间替代uri来简化
<RDF>
<Description about="https://www.runoob.com//rdf">
<author>Jan Egil Refsnes</author>
<homepage>https://www.runoob.com/</homepage>
</Description>
</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:RDF>
RDF序列化的方式主要有:RDF/XML,N-Triples,Turtle,RDFa,JSON-LD
N-Triples
<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
@prefix person: <http://www.kg.com/person/> .
@prefix place: <http://www.kg.com/place/> .
@prefix : <http://www.kg.com/ontology/> .
person:1 :chineseName "罗纳尔多·路易斯·纳萨里奥·德·利马"^^string.
person:1 :career "足球运动员"^^string.
person:1 :fullName "Ronaldo Luís Nazário de Lima"^^string.
person:1 :birthDate "1976-09-18"^^date.
person:1 :height "180"^^int.
person:1 :weight "98"^^int.
person:1 :nationality "巴西"^^string.
person:1 :hasBirthPlace place:10086.
place:10086 :address "里约热内卢"^^string.
place:10086 :coordinate "-22.908333, -43.196389"^^string.
Trutle简化:
@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;
:coordinate "-22.908333, -43.196389"^^string.
RDFS(Resource Description Framework Schema)
是RDF的扩展,表现形式上就是RDF。常用的方式是RDF/XML,Turtle
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix : <http://www.kg.com/ontology/> .
### 这里我们用词汇rdfs:Class定义了“人”和“地点”这两个类。
:Person rdf:type rdfs:Class.
:Place rdf:type rdfs:Class.
### rdfs当中不区分数据属性和对象属性,词汇rdf:Property定义了属性,即RDF的“边”。
:chineseName rdf:type rdf:Property;
rdfs:domain :Person;
rdfs:range xsd:string .
:career rdf:type rdf:Property;
rdfs:domain :Person;
rdfs:range xsd:string .
常见属性:
rdfs:Class
用于定义类。rdfs:domain
用于表示该属性属于哪个类别。rdfs:range
用于描述该属性的取值类型。rdfs:subClassOf
用于描述该类的父类。比如,我们可以定义一个运动员类,声明该类是人的子类。rdfs:subProperty
. 用于描述该属性的父属性。比如,我们可以定义一个名称属性,声明中文名称和全名是名称的子类。
借用一下知乎中的图(图片来自文章:https://zhuanlan.zhihu.com/p/32122644)
OWL(Web Ontology Language)
可用于自动推理
- 数据属性(DatatypeProperty): 指向某个值
- 对象属性(ObjectProperty): 指向另一个实体
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix : <http://www.kg.com/ontology/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
### 这里我们用词汇owl:Class定义了“人”和“地点”这两个类。
:Person rdf:type owl:Class.
:Place rdf:type owl:Class.
### owl区分数据属性和对象属性(对象属性表示实体和实体之间的关系)。词汇owl:DatatypeProperty定义了数据属性,owl:ObjectProperty定义了对象属性。
:chineseName rdf:type owl:DatatypeProperty;
rdfs:domain :Person;
rdfs:range xsd:string .
:hasBirthPlace rdf:type owl:ObjectProperty;
rdfs:domain :Person;
rdfs:range :Place .
描述属性特征的词汇
owl:TransitiveProperty
: 属性具有传递性质。(若A位于B,B位于C,那么A肯定位于C)owl:SymmetricProperty
: 属性具有对称性。(若A认识B,那么B肯定认识A)。owl:FunctionalProperty
: 该属性取值的唯一性。(我们定义“母亲”是具有唯一性的属性,若A的母亲是B,在其他地方我们得知A的母亲是C,那么B和C指的是同一个人)。owl:inverseOf
: 定义某个属性的相反关系。(A是B的父母,那么B肯定是A的子女)。
本体映射词汇(Ontology Mapping)
owl:equivalentClass
: 表示某个类和另一个类是相同的。owl:equivalentProperty
: 表示某个属性和另一个属性是相同的。owl:sameAs
: 表示两个实体是同一个实体。
owl补充
- owl:oneOf
- owl:disjointWith :两个类不相交
- unionOf : 并
- minCadinality :
- maxCadinality
- InverseFunctionalProperty
- hasValue
总结
rdfs的常见属性:
rdfs:Class
用于定义类。rdfs:domain
用于表示该属性属于哪个类别。rdfs:range
用于描述该属性的取值类型。rdfs:subClassOf
用于描述该类的父类。比如,我们可以定义一个运动员类,声明该类是人的子类。rdfs:subProperty
. 用于描述该属性的父属性。比如,我们可以定义一个名称属性,声明中文名称和全名是名称的子类。
owl的常见属性:
描述属性特征的词汇
owl:TransitiveProperty
: 属性具有传递性质。(若A位于B,B位于C,那么A肯定位于C)owl:SymmetricProperty
: 属性具有对称性。(若A认识B,那么B肯定认识A)。owl:FunctionalProperty
: 该属性取值的唯一性。(我们定义“母亲”是具有唯一性的属性,若A的母亲是B,在其他地方我们得知A的母亲是C,那么B和C指的是同一个人)。owl:inverseOf
: 定义某个属性的相反关系。(A是B的父母,那么B肯定是A的子女)。
本体映射词汇(Ontology Mapping)
owl:equivalentClass
: 表示某个类和另一个类是相同的。owl:equivalentProperty
: 表示某个属性和另一个属性是相同的。owl:sameAs
: 表示两个实体是同一个实体。
- rdf其实描述了数据,但是数据之间的关系不够明确;我们可以自定义一些关系,但是关系与关系之间也是有联系的,这在rdf中并无法表示出来
- rdfs/owl是在rdf的基础上增加的约束;“边”不再是rdf中的直接定义,而也是需要用
rdfs:domain
,rdfs:range
来描述。在拥有更清晰的语义的情况下,就可以进行推理
参考文章: https://zhuanlan.zhihu.com/p/32122644
!-->以上是关于RDF/RDFS/OWL的主要内容,如果未能解决你的问题,请参考以下文章