猫头鹰 - 门生不正确推断? 如何精确定义一个类“素食主义者”?(owl - protege n

2019-07-29 05:02发布

我一直停留了两天,现在想明白为什么以下情形不工作:

这里的截图: http://dl.dropbox.com/u/4677548/screenshots.html

我有一个VegetarianFood类(食品子类),也就是等同于“食品(鸡蛋或MilkAndDerivates或VeganFood)”,你可以在截图1号见

的VeganFood类,上转,相当于其他类(NutsAndSeeds,谷物,水果,等等)的屏幕截图2

你可以看到有作为MilkAndDerivates和NutsAndSeeds截图3创建了两个人(切达干酪和腰果),它们被正确推断为VegetarianFood和VeganFood成员

然后我创建了两个个体作为食谱,一个只与腰果(PastaVega)和一个与两个切达chese和腰果(PastaVege),使用对象属性hasIngredient截图4,5

他们已经推断为配方......但没有落入VegatarianRecipe和VeganRecipe的类别,定义如下截图6和7

我没有线索,他们为什么不能推断为VegetarianRecipe(或素食主义者)??我在想什么?

编辑:

如果我改变从VegetarianRecipe(或素食主义者)“的配方和(hasIngredient ONLY VegetarianFood)”

“配方和(hasIngredient SOME VegetarianFood)”

截图8

在recepies个人表现,但当然这不是我想做的事,因为以这种方式将包括混合肉类和vegetarianFood食谱。 那么如何定义vegetarianrecipe和veganrecipe类,允许推理正确推断当食谱是素食者????

Answer 1:

你在那OWL推理采用开放世界的假设,事实的结果砸中。

你之所以PastaVege配方未推断为一个VegetarianRecipe是,虽然您明确列出的配方成分确实是所有VegeratianFood情况下,它很可能是你的食谱中一些目前未知成分也不是吃素的食物。

由于您的约束VegetarianRecipe是, 所有的成分应该是VegetarianFoods(不只是那些我们目前知道的),不能明确断定(在一个开放的世界),你的食谱的确是VegetarianRecipe

有许多方法来解决这个问题,但没有真正做你想要什么 - 你需要从略微不同的角度接近它。

无需进入具体细节造型:虽然这是相当困难的推断,如果一个配方素食鉴于你目前的模式,它是相对简单的推断,如果配方也不是吃素的; 具有至少一个非素食成分任何配方是一个非素食菜谱。

另一种方法是创建一个封闭的集(素食)成分(使用通过枚举类的OWL oneOf约束),但是这是你的模型显著的变化,当然它是乏味必须列出所有可能的成分以这种方式。



文章来源: owl - protege not inferring correctly? how to define precisely a class “vegetarian”?