天天看点

知识图谱从入门到应用——知识图谱的知识表示:符号表示方法

在前面的文章中已经多次提到,知识图谱采用图的方式描述和表达知识,相比于简单图,能建模更加复杂的事物关系,但比起形式化逻辑,又免于复杂的逻辑约束,使得知识的获取过程变得更加容易。但在知识图谱的实际实践中,不同的应用场景会对知识的建模采用不同表达能力的图表示方法。例如有些应用场景仅采用最简单的无向图,通常适合于对建模要求不高,偏于数据挖掘类的应用场景。知识图谱表示应用最多的是有向标记图(Directed Labelled Graph)。最常用的两种有向标记图模型,一种叫属性图(Property Graph),另外一种是RDF图模型,如下图所示:

知识图谱从入门到应用——知识图谱的知识表示:符号表示方法

但有向标记图的表达能力依然是有限的,在很多专业领域,如医学本体构建等,需要更为复杂的关系语义的表示,例如描述对称关系、自反关系、传递关系等,这就需要用到OWL等本体描述语言。本文重点介绍知识图谱领域三种最常用的知识表示方法——属性图、RDF图模型和OWL本体语言。

属性图

属性图是图数据库Neo4J实现的图结构表示模型,在工业界有广泛应用。属性图的优点是表达方式非常灵活,例如,它允许为边增加属性,非常便于表示多元关系。属性图的存储充分利用图的结构进行优化,因而在查询计算方面具有较大优势,关于这一点将在知识图谱的存储文章中做更加具体的介绍。属性图的缺点是缺乏工业标准规范的支持,由于不关注更深层的语义表达,也不支持符号逻辑推理。在属性图的术语中,属性图是由顶点(Vertex)、边(Edge)、标签(Label)、关系类型和属性(Property)组成的有向图。顶点也称为节点(Node),边也称为关系(Relationship)。在属性图中,节点和关系边是最重要的表达要素。节点上包含属性,属性可以以任何键值形式存在。关系边连接节点,每条关系边都有拥有一个方向、一个标签、一个开始节点和一个结束节点。关系边的方向的标签使得属性图具有语义化特征。和节点一样,关系边也可以有属性,即边属性,可以通过在关系边上增加属性给图算法提供有关边的元信息,如创建时间等。此外还可以通过边属性为边增加权重和特性等其他额外语义。

知识图谱从入门到应用——知识图谱的知识表示:符号表示方法

RDF图模型

RDF是国际万维网联盟W3C推动的面向Web的语义数据标准,所以RDF本身的定位首先是数据交换标准规范,而非存储模型。RDF的基本组成单元是三元组,即​

​(s,p,o)​

​​,例如,可以用一条三元组来描述​

​<浙江大学, 位于, 杭州>​

​​。一条三元组代表关于客观世界的逻辑描述或客观事实。多个三元组头尾相互连接,就形成了一个RDF图。本质上,RDF图也是一个有向标记图。RDF还提供了基础的表达构件用于定义类、属性等Schema层的术语。例如,​

​domain​

​​、​

​range​

​​用于定义某个关系的头尾节点类型,​

​subClassOf​

​​和​

​subPropertyOf​

​用于定义类及属性之间的层次关系等。有了RDFS,已经可以实现最简单的符号推理。如下图所示,如果将谷歌定义为一家人工智能公司,同时也知道人工智能公司是高科技公司,就可以推理得出谷歌也是一家高科技公司。这类简单的推理已经可以减轻数据维护的负担,因为很多查询结果可以通过推理间接得出,而不用对所有结果进行全量存储。

知识图谱从入门到应用——知识图谱的知识表示:符号表示方法

OWL本体语言

RDF+RDFS的表达能力是非常有限的。在实际应用中,需要定义更为复杂的概念,刻画更为复杂的概念关系。这就需要用到OWL等本体表达语言。本体(Ontology)原来是一个哲学术语,后来被人工智能的研究人员作为知识表示研究的对象引入计算机领域。本体最常用的逻辑表达语言即描述逻辑(Description Logic)。系统性介绍描述逻辑的内容超出了本书的范围,接下来主要结合国际万维网联盟推动的OWL本体语言标准来介绍相关的基本知识。OWL首先可以被看作RDF Schema的扩展。OWL在RDF的基础上增加了更多的语义表达构件:

  • 通过多个类组合定义更加复杂的类
  • 刻画关系的一对多、多对一、多对多等关系基数(Cardinality)约束
  • 定义常用的全称量词和存在量词
  • 定义互反关系、传递关系、自反关系、函数关系等更加复杂的关系语义等

在这里举例介绍几种典型的OWL表达构件。例如可以使用等价性声明表达构件​

​owl:equivalentClass​

​​、​

​owl:equivalentProperty​

​​和​

​owl:sameIndividualAs​

​​来分别声明两个类、两个属性或两个个体的等价关系。再比如可以声明传递关系,如​

​<exp:ancestor rdf:type owl:TransitiveProperty>​

​​声明了​

​ancestor​

​​是一个传递关系,当知识库中存在​

​<exp:小明exp:ancestor exp:小林>​

​​;​

​<exp:小林exp:ancestor exp:小志>​

​​两条知识时,就可以推理得出​

​<exp:小明exp:ancestor exp:小志>​

​​。类似地,也可以声明互反关系,如​

​<exp:ancestor owl:inverseOf exp:descendant>声​

​​明​

​ancestor​

​​和​

​descendant​

​​是互反的,当知道​

​<exp:小明exp:ancestor exp:小林>​

​​,就可以马上在知识库中新增一条​

​<exp:小林exp:descendant exp:小明>​

​的新知识。

还可以声明某个关系必须满足函数约束,例如声明​

​<exp:hasMother rdf:type owl:FunctionalProperty>​

​​,这样​

​exp:hasMother​

​​就是一个具有函数性的属性,因为每个人只有一个母亲。这将作为约束作用到整个知识库,不允许知识库中出现一个人同时有两个母亲。还可以声明属性的全称限定,例如,​

​owl:allValuesFrom​

​​声明​

​exp:hasMother​

​​在主语属于​

​exp:Person​

​​类的时候,宾语的取值只能来自​

​exp:Women​

​​类。同样地,可以声明属性的存在限定,通过​

​owl:someValuesFrom​

​​声明​

​exp:publishedIn​

​​在主语属于​

​exp:SemanticWebPaper​

​​类的时候,宾语的取值部分来自​

​exp:AAAI​

​类。

OWL拥有众多的表达构件,本文不对它们做完整的介绍。OWL实际上有很多语言家族,不同的语言家族代表不同的表达构件的组合。不同的组合对应不同的推理计算复杂度以及它们所适用的场景。如下图所示,OWL-QL表示查询语言的意思,专为基于大规模的查询设计的子语言;OWL 2 RL在扩展RDFS表达能力的同时,保持了较低的复杂度;OWL 2 EL专为概念术语描述、推理而设计,在生物医疗领域广泛应用,如临床医疗术语本体SNOMED CT等。在后面的文章还将结合推理能力对表达语言进行介绍。

知识图谱从入门到应用——知识图谱的知识表示:符号表示方法

继续阅读