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

时间:2012-04-28 19:19:01

标签: rdf semantic-web ontology owl protege

我已经被困了两天,现在试图理解为什么以下情况不起作用:

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

我有一个VegetarianFood类(Food的子类)相当于“Food and(Eggs or MilkAndDerivates或VeganFood)”,你可以在屏幕截图1中看到

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

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

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

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

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

编辑:

如果我改变了VegetarianRecipe(或素食主义者) “食谱和(只有成分素食食品)”

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

截屏8

显示收件人,但当然这不是我想做的事情,因为这样它将包括混合肉和素食食谱的食谱。 那么如何定义一个素食和纯素食品类,以便推理员在食谱素食或素食时能够正确推断????

1 个答案:

答案 0 :(得分:8)

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

您的PastaVege食谱未被推断为VegetarianRecipe的原因是,尽管您在食谱中明确列出的成分确实是所有VegeratianFood个实例,但它很可能是一些目前未知的食谱成分不是素食。

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

有很多方法可以解决这个问题,但没有一种方法能够完全符合您的要求 - 您需要从稍微不同的角度来处理它。

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

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