知识表示综述
最后更新于
知识表示是将知识信息存储, 组织, 表达的方法, 使已有的知识关系明确, 易于推理.
知识图谱的表示形式是基于语义网络(Semantic Network)的. 简单来说, 语义网络是由节点和边组成的有向图, 也称为语义网(Semantic Web):
节点: 也称为语义类型. 表示各种概念, 实体, 事务, 状态等
边: 也称为语义关系. 指明所连接的两个结点之间的某种关系
下图是语义网络的一个例子:
语义网虽然清晰明确, 但只能支持简单的网络, 主要的缺点集中在以下几个方面:
没有标准, 节点和边的值完全是用户自由定义的
无法区分概念节点和实体节点. 这点在下面说明
没有标签(label)系统, 无法对节点和边定义schema
RDF(Resource Description Framework), 资源描述框架, 本质是一个数据模型(Data Model), 即表示事物的一种方法, 提供了一个统一的标准, 用于描述实体/资源.
RDF形式也是由节点和边组成, 使用三元组来表示关系, 即(节点, 边, 节点), 也称为一条语句, 或一条知识. 具体来是, 这个三元组是SPO三元组, 即Subject(主体), Predicate(谓语), Object(客体), 如下图所示.
节点表示实体/属性, 边表示实体与实体, 实体与属性之间的关系. 关于RDF的例子和详细内容参考为什么需要知识图谱?什么是知识图谱?——KG的前世今生.
实体是组成知识图谱的关键之一, 每个实体在图中都是唯一的, 因此我们需要一种方法, 来对实体节点进行唯一的表示. 以下图中与罗纳尔多相关的知识为例, 对于罗纳尔多这个实体, 使用www.kg.com/person/1
来表示. 采用URL/URI的形式.
此外对于连接实体或连接实体与属性之间的关系, 经过抽象后, 也可以使用这种形式来表示. 例如, 罗纳尔多这个实体(www.kg.com/person/1
)的中文名称为罗纳尔多
, 将中文名称这个关系进行抽象, 我们可以将这个关系表示为http:// www.kg.com/ontology/chineseName
. 对于其他的实体, 如果有中文名称, 则它们之间的连接关系都可以用这个唯一关系来表示.
上面所述的这种形式, 无论是节点还是边, 我们都称为一个IRI(International Resource Identifiers), 每个IRI唯一定义了一个实体或关系.
而对于属性值, 更多的会使用纯文本来描述. 因此, RDF图中的所有节点和边, 一般来说, 一共有两种类型: IRI和Literal(纯文本). 三元组中, 每部分的类型约束为:
Subject: IRI
Predicate: IRI
Object: IRI或Literal
RDF数据集的存储方式, 或者说序列化方法有很多种, 常用的有XML, N-Triples, Turtle等. Turtle可以说是RDF序列化最常用的一种方式了. 使用Turtle格式, 下图代表的知识图谱可以用下面的内容表示.
也可以对同一个实体统一表示, 形式更紧凑:
这样, RDF模型克服了语义网络没有标准的缺点. 但仍然无法区分类和实体(对象), 因此缺乏抽象能力, 无法对同一个类别的事物进行定义和描述.
RDFS(RDF Schema)在RDF的基础上提供了概念的定义方式, 以及哪些属性可以应用到哪些对象上. 换句话说, RDFS为RDF模型提供了一个基本的类型系统.
类比于结构性数据库, 可以把数据库中的每一张表认为是一个类(Class), 表中的每一行数据都是该类的一个对象/实例, 而表中的列名代表着这个类所有的关系, 其中的每个数据表示一个实例的一个属性值. 这样就有了抽象能力.
RDFS的本质上是一些预定义词汇构成的集合, 对RDF进行类的定义和属性的定义. 在表现形式上, 就是RDF, 其序列化方法仍然与RDF通用.
这里所说的预定义词汇, 是RDFS模型预先定义好的一些词汇, 如:
rdf:type. 隶属于关系
rdf:Property. 表示正在定义一个属性
rdfs:Class. 用于定义类
rdfs:domain. 用于表示该属性属于哪个类别
rdfs:range. 用于描述该属性的取值类型
rdfs:subClassOf. 用于描述该类的父类, 比如, 可以定义一个运动员类, 声明该类是人的子类
rdfs:subProperty. 用于描述该属性的父属性, 比如, 可以定义一个名称属性, 声明中文名称和全名是名称的子类
一个完整的例子如下:
在定义类之后, 知识图谱就可以分为两个层面了: 模式层和数据层. 如下图:
其中Vocabulary
是定义的类和属性, 即模式层. 而Data
则是数据层, 代表着具体的实例.
OWL(Ontology Web Language)是RDFS的一个扩展, 其添加了额外的预定义词汇, 主要提供高效的自动推理能力.
owl:Class: 定义类
owl:DatatypeProperty: 定义了数据属性, 即这个属性关系连接的是一个数据, 如字符串
owl:ObjectProperty: 定义了对象属性, 这个属性连接的是另一个类/实体
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的子女
而使用一下的几个词汇, 是的知识图谱具有了融合能力
owl:equivalentClass: 表示某个类和另一个类是相同的
owl:equivalentProperty: 表示某个属性和另一个属性是相同的
owl:sameAs: 表示两个实体是同一个实体