0

以下本体不一致。你能解释一下为什么吗?

:Ingredient    a                   owl:Class.

:Car           a                   owl:Class;
               owl:disjointWith    :Ingredient.

:MyCar         a                   :Car.

:Cheese        a                   :Ingredient.
:Milk          a                   :Ingredient.

:containsIngredient   a            owl:ReflexiveObjectProperty, owl:TransitiveObjectProperty;
                      rdfs:domain  :Ingredient;
                      rdfs:range   :Ingredient;

:Cheese        :containsIngredient :Milk.

推理者正在推断:MyCar :containsIngredient :MyCar 这意味着:MyCar a :Ingredient 和 因为:MyCar a :Car and :Car :disjointWith :Ingredient,我的本体论是不一致的。

问题是:为什么自反属性:containsIngredient对于 来说是真的:MyCar,尽管它具有:Ingredient范围和域?

4

1 回答 1

2

显然,无论属性的域和范围如何,owl:ReflexiveObjectProperty都适用于所有事物 ( )。owl:Thing通过将 ardfs:domain和 a设置rdfs:range为属性,您隐含地断言所有owl:Thing个体也是范围和域类的个体。在我看来,这使得owl:ReflexiveObjectPropery无用。

我应该在上面的本体中做的是:Ingredient等效于containsIngredient Self(Protégé 类表达式语法),而不是使用owl:ReflexiveObject忽略属性域和范围的属性。

于 2013-06-09T14:21:58.057 回答