例如,我有三个类:Flock,Bird,Velocity。我还有两个属性:hasMember(域为Flock,范围为Bird)和hasAttribute(域为Bird,范围为Velocity)。现在我想为Flock类添加一个EquivalentClass限制作为定义。让我们考虑一个非常简单的定义:在群中,所有的鸟都有相同的速度。如何在OWL中表达这一点?
答案 0 :(得分:1)
警告:这个答案实际上是不正确的,请查看评论以了解原因。
问题"我们可以在OWL限制中使用owl:sameAs
吗?"答案是否定的,而不是OWL(2)本体论。但是,您可以在OWL Full本体中执行任何您喜欢的操作(即,根据基于OWL RDF的语义解释的RDF图)。然而,这与你的问题的细节无关,你想要谈论一群鸡群的速度。
在OWL 2 DL范围内,您的问题有解决方案。引入属性flockVelocity
并使属性链hasMember o hasAttribute
成为flockVelocity
的子属性。将flockVelocity
设为功能属性,您就完成了。或者,您可以在flockVelocity
上定义基数限制。在海龟:
:hasMember a owl:ObjectProperty;
rdfs:domain :Flock;
rdfs:range :Bird .
:hasAttribute a owl:ObjectProperty; # why not :hasVelocity?
rdfs:domain :Bird;
rdfs:range :Velocity .
:flockVelocity a owl:ObjectProperty, owl:FunctionalProperty;
owl:propertyChainAxiom (:hasMember :hasAttribute) .
完成。如果您不关心在OWL DL中并且允许自己完全自由OWL,则可以使用空白节点而不是:flockVelocity
,这样您就不必引入人工属性名称。