我希望这个问题不是微不足道的,我花了相当多的时间寻找答案。 我在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.
任何人都可以帮助我吗? 谢谢
我不太明白你的伪定义:??????'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
Hi @JoshuaTaylor,是的,我想用fol公式来表达OWL类的定义。不幸的是我都生锈了。但那正是我想描述的。 – GCorrendo 2014-10-31 10:24:17