3

想象一下,给定以下两个关系:
a(x,y)
b(y,z)
我们可以得出:
c(x,z)
然后可以通过为 c 添加 SuperProperty Of (Chain) 在 Protégé 中明确表示像这样的属性:
aob SubPropertyOf c

有了这个表达,假设我们只知道:
a(x,y)
c(x,z)
我们如何明确表达我们因此也知道:
b(y,z)
并且这将再次具有 (Chain) 的 SuperProperty ),但对于 b 属性?

我首先想到尝试:
ao inverse(c) SubPropertyOf b

这位门生不喜欢,说有圈。现在我只是很困惑。

4

2 回答 2

2

的正确表达式b(y,z)inverse(a) o c SubPropertyOf b,因为您想表达从ytoz对应的属性路径b。如果你只有这个公理,这应该给你必要的推论。但是,您不能将它与第一个公理a o b SubPropertyOf c. 在这种情况下,您在具有直接属性的公理中“定义”c通孔,并在具有逆属性的公理中“定义”通孔。所以你必须知道定义. 这种循环在 OWL 2 DL 中是不允许的,这就是 Protege 告诉你循环定义的原因。总而言之,你只能拥有这些公理之一,但不能同时拥有这两个公理。bbccc

于 2016-05-08T10:22:28.323 回答
1

知道 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而不是等效属性。因此,即使您断言:hasParent为函数式,推理器仍然不会从ac推断b。但是,OWL2 不允许对象属性的等效组合。

应谨慎应用属性链。例如,在 S1 º S2 º S3 º ... º Sn ⊑ R 中,R 只能位于表达式左侧的第一个或最后一个位置。否则无法判定。这是对常规 RBox 的限制之一。而属性链,或者更正式的“通用角色包含”,只有在应用于常规 RBox 时才能确定。

于 2016-05-06T18:11:17.137 回答