知识图谱基础

知识工程基本概念

前提知识

语义网络semantic web

语义网络是由Quillian于上世纪60年代提出的知识表达模式,其用相互连接的节点和边来表示知识。
节点表示对象、概念,边表示节点之间的关系。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1OSzFp5h-1591193957081)(attachment:image.png)]

语义网络的优点:

  1. 容易理解和展示。

  2. 相关概念容易聚类。

语义网络的缺点:

  1. 节点和边的值没有标准,完全是由用户自己定义。

  2. 多源数据融合比较困难,因为没有标准。

  3. 无法区分概念节点和对象节点。

  4. 无法对节点和边的标签(label,我理解是schema层,后面会介绍)进行定义。

简而言之,语义网络可以比较容易地让我们理解语义和语义关系。其表达形式简单直白,符合自然。然而,由于缺少标准,其比较难应用于实践。

RDF

RDF的提出解决了语义网络的缺点1和缺点2,在节点和边的取值上做了约束,制定了统一标准,为多源数据的融合提供了便利。另外,RDF对is-a关系进行了定义,即,rdf:type(是rdf标准中的一个词汇,之后的文章会介绍)。因此,不管在哪个语义网络中,表达is-a关系,我们都用rdf:type,在语法上形成了统一。


- RDF表现形式

RDF(Resource Description Framework),即资源描述框架,其本质是一个数据模型(Data Model)。它提供了一个统一的标准,用于描述实体/资源。简单来说,就是表示事物的一种方法和手段。RDF形式上表示为SPO三元组,有时候也称为一条语句(statement),知识图谱中我们也称其为一条知识,如下图。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wZujKAVa-1591193957083)(attachment:image.png)]
RDF由节点和边组成,节点表示实体/资源、属性,边则表示了实体和实体之间的关系以及实体和属性的关系


- 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数据嵌入到网页中,搜索引擎能够更好的解析非结构化页面,获取一些有用的结构化信息。

5. JSON-LD,即“JSON for Linking Data”,用键值对的方式来存储RDF数据。

turtle

Example


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就表示无能为力了。

**无法区分类和对象、无法定义概念属性**

RDFS

** 解决了缺点3**

用过Mysql的读者应该知道,其database也被称作schema。这个schema和我们这里提到的schema language十分类似。

我们可以认为数据库中的每一张表都是一个类(Class),表中的每一行都是该类的一个实例或者对象,表中的每一列就是这个类所包含的属性。

如果我们是在数据库中来表示人和地点这两个类别,那么为他们分别建一张表就行了;再用另外一张表来表示人和地点之间的关系。​​​​​​​

RDFS/OWL本质上是一些预定义词汇(vocabulary)构成的集合,用于对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;

:coordinate rdf:type rdf:Property;
      rdfs:domain :Place;
      rdfs:range xsd:string .

RDFS常用词汇

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

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

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

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

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

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

OWL

** 解决了缺点4**
OWL当做是RDFS的一个扩展,其添加了额外的预定义词汇。

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

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

  2. 高效的自动推理。

使用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 .

:hasBirthPlace rdf:type owl:ObjectProperty;
    &emsprdfs:domain :Person;
    &emsprdfs:range :Place .

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优势

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

我们加入支持OWL推理的推理机(reasoner),就能够执行基于本体的推理了。
RDFS同样支持推理,由于缺乏丰富的表达能力,推理能力也不强。

例如,我们用RDFS定义人和动物两个类,另外,定义人是动物的一个子类。
此时推理机能够推断出一个实体若是人,那么它也是动物。

知识图谱

知识图谱是由本体(Ontology)作为Schema层,和RDF数据模型兼容的结构化数据集
本体(Ontology):本体是共享概念模型的明确的形式化规范说明。这个定义体现了本体的四层含义:概念模型、明确、形式化、共享。

  • 概念模型:通过抽象出客观世界中一些现象的相关概念而得到的模型。

  • 明确:所使用地概念及使用这些概念的约束都有明确的定义。

  • 形式化:本体可通过各种形式化语言对其进行描述,最终是计算机可读、可操作的。

  • 共享:本体中体现的是公认的知识,反映的是相关领域中公认的概念集。本体的目标是通过确定该领域内共同认可的词汇,达到对该领域知识的共同理解。

Perez等人利用分类法来组织本体,并归纳出以下5个基本的建模元语:

(1)类或概念:从语义上将,它表示的是对象的集合,其定义一般采用框架结构,包括概念的名称,与其他概念之间的关系的集合,以及用自然语言对概念的描述。

(2)关系:在领域中概念之间的相互作用,形式上定义为n维笛卡尔积的子集。在语义上关系对应于对象元组的集合。

(3)函数:一类特殊的关系,该关系的前n-1个元素可以唯一决定第n个元素。

(4)公理:代表永真断言,如概念乙属于概念甲的范畴。

(5)实例:代表元素,从语义上讲实例表示的就是对象。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值