知识图谱—RDF、RDFS、OWL

一、RDF

(1)RDF表现形式

      RDF(Resource Description Framework),即资源描述框架,其本质是一个数据模型(Data Model)。它提供了一个统一的标准,用于描述实体/资源。简单来说,就是表示事物的一种方法和手段。RDF形式上表示为SPO三元组,有时候也称为一条语句(statement),知识图谱中我们也称其为一条知识,如下图。

       RDF由节点和边组成,节点表示实体/资源、属性,边则表示了实体和实体之间的关系以及实体和属性的关系。

(2)RDF序列化方法

       RDF的表示形式和类型有了,那我们如何创建RDF数据集,将其序列化(Serialization)呢?换句话说,就是我们怎么存储和传输RDF数据。目前,RDF序列化的方式主要有:RDF/XML,N-Triples,Turtle,RDFa,JSON-LD等几种。

        1)、RDF/XML,顾名思义,就是用XML的格式来表示RDF数据。之所以提出这个方法,是因为XML的技术比较成熟,有许多现成的工具来存储和解析XML。然而,对于RDF来说,XML的格式太冗长,也不便于阅读,通常我们不会使用这种方式来处理RDF数据。

        2)、N-Triples,即用多个三元组来表示RDF数据集,是最直观的表示方法。在文件中,每一行表示一个三元组,方便机器解析和处理。开放领域知识图谱DBpedia通常是用这种格式来发布数据的。

        3)、Turtle, 应该是使用得最多的一种RDF序列化方式了。它比RDF/XML紧凑,且可读性比N-Triples好。

        4)、RDFa, 即“The Resource Description Framework in Attributes”,是HTML5的一个扩展,在不改变任何显示效果的情况下,让网站构建者能够在页面中标记实体,像人物、地点、时间、评论等等。也就是说,将RDF数据嵌入到网页中,搜索引擎能够更好的解析非结构化页面,获取一些有用的结构化信息。读者可以去这个页面感受一下RDFa,其直观展示了普通用户看到的页面,浏览器看到的页面和搜索引擎解析出来的结构化信息。

        5)、JSON-LD,即“JSON for Linking Data”,用键值对的方式来存储RDF数据。感兴趣的读者可以参考此网站

下面,我们结合上一篇文章中罗纳尔多知识图的例子,给出其N-Triples和Turtle的具体表示。

Example1 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)对RDF的IRI进行缩写。

Example2 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.

同一个实体拥有多个属性(数据属性)或关系(对象属性),我们可以只用一个subject来表示,使其更紧凑。我们可以将上面的Turtle改为:

Example3 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;
         :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.

即,将一个实体用一个句子表示(这里的句子指的是一个英文句号“.”)而不是多个句子,属性间用分号隔开。

(3)RDF表达能力

        RDF的表达能力有限,无法区分类和对象,也无法定义和描述类的关系/属性。RDF是对具体事物的描述,缺乏抽象能力,无法对同一个类别的事物进行定义和描述。就以罗纳尔多这个知识图为例,RDF能够表达罗纳尔多和里约热内卢这两个实体具有哪些属性,以及它们之间的关系。但如果我们想定义罗纳尔多是人,里约热内卢是地点,并且人具有哪些属性,地点具有哪些属性,人和地点之间存在哪些关系,这个时候RDF就表示无能为力了。不论是在智能的概念上,还是在现实的应用当中,这种泛化抽象能力都是相当重要的;同时,这也是知识图谱本身十分强调的。RDFS和OWL这两种技术或者说模式语言/本体语言(schema/ontology language)解决了RDF表达能力有限的困境。(无法区分类和对象、无法定义概念属性)

二、RDFS

       RDFS/OWL是RDF的“衣服”,它们都是用来描述RDF数据的。为了不显得这么抽象,我们可以用关系数据库中的概念进行类比。用过Mysql的读者应该知道,其database也被称作schema。这个schema和我们这里提到的schema language十分类似。我们可以认为数据库中的每一张表都是一个类(Class),表中的每一行都是该类的一个实例或者对象,表中的每一列就是这个类所包含的属性。如果我们是在数据库中来表示人和地点这两个类别,那么为他们分别建一张表就行了;再用另外一张表来表示人和地点之间的关系。​​​​​​​RDFS/OWL本质上是一些预定义词汇(vocabulary)构成的集合,用于对RDF进行类似的类定义及其属性的定义。​​​​​​​

       RDFS,即“Resource Description Framework Schema”,是最基础的模式语言。还是以罗纳尔多知识图为例,我们在概念、抽象层面对RDF数据进行定义。下面的RDFS定义了人和地点这两个类,及每个类包含的属性。

@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 .
        
:fullName rdf:type rdf:Property;
        rdfs:domain :Person;
        rdfs:range xsd:string .
        
:birthDate rdf:type rdf:Property;
        rdfs:domain :Person;
        rdfs:range xsd:date .

:height rdf:type rdf:Property;
        rdfs:domain :Person;
        rdfs:range xsd:int .
        
:weight rdf:type rdf:Property;
        rdfs:domain :Person;
        rdfs:range xsd:int .
        
:nationality rdf:type rdf:Property;
        rdfs:domain :Person;
        rdfs:range xsd:string .
        
:hasBirthPlace rdf:type rdf:Property;
        rdfs:domain :Person;
        rdfs:range :Place .
        
:address rdf:type rdf:Property;
        rdfs:domain :Place;
        rdfs:range xsd:string .
        
:coordinate rdf:type rdf:Property;
        rdfs:domain :Place;
        rdfs:range xsd:string .

我们这里只介绍RDFS几个比较重要,常用的词汇:

1. rdfs:Class. 用于定义类。

2. rdfs:domain. 用于表示该属性属于哪个类别。

3. rdfs:range. 用于描述该属性的取值类型。

4. rdfs:subClassOf. 用于描述该类的父类。比如,我们可以定义一个运动员类,声明该类是人的子类。

5. rdfs:subProperty. 用于描述该属性的父属性。比如,我们可以定义一个名称属性,声明中文名称和全名是名称的子类。

其实rdf:Property和rdf:type也是RDFS的词汇,因为RDFS本质上就是RDF词汇的一个扩展。我们在这里不罗列进去,是不希望读者混淆。RDFS其他的词汇及其用法请参考W3C官方文档

三、OWL

       上面我们提到,RDFS本质上是RDF词汇的一个扩展。后来人们发现RDFS的表达能力还是相当有限,因此提出了OWL。我们也可以把OWL当做是RDFS的一个扩展,其添加了额外的预定义词汇。

OWL,即“Web Ontology Language”,语义网技术栈的核心之一。OWL有两个主要的功能:

1. 提供快速、灵活的数据建模能力。

2. 高效的自动推理。

        我们先谈如何利用OWL进行数据建模。用OWL对罗纳尔多知识图进行语义层的描述:

@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 .

:career rdf:type owl:DatatypeProperty;
        rdfs:domain :Person;
        rdfs:range xsd:string .
        
:fullName rdf:type owl:DatatypeProperty;
        rdfs:domain :Person;
        rdfs:range xsd:string .
        
:birthDate rdf:type owl:DatatypeProperty;
        rdfs:domain :Person;
        rdfs:range xsd:date .

:height rdf:type owl:DatatypeProperty;
        rdfs:domain :Person;
        rdfs:range xsd:int .
        
:weight rdf:type owl:DatatypeProperty;
        rdfs:domain :Person;
        rdfs:range xsd:int .
        
:nationality rdf:type owl:DatatypeProperty;
        rdfs:domain :Person;
        rdfs:range xsd:string .
        
:hasBirthPlace rdf:type owl:ObjectProperty;
        rdfs:domain :Person;
        rdfs:range :Place .
        
:address rdf:type owl:DatatypeProperty;
        rdfs:domain :Place;
        rdfs:range xsd:string .
        
:coordinate rdf:type owl:DatatypeProperty;
        rdfs:domain :Place;
        rdfs:range xsd:string .

罗纳尔多这个例子不能展现OWL丰富的表达能力,我们这里简单介绍一下常用的词汇:

描述属性特征的词汇

1. owl:TransitiveProperty. 表示该属性具有传递性质。例如,我们定义“位于”是具有传递性的属性,若A位于B,B位于C,那么A肯定位于C。

2. owl:SymmetricProperty. 表示该属性具有对称性。例如,我们定义“认识”是具有对称性的属性,若A认识B,那么B肯定认识A。

3. owl:FunctionalProperty. 表示该属性取值的唯一性。 例如,我们定义“母亲”是具有唯一性的属性,若A的母亲是B,在其他地方我们得知A的母亲是C,那么B和C指的是同一个人。

4. owl:inverseOf. 定义某个属性的相反关系。例如,定义“父母”的相反关系是“子女”,若A是B的父母,那么B肯定是A的子女。

四、OWL的优势

         知识图谱的推理主要分为两类:基于本体的推理和基于规则的推理。我们这里谈的是基于本体的推理。

        读者应该发现,上面所介绍的属性特征词汇其实就创造了对RDF数据进行推理的前提。此时,我们加入支持OWL推理的推理机(reasoner),就能够执行基于本体的推理了。RDFS同样支持推理,由于缺乏丰富的表达能力,推理能力也不强。举个例子,我们用RDFS定义人和动物两个类,另外,定义人是动物的一个子类。此时推理机能够推断出一个实体若是人,那么它也是动物。OWL当然支持这种基本的推理,除此之外,凭借其强大的表达能力,我们能进行更有实际意义的推理。想象一个场景,我们有一个庞大数据库存储人物的亲属关系。里面很多关系都是单向的,比如数据库只保存了A的父亲(母亲)是B,但B的子女字段里面没有A,如下表。

       如果在只有单个关系,数据量不多的情况下,我们尚能人工的去补全这种关系。如果在关系种类上百,人物上亿的情况下,我们如何处理?当进行关系修改,添加,删除等操作的时候,该怎么处理?这种场景想想就会让人崩溃。如果我们用inversOf来表示hasParent和hasChild互为逆关系,上面的数据可以表示为:

        绿色的关系表示是我们RDF数据中真实存在的,红色的关系是推理得到的。通过这个例子,相信读者应该初步了解了OWL的推理功能和能力。

五、RDF/RDFS/OWL和neo4j的关系

      RDF/RDFS/OWL是本体语言,而本体的构成元组包含实例化数据,也就是说OWL不单单是概念的定义,还包括真实数据。

       Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。

       在一个图中包含两种基本的数据类型:Nodes(节点) 和 Relationships(关系)。Nodes 和 Relationships 包含key/value形式的属性。Nodes通过Relationships所定义的关系相连起来,形成关系型网络结构。其形式如下:

    基于neo4j的这种存储特点,经常用其来存储owl、rdf文件。可以参考链接​​​​​​​

下一篇:知识图谱—知识存储—仅用neo4j搭建简单的金融知识图谱​​​​​​​

  • 5
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 初中数学知识图谱RDF是指使用RDF(Resource Description Framework)技术构建的初中数学知识图谱。 初中数学知识图谱RDF的构建可以利用数学学科的相关概念和知识来描述数学知识之间的关系和属性。借助RDF技术,可以使用三元组(主谓宾)的方式来表示数学知识的基本要素,包括概念、定义、定理、公式等。 初中数学知识图谱RDF可以包括以下内容: 1. 数学概念:表示数学学科的基本概念,如数字、形状、比例等。 2. 定义和性质:描述数学概念的定义和性质,例如四边形的定义和性质,直角三角形的定义和性质等。 3. 公式和定理:用数学公式和定理来表示数学中的重要关系和结论,如勾股定理、二次方程的解法等。 4. 推导和证明:使用推导和证明的过程来解释数学中的推理和解题方法,包括数学归纳法、推理法则等。 通过初中数学知识图谱RDF的建立和应用,可以实现数学知识的形式化表示和机器的理解。这样,可以为学生提供更精确和全面的数学知识,帮助他们更好地理解数学概念和方法,以及解决数学问题的能力。同时,还可以支持数字化教学和在线教育平台的发展,提供个性化的学习资源和智能化的学习辅助工具。 ### 回答2: 初中数学知识图谱RDF是指将初中数学知识图谱(Knowledge Graph)表示为RDF(Resource Description Framework)格式的一种方法。RDF是一种用于描述和表示信息的语义网技术,它使用三元组(主语-谓语-宾语)的数据结构来表示知识之间的关系。 在初中数学知识图谱RDF中,主语可以是任何一个数学概念或知识点,谓语可以表示该知识点之间的关系,而宾语则表示与该知识点相关的具体信息或其他知识点。 例如,我们可以将"平行线"这个数学概念表示为一个主语,并使用谓语表示与之相关联的其他概念或属性。例如,我们可以使用谓语"定义"来连接“平行线”与其定义的相关知识点的关系。而宾语则可以是该定义的具体内容,如“在同一个平面内,任意两条不交叉的直线称为平行线”。 通过使用RDF表示初中数学知识图谱,我们可以更好地组织和表示数学知识之间的关系,从而为学生提供更系统化、可查询和跟踪的学习资源和工具。初中数学知识图谱RDF可以帮助学生更好地理解数学概念之间的联系,发现知识点之间的逻辑关系,并能够更有针对性地进行学习和练习。同时,它也可以为教师提供更多的教学资源和指导,帮助他们更好地进行教学规划和评估学生的学习进展。 总之,初中数学知识图谱RDF是一种用于表示初中数学知识图谱的技术,通过使用RDF格式,可以更好地组织和表示数学知识之间的关系,为学生和教师提供更好的学习和教学资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值