繁体   English   中英

猫头鹰 - 保护不正确? 如何准确定义一个“素食”类?

[英]owl - protege not inferring correctly? how to define precisely a class “vegetarian”?

我已经被困了两天,现在试图理解为什么下面的场景不起作用:

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

我有一个VegetarianFood类(食物的子类)相当于“食物和(鸡蛋或牛奶和牛奶或素食食品)”,你可以在屏幕截图1中看到

反过来,VeganFood课程相当于其他课程(NutsAndSeeds,谷物,水果等...)截图2

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

然后我创建了两个人作为食谱,一个只有腰果(PastaVega)和一个同时有切达干酪和腰果(PastaVege),使用对象属性hasIngredient截图4和5

并且他们被推断为食谱...但没有一个属于VegatarianRecipe和VeganRecipe的类别,定义如下截图6和7

我没有线索,为什么他们不被推断为VegetarianRecipe(或素食主义者)?我错过了什么?

编辑:

如果我改变VegetarianRecipe(或素食主义者)从“食谱和(只有素食者食物)”

“食谱和(有一些素食食品)”

截图8

接受个人展示,但当然这不是我想要做的,因为这将包括混合肉和素食食谱的食谱。 那么如何定义一个素食和纯素食品类,以便推理员在食谱素食或素食时正确推断????

你已经看到了OWL推理使用开放世界假设的结果。

您的PastaVege食谱不被推断为VegetarianRecipe是,虽然您在配方中明确列出的成分确实都是VegeratianFood实例,但很可能是您目前未知的食谱成分不是素食。

由于您对VegetarianRecipe的约束是所有成分都应该是VegetarianFoods(不仅仅是我们目前所了解的),因此无法明确地(在开放的世界中)确定您的食谱确实是VegetarianRecipe

有很多方法可以解决这个问题,但是没有一种方法可以完全按照您的要求进行操作 - 您需要从稍微不同的角度来处理它。

没有进入确切的建模细节:虽然根据您当前的模型很难推断配方是否是素食,但推断食谱是否不是素食是相对简单的; 任何含有至少一种非素食成分的食谱都是非素食食谱。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM