2014-10-30 71 views
1

我希望这个问题不是微不足道的,我花了相当多的时间寻找答案。 我在OWL中创建一个本体,我一直试图强制一个特定的约束到一个类的描述中,但是不能用OWL提供的工具来实现,并且在类的描述中使用了空节点作为存在变量。 Protege5不喜欢它。 我想模拟空间和运动从一个空间到另一个空间的类,特别是我想模拟一个运动,其中的目标与起始空间具有相同的空间。 在逻辑我形容我InternalMovement类为:强化身份的类定义中的空白节点

InternalMovement = forall ?x exist ?y (Movement(?x)^space(?x,?y)^direction(?x,?y)) 

在OWL变量不存在和执行整个类的描述空白节点的身份似乎并不可能。我诉诸空白节点,因为它们应该被视为存在变量,我希望使用空白节点ID会做到这一点。我错了,我不知道如何建模这个简单的类。 海龟片段是这样的:

​​

我会想到的是,以下的个人将被列为InternalMovement,但显然事实并非如此。

:internalmovement rdf:type :Movement , 
    :space :room1 ; 
    :direction :room1 . 

:room1 rdf:type :Space. 

任何人都可以帮助我吗? 谢谢

+0

我不太明白你的伪定义:??????'InternalMovement = FORALL X存在Y(运动(X)^空间(X,Y)^方向(x,? Y))'。类表达式应该基本上是一个一元谓词。例如,“Man(?x)= Male(?x)&Person(?x)'。你的意思是'InternalMovement(?x)= Movement(?x)&exists?y(space(?x,?y)^ direction(?x,?y))'其中Movement是一个类,空间和方向是属性?不幸的是,OWL没有属性交集;如果是这样,你可以说'存在?(空间&方向)(?x,?y)'。 – 2014-10-30 19:20:10

+0

Hi @JoshuaTaylor,是的,我想用fol公式来表达OWL类的定义。不幸的是我都生锈了。但那正是我想描述的。 – GCorrendo 2014-10-31 10:24:17

回答

1

这听起来像你想要的是定义一个类,通过指定它具有相同的值为两个特定的属性。如果OWL支持财产路口(一些描述逻辑做),那么你可以写

InternalMovement ≡ ∃(空间⊓方向)

不幸的是,OWL没有这个。但是,您可以定义属于空间目标的子属性并使用该属性。那就是:

spaceAndDirection⊑ space
spaceAndDirection⊑目标
InternalMovement ≡ ∃ spaceAndDirection

这意味着,如果x是一个InternalMovement,则存在AY使得spaceAndDirection(X,Y),然后从子属性公理,我们可以推断空间(X,Y )和方向(x,y)。

这将照顾你想要的一些,但不是全部。如果你只知道一些运动x有一些y作为空间和方向,你仍然不能推断spaceAndDirection(x,y),所以你不能推断x是一个InternalMovement。

如果添加基数公理运动有且只有一个空间,只有一个方向,那么你就可以保证,如果x具有Ÿ作为其空间和方向,然后如果它具有spaceAndDirection值,则该值必须是y。

如果您还添加InternalMovement具有(至少或完全)一个spaceAndDirection值的(最小或确切)基数公理,则如果x是InternalModement,则可以从以下任意两个中推导出第三个:

  1. 空间(X,Y)
    • 由于x是InternalMovement,它必须有一个spaceAndDirection值。称它z。然后spaceAndDirection(x,z)。那么,由于spaceAndDirection是空间和方向的子属性,我们也有空间(x,z)和方向(x,z)。由于x是运动,它只有一个空间值,所以y = z。然后我们也有方向(x,y)和spaceAndDirection(x,y)。
  2. 方向(X,Y)
    • 类似于以上。
  3. spaceAndDirection(X,Y)
    • 由于spaceAndDirection是空间和方向的子属性,我们立即有空间(X,Y)和方向(X,Y)。
+0

谢谢。比工作一个治疗!我只需要使这个模式对于属性链足够灵活,以便我可以将其用于常规类定义。谢谢:) – GCorrendo 2014-10-31 10:25:32

+0

顺便说一下,我试图把公理强制空间和方向的基数为1,但是这并没有强制推论,如果空间和方向是相同的,那么运动的实例就有空间和方向y 。 – GCorrendo 2014-10-31 11:50:09

+0

@ gc3是的,我说得有点太快。 *如果*事物具有相同的空间和方向,那么*如果*它也具有spaceAndDirection值,则spaceAndDirection值必须相同。这个东西可能只有* no * spaceAndDirection的值。 – 2014-10-31 12:24:52