超级属性的链接

时间:2016-05-06 12:40:59

标签: owl protege dlquery

想象一下,给出以下两种关系:
一个(X,Y)
B(Y,Z)
我们可以得出:
C(X,Z)
然后可以在Protégé中通过为c属性添加SuperProperty Of(Chain)来明确表达,如下所示:
a o b SubPropertyOf c

表达了这一点,想象一下我们只知道:
一个(X,Y)
C(X,Z)
我们怎样才能明确表达我们因此也知道:
B(Y,Z)
这将再次与SuperProperty Of(Chain),但对于b属性?

我首先想过尝试:
a o inverse(c)SubPropertyOf b

这位Protégé不喜欢,说有一个圆圈。现在我很困惑。

2 个答案:

答案 0 :(得分:1)

b(y,z)的正确表达式为inverse(a) o c SubPropertyOf b,因为您要表示从yz的属性路径对应b。如果你只有这个公理,这应该给你必要的推论。但是,你不能将它与第一个公理a o b SubPropertyOf c一起使用。在这种情况下,您可以在带有直接属性的公理中通过c定义b,并使用带有反向属性的公理中的b通过c定义c。因此,您必须知道c才能定义def callback(source=source): data = source.get('data') f = cb_obj.get('value') data['x'] = [0.9, 0.8, 0,7] data['y'] = [1, 2, 3 ] source.trigger('change') 。在OWL 2 DL中不允许使用这种循环,这就是为什么Protege会告诉你有关循环定义的原因。总而言之,你只能拥有其中一个公理,但不能同时拥有这两个公理。

答案 1 :(得分:0)

知道a和c不需要b。这可以很容易地与经典的例子,叔叔的定义:

:hasUncle
  rdf:type owl:ObjectProperty ;
  owl:propertyChainAxiom (
      :hasParent
      :hasBrother
    ) .

然后,如果:David :hasParent :Mary:Mary :hasBrother :John,DL推理器确实会推断出:David :hasUncle :John。但如果我们断言:David :hasUncle :John:David :hasParent :Mary,那么这不足以推断出:Mary :hasBrother :John。事实上,约翰可以成为玛丽另一位父母的兄弟。

请注意,定义声明表明属性链是:hasUncle的subProperty而不是等效属性。因此,即使您将:hasParent断言为功能,推理者仍然不会从 a c 推断 b 。但是,OWL2不允许具有等效的对象属性组合。

应谨慎应用财产链。例如,在S1ºS2º3......ºSn⊑R中,R只能位于表达式左侧的第一个或最后一个位置。否则它将无法判定。这是常规RBoxes的限制之一。如果应用于常规RBox,属性链或更正式的“一般角色包含”只能是可判定的。