• OWL解惑 :AllValuesFrom与Range的区别 关于Domain和Range


    AllValuesFrom这样的约束是OWL语言新加的,也是OWL比RDF表达能力更加的证据。初学者,特别是对规范还不熟悉的情况下直接用Protege做东西的朋友们常常会遇到这样的问题:

    • only(AllValuesFrom)跟some(SomeValuesFrom)有什么区别
    • only, some的作用跟domain,range有什么区别?

    先说第一个问题,举个例子:有个类tree,有个类leaves,有个属性has,tree has some leaves这样的句子或者说tree has SomeValuesFrom leaves,它的意思其实是很直观的:如果有一样东西(individual)是tree,对于has这个属性而言,那么它至少有一片叶子的实例(individual)(>=1)。由于开放世界的假设,这个陈述并不暗示着它只能有叶子(而不能有其他的)。
    但如果是这样的陈述: tree has only(AllValuesFrom) leaves的意思是指如果有一样东西(individual),它是tree,它只能has leaves,不能has其他的,比如根,茎什么的,都是不合法的。
    AllValuesFrom还隐含着一点小trick,即如果has的leaves是空,对它来说也是合法的。这点可能有些不好理解,稍做下解释:比如这样一个陈述:P的孩子只能是女孩,那么如果p有一个男孩子,自然与之前的陈述违背,但是p如果没有孩子,逻辑上并没有违背前面的陈述,因此是合法的(没有违背就是合法的是owl的世界观之一)。

    接下来是第二个问题。AllValuesFrom与Range的区别。其实这两者表示的逻辑含义有很多相似之处。都可以表达某属性的客体取值能且只能取某个范围。两者很重要的区别在于作用域不同,并且AllValuesFrom看起来意义更加的清晰。
    Range的作用范围是全局的,domain:people peroperty:hasChild range: Child,表示hasChild这个属性,不管在哪,都只能有客体是Child,而AllValuesFrom的表达是local的,people hasChild AllValuesFrom Child仅对people这样一个主体有效,同样可以定义monkey hasChild AllValuesFrom BabyMonkey这样的陈述。当然,我们可以通过创建谓词hasChild的子谓词来使得range达到与AllValuesFrom一样的表达效果,但是太不直观。

    domain跟range是来自于rdf的语法,owl也继承了下来。在owl文件中使用domain和range是完全符合规范的。

    domain和range,直观的理解就是定义域和值域,这样的理解也勉勉强强可以说是正确的。比如有一个谓词(property): hasBeautifulHair,我们可以定义它的domain是PEOPLE,值域是HAIR。这样的定义跟我们的常识中对于定义域和值域的理解是一致的,不必多说。

    在如上的定义下,我们如果加入了以下这样的声明:ASmallDog hasBeautifulHair Bluehair,其中,ASmallDog是类DOG的一个实例,Bulehair是HAIR的一个实例。如果从日常的观点,或者说从熟识的数学的角度理解,这样的陈述是的,也就是说它违背了之前定义的公理,即hasBeautifulHair的定义域是PEOPLE,而不是DOG。但事实上,从RDF或者OWL的观点看来,这个陈述的真假是不知道的,它与之前的公理并没有发生冲突。

    看到这里,就会有些疑问了,为什么会没有冲突?如果没有冲突,那么domain跟range的约束就根本没有意义,会什么还要加上呢?下面对此问题的解释是一些我自己的理解,正确与否尚待思考。:)

    解释:为什么没有冲突?将hasBeautifulHair的domain(定义域)和range(值域)定义成PEOPLE和HAIR,从rdf的角度看来,这只是它(本体,知识库)增加了一条关于hasBeautifulHair的知识,而不是增加了一条约束。因为我们有个前提:OWA(Open Word Assumption,开放世界假设):不能确定的陈述并不认为是假的。只是指明了hasBeautifulHair的定义域是PEOPLE,就不能认为其他的取值为假,除非显式的说明。就像一个小孩学到了一条知识:猫会叫。对他来说,狗能叫这样的陈述,他是不知道这句话是对的还是错的。如果将rdf想象中这样一个小孩,对这点的理解会容易得多。

    那为什么还要加上约束呢?正如前面的分析,对这个知识库或者本体来说,这是一条关于它的知识,因此是有必要的。在实践中,这也是有意义的。因为,它可以利用这条知识来进行推理。还是举刚才那个小孩的例子,小孩学到了一条知识:猫会叫。如果这个小孩某天见到一个没见过的动物(可能是狗,可能是猫,可能是其他…)对着他叫,他根据他现有的知识,他会认为(infer)这个动物很有可能是。显然,我们可以认为这样的推理是合乎逻辑的。随着知识的增多,我们的推理可以更加准确(比如,知道猫的叫声,狗的叫声等等)。pellet等推理机支持这种类型的推理。这也是domain和range这样的语法存在的意义。增加知识,有益推理

    http://blog.csdn.net/lqk1985/archive/2008/11/27/3391548.aspx

  • 相关阅读:
    jenkins配置QQ邮箱自动发送RF测试构建结果通知邮件
    扩展RF,实现失败用例自动再执行
    python-函数-非固定参数
    robot framework 中对于有滚动条的页面中元素的处理
    selenium(python)下定位单个元素的常用方法
    selenium(python)close与quit的区别
    Robot FrameWork UI自动化脚本稳定性与原生关键字
    深copy和浅copy(python)
    尚硅谷MySQL高级_笔记(2018年10月5日22:55:39)
    云知梦css学习笔记(2018年4月1日16:18:17)
  • 原文地址:https://www.cnblogs.com/bnuvincent/p/1637731.html
Copyright © 2020-2023  润新知