我在Protégé造型甜点中创造了一个本体论。有两个主要的基类Dessert和Ingredient以及一个hasIngredient属性来连接它们。甜点的一个例子如下:
NeapolitanIceCream subclass of Dessert
hasIngredient exactly 1 IceCream
hasIngredient exactly 1 wafers
hasIngredient only (IceCream or Wafers)
我有2个原始类SimpleDessert和ComplexDessert
SimpleDessert subclass of Dessert and (hasIngredient max 3 Ingredient)
ComplexDessert subclass of Dessert and (hasIngredient min 5 Ingredient)
SimpleDessert(min)按预期执行,但是当我运行推理器时,ComplexDessert(max)没有子类。我对开放世界原则的理解认为,正好有一个条款和唯一的条款清楚地表明只有这两个可能的成分,数量是明确的。 我可能错过了一些明显的东西,但在这里会有任何帮助。
答案 0 :(得分:2)
这个公理可能并不意味着你想要的意思:
Dessert的SimpleDessert子类和(hasIngredient max 3 Ingredient)
这表示 “如果 某些东西是SimpleDessert,那么它是甜点,最多有三种成分。< / em> 不说 “如果 什么是甜点并且最多有三种成分,然后< / strong>它是一个SimpleDessert。“
我想说后者,那么你需要另一个方向的子类公理:
甜点⊓≤ 3 hasIngredent.Ingredient⊑SimpleDessert
在Protege中,您可以使用General Axioms选项卡执行此操作。 (有关示例和屏幕截图,请参阅my answer至owl protege how can I describe a class that has just some properties?。)