开放世界语义对本体构建的影响

From orangebench(刘升平)

看了些关于用OWL构建本体的讲义和教程,其中都会提到OWL的逻辑基础描述逻辑中 的推理是基于开放世界假设(Open World Assumption)的,从而在构建本体时要特别注意这点。因此,我小小的总结一下,但并没有深入去研究开放世界语义,故不能保证正确性,欢迎大家讨 论。

当我们对现实世界的问题做形式化描述时,不可避免地掌握的信息是不完全的,例如,我们不知道Peter是否是个Student,但 这个信息的确又是很有用的。一种常用的做法是采用封闭世界假设(Closed World Assumption, CWA), 即如果我们在知识库中推不出来P或P的否定,就把P的否定加入知识库。有两种情况, CWA很有用. 一是可以当假设知识库中的知识是完全的时候. 例如, 在数据库中, 如果学生表中没有Peter, 则认为Peter不是学生. 二是当知道知识库的知识是不完全的, 如不足于回答一些问题, 但我们必须在不完全知识的情况下做出决定, 这时候CWA就有用了. 其实, 我们人思考问题也常常是这样的, 例如, [@todo]

<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:12.0pt; mso-bidi-font-size:10.0pt; font-family:"Times New Roman","serif"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-size:10.0pt; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt; mso-ascii-font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-hansi-font-family:"Times New Roman"; mso-font-kerning:0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} --> 我们人思考问题也常常是基于 CWA 的;比如我们定义了“ eatInsect ”的定义域为“ Bird , “Bear Grylls” 的类型是“ Person ”,然而描述 “Bear Grylls” 的时候也出现“ eatInsect ”属性;这时我们的第一反应是规则有错误,然而 RDF 会认为规则和描述没有错误,它会推出“ Person ”是“ Bird” 的子类,因为我们没有定义“ Person ”不能是“ Bird” 的子类。by 非烟飞雾

 

对不完全知识的处理的另外一种方法就是采用开放世界假设(Open World Assumption, OWA), 它和CWA相反, 对推不出来的命题就很诚实地当作不知道这个命题的正确与否 , 这样的后果就是知识库中能推导出来的结论大大减少.

但 在语义Web环境下, 因为Web的开放性, 相关的知识很可能分布在Web上不同的场所, 因此在语义Web上推理, 用CWA是很不恰当的. 例如, 如果在一个知识库中只说了hasFriend(Peter, Tom), 如果采用CWA, 就会得到结论: Peter只有一个朋友. 这当然是不合理的, 因为很可能在别的地方说了Peter还有其他的朋友. 所以, 如果要在语义Web中聚集不同来源的知识, 应该采用OWA. (有一种中庸之道: 局部封闭世界(Local Closed World), 这里不多说). 描述逻辑中的推理刚好是采用OWA的, 所以它的确适合作为语义Web的逻辑基础.

OWA对本体构造有很大的影响, 因为OWA 认为, 没有显式说明的信息就是未知, 因此,我们在构建本体的时候, 要记住一个原则: “把你知道的全说出来”!

现在,我们看看怎样在OWL本体中说出那些你实际上知道, 但容易忘了说的东西.

1) 唯一名假设(Unique Name Assumption, UNA): owl:AllDifferent
逻辑中一般采用唯一名假设,即名字不同的两个实例是不同的,而OWL由于Web的开放性,很有可能不同的人对同一个实例给出的URIref不同,因此不能 采用唯一名假设。这也是要有owl:AllDifferent的原因。因为在OWL中,我们要显式地说明哪些URIref代表的资源是不同的,如果用 owl:differentFrom,要表示很多个URIref两两不同,非常麻烦,因此,就有了owl:AllDifferent。

注意: RACER 支持唯一名假设. 这点使得它不是很适合做SW上的推理. 当然, 新版本也许会改进.
2) 分离和覆盖: owl:disjointWith

在 定义类的时候, 可能定义B和C都是A的子类, 这时候可能会忘了说明B和C是Disjoint的, 这个信息对公理中用了否定比较有用, 因为这可以推出, B的实例肯定不属于C, 另外, 还一个容易忘的是覆盖公理(covering axiom).,即说明B和C的合取 覆盖了A(即A是B和C的并的子集), 因为这可以进一步推出: 如果x是A的实例, 且不是B的实例, 则x是C的实例.
最牛的覆盖定理当然是说B是C的否定, 即B和C的合取覆盖了整个论域, 这样, 一个实例x不属于B则属于C.

3) 实例识别:owl:maxCardinality , owl:allvaluesFrom

OWA 还有一个很坏的影响是对有些类, 你永远没法判定这个实例是否属于这个类. 例如, 我们定义类D是具有最多2个孩子的人, 现在有个实例y, 知识库中说了y有两个孩子, 但我们能推出y是属于类D的实例吗? 不能! 因为采用OWA, 推理引擎会认为也许其他地方还会说y有第3个孩子, 所以推不出y至多只有2个孩子. 类似的是OWL的属性限制allvaluesFrom, 因为你也无法保证 这个”all”能成立.

结论是: 如果你的应用中需要判定实例属于某个类, 谨慎使用owl:maxCardinality和owl:allvaluesFrom.

4) 封闭公理
OWA会导致一些麻烦, 原因是我们没有把”我们知道的全说出来”. 解决方法就是采用封闭公理(closure axioms), 把路子堵死. 下面有两种常用的封闭公理.

a).用allvaluesFrom 封闭 somevaluesFrom

先举个例子, 假如类A定义为所有孩子都是学生的人, 即 A= restriction(allvaluesFrom hasChild Student); 现在已知类B定义为有孩子是高中生, 有孩子是大学生, 即:

Class(B partial
Restriction(somevaluesFrom hasChild HighSchool ) )
Class(B partial
Restriction(somevaluesFrom hasChild College ) )

这时,我们能推出B是A的子类吗?

按照OWA, 答案是不能, 因为你没说 B的孩子都是学生, 你只说他的孩子有高中生,有大学生. 所以, 为了让B是A的子类, 你要把事情说死, 即加一个封闭公理:

Class(B partial
Restriction(allvaluesFrom hasChild unionOf(College HighSchool) ) )

即说明 B 的孩子都是高中生或大学生, 再加上高中生和大学生都是学生的子类, 我们才可以推出 B 是 A 的子类.

总结:
“A closure axiom on a property consists of a universal restriction that acts along the property to say that it can only be filled by the specified fillers. The restriction has a filler that is the union of the fillers that occur in the existential restrictions for the property”.

b)用cardinality =n 封闭 allvaluesFrom

上面提到如果用allvaluesFrom定义一个类, 则永远无法判定一个实例是否属于这个类, 封闭的方法就是加上一个基数限制. 如, 定义类A是有3个孩子且所有孩子都是博士的人,这样如果实例a有三个孩子b,c,d 且b,c,d 都不是相同的人(AllDifferent), 且b,c,d都是博士, 这样就可以推出a是属于类A了.

参考
[1] Ian Horrocks的关于构建本体的课程讲义
[2] DL handbook chapter 2: P26 2.2.4.4 Closed- vs. open-world semantics
[3] protégé owl tutorial http://www.co-ode.org/resources/tutorials/ProtegeOWLTutorial.pdf

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值