知识表示

本文参考:王昊奋《知识图谱》

 

目录

一、早期知识表示

   1、 一阶谓词逻辑(First-Order Logic)

    Horn逻辑:一阶谓词逻辑的子集

    描述逻辑:一阶谓词逻辑的可判定子集

    2、产生式系统

   3、 框架

  4、语义网络(Semantic Network)

  基于语义网的知识表示框架

RDF模型:

RDF空白结点:

RDF分布式的定义与合并知识:

带标注RDF(annotated RDF):

RDF Schema(RDFS)

5、OWL与OWL2

OWL与RDF关系:

   ​OWL2

OWL2 QL:

OWL2 EL :

OWL 2 RL 表达能力:                               ​

6、RDF的查询语言:SPARQL

7、其他知识表示方法:Json-LD、RDFa、HTML5 MicroData

Json-LD(JavaScript Object Notation for Linked Data)

RDFa(Resource Description Framework in attributes)

HTML5 Microdata

8、RDF+SPARQL对比ER+SQL

RDF语义模型——关系显示定义:

关系模型——关系隐式声明:

二、典型的知识库项目的知识表示

三、基于Protege的知识建模


早期知识表示

   1、 一阶谓词逻辑(First-Order Logic)

  •     Horn逻辑:一阶谓词逻辑的子集

        p(t1,t2....,tn)

        p:谓词,n:目(项),ti:变量或常量

       eg: has_child(Helen,Jack)

  •     描述逻辑:一阶谓词逻辑的可判定子集

O:=

T即Tbox,包含内涵知识,描述概念的一般性质。因为概念直接存在包含关系,所以Tbox知识形成类似格的结构。

TBox语言:引入概念以及关系的名称

A即Abox,包含外延知识(断言知识),描述论域中的特定个体。

ABox语言:概念断言:表示一个对象是否属于某个概念;Mother(Helen),Person(Jack)

                   关系断言:表示两个对象是否满足一定的关系;has_child(Helen,Jack)

    2、产生式系统


    产生式模型: 

                                  知识表示_第1张图片

    其中,P是产生式的前提,Q是一组结论或操作,CF (Certainty Factor)为确定性因子,也称置信度。
    谓词逻辑中的规则与产生式的基本形式相似,事实上,蕴涵式只是产生式的一种特殊情况。

理由如下:
        谓词逻辑规则只能表示精确知识,其值非“真”即“假”,而产生式不仅可以表示精确知识,而且还可以表示不精确知识;即用产生式表示知识的系统中,“事实”与产生式的“前提”中所规定的条件进行匹配时,可以是“精确匹配”,也可以是基于相似度的“不精确匹配”,只要相似度落入某个预先设定的范围内,即可认为匹配。但对谓词逻辑的规则而言,其匹配必须是精确的。

eg: IF 本微生物的染色斑是革兰氏阴性 

           本微生物的形状呈杆状 病人是中间宿主

      THEN  该微生物是绿脓杆菌,置信度CF=0.6

   3、 框架


    框架基本组成:
                             知识表示_第2张图片

    框架:是一种描述对象 (事物、事件或概念等)属性的数据结构,在框架理论中,框架是知识表示的基本单位。
    一个框架由若干个“槽” (Slot)结构组成,每个槽又可分为若干个“侧面”  。

  •   一个槽:用于描述所论对象某一方面的属性;
  •   一个侧面:用于描述相应属性的一个方面。
  •     槽和侧面所具有的属性值分别称为槽值和侧面值。

    框架的示例:
           知识表示_第3张图片
        知识表示_第4张图片

  4、语义网络(Semantic Network)

  •     语义网络中的节点:表示各种事物、概念、情况、属性、动作、状态等,每个节点可以带有若干属性,一般用框架或元组表示。此外,节点还可以是一个语义子网络,形成一个多层次的嵌套结构。
  •     语义网络中的弧:表示各种语义联系,指明它所连接的节点间某种语义关系。
  •     节点和弧都必须带有标识,以便区分各种不同对象以及对象间各种不同的语义联系。
  •      最简单的语义网络是一个三元组:(节点1,弧,节点2)

  基于语义网的知识表示框架


  (1)RDF与RDFS
      RDF(Resource Description Framework):

  • R可以代表页面、图片、视频等任何具有URI(Universal Resource Identifiers)的标识符
  • D代表属性、特征和资源之间的关系
  • F代表模型、语言和这些描述的语法

RDF模型:


RDF中知识以三元组(triple)的形式出现,每一知识可以被分解为:(subject(主),predicate(谓),object(宾))

    如:(合肥,坐落于,安徽)

RDF同时也是一种用来连接资源的描述的图模型,三元组可以表述为:(vertex,edge,vertex),同时在RDF中资源和属性都可以被URI唯一标识。

      CCF ADL邀请王昊奋作为讲者,演讲主题为知识图谱。

      两个三元组为:(CCF ADL, speaker, Haofen),(CCF ADL, theme, KG)

   这两个三元组可以使用表示为如下图模型:
    知识表示_第5张图片
    我们还可以将命名空间定义为前缀,如定义为ex-schema来简化图形,则得到如下图:
           知识表示_第6张图片

RDF中的属性值同时也可以是一个文字,如字符串/数值(它们不是一个Resource)。

    如将上述例子的三元组改为(CCF ADL, theme, ‘KG’),那么这里的KG将不是一个资源或属性,而是一个属性的值,此时图模型表示如下(注意图中的方框):

                        知识表示_第7张图片

RDF中的属性的文字值同时可以使一个XML datatype类型。

RDF空白结点:


RDF允许存在匿名的资源,它可以作为连接其他非匿名资源的桥梁,此时RDF中会出现空白结点,因为这个资源不被URI表示,所以可以表示为 _:xyz。

    例子:Haofen是某一次KG讲座的讲者。这表示意味着CCF ADL讲座至少有一位讲者,可以表示为如下2跳相连图:
    知识表示_第8张图片
    上述例子说明:一个三元组的缺失并不是什么大事情。

RDF分布式的定义与合并知识:


我们可以分布式定义知识:


知识表示_第9张图片
接着我们可以将分布式的知识进行合并(逻辑角度):

通过知识融合知道不同URI中haofen是同一个人。
知识表示_第10张图片

带标注RDF(annotated RDF):


使用带标注RDF(s),来扩展RDF用来表示更多的信息,如时间、不确定性、空间、信任等。

    例子: YAGO2,使用annotated RDF表示的知识库。

语法形式为:(s,p,o):λ
其中λ是一个标志,可以是上述的扩展信息。

    eg:(特朗普,就职,总统):2017年1月

RDF Schema(RDFS)

RDFS在RDF基础上提供了一个术语、概念等的定义方式,以及哪些属性可以应用到哪些对象上。换句话说,RDFS为RDF模型提供了一个基本的类型系统。

    例子:三元组表示用户自定义的元数据Author是元数据Creator的子类。


 
.

RDFS通过这样的方式来描述不同词汇集的元数据之间的关系,为网络上统一格式的元数据交换提供便利。
RDF定义了如下几种词汇:

  •     Class
  •     subClass
  •     type
  •     Property
  •     subPropertyOf
  •     Domain
  •     Range

      知识表示_第11张图片
     图中,data层是对schema层的实例化,是由数据驱动的。

基于RDFS的推理:
在上面的图中,我们可以在data+schema之后进行推理,如上下位的推理(如subClass),类别的判断等。
给出一个推理的示例:
知识表示_第12张图片

RDF(S)的缺陷
通过RDF(S)可以表示一些简单的语义,但在更复杂的场景下,RDF(S)语义表达能力显得太弱,还缺少诸多常用的特征。

    (1)RDF(S)表达能力上的缺陷

  •         对于局部值域的属性定义:RDF(S)中通过rdfs:range定义了属性的值域,该值域是全局性的,无法说明该属性应用于某些具体的类时具有的特殊值域限制。
  •         类、属性、个体的等价性:RDF(S)中无法声明两个或多个类、属性和个体是等价还是不等价 。
  •         不相交类的定义:在RDF(S)中只能声明子类关系,如男人和女人都是人的子类,但无法声明这两个类是不相交的

   (2) RDF(S)的缺陷

  •     基数约束:即对某属性值可能或必须的取值范围进行约束,如说明一个人有双亲(包括两个人),一门课至少有一名教师等。
  •         关于属性特性的描述:即声明属性的某些特性,如传递性、函数性、对称性,以及声明一个属性是另一个属性的逆属性等。

知识表示_第13张图片

     知识表示_第14张图片

5、OWL与OWL2

由于RDF(S)的缺陷,W3C提出了OWL,作为在语义网上表示本体的推荐语言。
OWL (Web Ontology Language)包含三个子语言:OWL Lite、OWL DL、WOL Full
知识表示_第15张图片

关于OWL子语言的选择:

  •     选择OWL Lite还是OWL DL主要取决于用户需要整个语言在多大程度上给出约束的可表达性;
  •     选择OWL DL还是OWL Full主要取决于用户在多大程度上需要RDF的元模型机制 (如定义类型的类型以及为类型赋予属性);
  •     在使用OWL Full而不是OWL DL时,推理的支持可能不能工作,因为目前还没有完全的支持OWL Full的系统实现。

OWL与RDF关系:

  •     OWL Full可以看成是RDF的扩展;
  •     OWL Lite和OWL Full可以看成是一个约束化的RDF的扩展;
  •     所有的OWL文档 (Lite,DL,Full)都是一个RDF文档;
  •     所有的RDF文档都是一个OWL Full文档;
  •     只有一些RDF文档是一个合法的OWL Lite和OWL DL文档。

OWL词汇:

知识表示_第16张图片

知识表示_第17张图片

也就是说,小明是小林的祖先,小林是小志的祖先,则根据传递性得出小明是小志的祖先

知识表示_第18张图片

    知识表示_第19张图片

 知识表示_第20张图片

  知识表示_第21张图片

    知识表示_第22张图片

   知识表示_第23张图片
OWL2

OWL2包含三大子语言:OWL 2 RL,OWL 2 QL,OWL 2 EL,家族树如下:
知识表示_第24张图片

OWL2 QL:


QL代表查询语言的意思,用于本体的查询;OWL2 QL是基于描述逻辑语言DL-Lite定义
其表达能力如下:
知识表示_第25张图片

    通过OWL 2 QL的语言限制,基于QL的本体查询可以优化到多项式对数时间复杂度

OWL2 EL :


QWL2 EL是为概念术语描述,推理而设计的

    QWL2 EL在医疗领域广泛应用,如临床医疗术语本体SNOMED CT

其表达能力如下:
知识表示_第26张图片

OWL2 RL :工作的目的是将OWL词汇引入RDFS,使RDFS在表达能力上丰富起来

  •     OWL 2 RL在扩展RDFS表达能力的同时,保持了较低的复杂度(PTime级别);
  •     OWL 2 RL在RDFS的基础上引入属性的特殊特性 (函数性,互反性,对称性);允许声明等价性;允许属性的局部约束;
  •     OWL 2 RL是专为高效推理设计的本体语言,OWL 2 RL推理是针对于实例数据的推理。

OWL 2 RL 表达能力:
                               知识表示_第27张图片

RDF的查询语言:SPARQL

https://www.w3.org/TR/rdf-sparql-query/

SPARQL可以针对不同的数据集撰写复杂的连接,它支持主流的图数据库。

SPARQL查询的基本构成:

  •     变量(RDF中的资源)以“?”或者"$"来表示;
  •     三元组模板 (triple pattern), 在WHERE子句中列示关联的三元组模板;之所以称之为模板,因为三元组中允许变量;
  •     SELECT子句中指示要查询的目标变量。

eg:查询所有选修CS328课程的学生以及他们的邮箱,OPTIONAL关键字指示如果没有邮箱,那么依然返回学生姓名,邮箱处空缺(PREFIX部分进行命名空间的声明,使得下面查询的书写更为简洁。)

PREFIX exp:http://www.example.org/

       SELECT ?student  ?email WHERE{

      ?student exp:studies exp:CS328.

OPTIONAL{

   ?student  foaf:mbox  ?email.

}

}

eg:查询学生姓名,选修课程,以及他们的年龄;如果有年龄,那么年龄必须大于25岁。(FILTER条件过滤)

SELECT ?module ?name ?age WHERE{

   ?student exp:studies ?module.

   ?student foaf:name   ?name.

OPTIONAL{

?student exp:age  ?age.

FILTER(?age > 25)

}

}

eg:查询选修课程CS328或CS909的学生姓名以及邮件(这里邮件必须是返回的,如果没有邮件值,就不返回这条记录。)

SELECT ?student  ?email WHERE{

  ?student foaf:mbox ?email.

  { ?student exp:studies exp:CS328}

UNION

  { ?student exp:studies exp:CS909}

}

eg 查询选修课程CS909的学生姓名以及邮件和住址。(FROM表示查询可以从其他的知识库,如果是本知识库则不需要)

SELECT ?student ?email ?home

FROM

WHERE{

 ?student exp:studies exp:CS909.

OPTIONAL{

   ?student  foaf:mbox ?email.

  ?student foaf:homepage ?home.

}

}

 

 SPARQL查询语言与SQL很相似,定义了OPTIONAL、FILTER、UNION、FROM等关键字,同时它支持嵌套查询,基于规则的查询,详细见Apache Jena - SPARQL Tutorial和SPARQL Query Language for RDF
知识表示_第28张图片

由于RDF查询过于繁琐,引进了RDFS:

知识表示_第29张图片

其他知识表示方法:Json-LD、RDFa、HTML5 MicroData

Json-LD(JavaScript Object Notation for Linked Data)

JSON-LD是一种基于JSON表示和传输互联数据 (Linked Data)的方法。JSON-LD描述了如何通过JSON表示有向图,以及如何在一个文档中混合表示互联数据及非互联数据。
JSON-LD的语法和JSON兼容。

// 一个json文本
{
    "name": "Manu Sporny",
    "homepage": "http://manu.sporny.org/",
    "image": "http://manu.sporny.org/images/manu.PNG"
}

    //一个json-ld文本
{
    "http://schema.org/name": "Manu Sporny",
    "http://schema.org/url": { "@id":"http://manu.sporny.org/" },
    "http://schema.org/image": { "@id":"http://manu.sporny.org/images/manu.PNG" }
}

 json文本人们可以很容易理解,但是机器不能理解,因此JSON-LD通过引入规范的术语表示,比如统一化表示“name”,“homepage”和“image”的URI,使得数据交换和机器理解成为基础。
 

RDFa(Resource Description Framework in attributes)

RDFa 是网页标记语言,它扩充了XHTML的几个属性,网页制作者可以利用这些属性在网页中添加可供机器读取的资源,与RDF的对应关系使得RDFa可以将RDF的三元组嵌入在XHTML文档中,它也使得符合标准的使用端可以从RDFa文件中提取出这些RDF三元组来。

RDFa工作原理:
通过引入命名空间的方法在已有的标签中加入RDFa相应的属性来使得支持RDFa技术的浏览器或者搜索引擎可以解析到,从而达到优化的目的。

about="http://www.example.com/books/wikinomics">
    Wikinomics
    Mr right
    2006-09-02

      上面的代码示例中用到了RDFa属性中的about属性property属性,这段代码示例说明了一篇文章,然后描述了和这篇文章相关的信息,比如说标题,创建者和创建日期,而这些属性就可以使得支持RDFa的机器识别。

HTML5 Microdata

  •     Microdata微数据,是在网页标记标记语言嵌入机器可读的属性数据
  •     微数据使用可以来自自定义词汇表、带作用域的键/值对给DOM做标记
  •     用户可以自定义微数据词汇表,在自己的网页中嵌入自定义的属性
  •     微数据是给那些已经在页面上可见的数据施加额外的语义。当HTML的
  •     词汇不够用时,使用微数据可以取得较好的效果

知识表示_第30张图片

RDF+SPARQL对比ER+SQL

假设我们给定信息:腾讯坐落于深圳,深圳坐落于中国;接着给定问题,腾讯坐落于那个国家。此时我们分别用RDF模型与ER模型来表示 :


RDF语义模型——关系显示定义:

        知识表示_第31张图片
在语义模型中,我们可以通过两个三元组推理得出腾讯在中国。
 

关系模型——关系隐式声明:

联合Company、City、Company_City三张表来查询:
          知识表示_第32张图片
在ER模型中,我们需要存放三张表,接着通过SQL连接三张表进行查询,这里需要对问题进行语义的理解,对语义的理解是一个较难做到的事情。
这样看RDF语义模型好像与ER模型相比没有什么优势,但是当数据发生变更了的时候,如修改上述给出的信息为:深圳位于广东,广东位于中国,此时语义模型仍然可以根据三元组的推理就可以得出答案,同时并不需要修改其他的任何东西。
               知识表示_第33张图片
而此时,ER模型需要添加一张表,同时还需要修改原来的SQL语句。
                         知识表示_第34张图片

典型的知识库项目的知识表示

1、DBpedia抽取知识示例:

http://dbpedia.org/page/United_States

知识表示_第35张图片

知识表示_第36张图片

知识表示_第37张图片

多元关系的表示:

知识表示_第38张图片

基于Protege的知识建模

protege的使用--知识图谱示例:

知识表示_第39张图片

下面我们用protege对上面的知识图谱建模

1、创建类

知识表示_第40张图片

知识表示_第41张图片

依次类推:男人是人物的子类,禅师是人物的子类,地点与人物互斥,学校和寺庙互斥。

2、创建对象属性(关系、谓词)

知识表示_第42张图片

知识表示_第43张图片

依次:

  Domains Ranges
开山之祖 地点  人物
曾住 人物 地点
父亲 人物 男人
相识 人物 人物

3、数据属性

知识表示_第44张图片

知识表示_第45张图片

同理法号的Domains为禅师,Ranges为xsd:string

以上是Schema层,下面开始设计实例层

4、实例

知识表示_第46张图片

知识表示_第47张图片

依次:

  Types Object property assertions Data property assertions
晋朝泽心寺 寺庙 null null
苏轼 人物 相识 佛印禅师 别名 苏东坡
裴休 人物 null null
裴文德 人物 父亲 裴休 法号 法海
镇江金山寺 寺庙 开山之祖 裴文德 前身 晋朝泽心寺

至此建模工作全部完成,让我们来看看这个模型可以推理出什么。

知识表示_第48张图片

点击Start reasoner

知识表示_第49张图片

我们看到裴休的类型中多了一个”男人“,原因是:{父亲 Range 男人}, {裴文德 父亲 男人}

以下都是推理出的内容:

知识表示_第50张图片

知识表示_第51张图片

知识表示_第52张图片

你可能感兴趣的:(知识图谱)