以下本体不一致。你能解释一下原因吗?
: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
和:Car :disjointWith :Ingredient
开始,我的本体论就不一致了。
问题是:为什么:containsIngredient
的自反属性:MyCar
为真,尽管它有:Ingredient
作为范围和域?
答案 0 :(得分:2)
显然,owl:ReflexiveObjectProperty
适用于所有内容(owl:Thing
),无论属性的域和范围如何。通过为属性设置rdfs:domain
和rdfs:range
,您隐式断言所有owl:Thing
个人也是范围和域类的个体。在我看来,这会使owl:ReflexiveObjectPropery
无用。
我在上面的本体中应该做的是使:Ingredient
等同于containsIngredient Self
(Protégé类表达式语法),而不是使用忽略域和范围的owl:ReflexiveObject
属性财产。