rdf - 猫头鹰 - 门徒没有正确推断?如何精确定义一个类 "vegetarian"?

标签 rdf semantic-web ontology owl protege

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

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

我有一个 VegetarianFood 类(Food 的子类),它相当于“Food and (Eggs or MilkAndDerivates or VeganFood)”,正如你在截图 1 中看到的那样

VeganFood 类又相当于其他类(NutsAndSeeds、Cereals、Fruit 等...)
截图 2

如您所见,有两个个体(切达干酪和腰果)被创建为 MilkAndDerivates 和 NutsAndSeeds
截图 3
他们被正确推断为 VegetarianFood 和 VeganFood 成员

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

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

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

编辑:

如果我将 VegetarianRecipe(或素食主义者)从
“食谱和(仅含素食)”


“食谱和(有成分一些素食)”

截图 8

接收个人被展示,但当然这不是我想要做的,因为这样它将包括混合肉类和素食的食谱。
那么如何定义一个vegetarianrecipe 和veganrecipe 类来允许推理者正确地推断出一个菜谱是素食者还是素食者????

最佳答案

您已经发现 OWL 推理使用开放世界假设这一事实的结果。

你的原因PastaVege配方未被推断为 VegetarianRecipe就是这样,虽然你在食谱中明确列出的成分确实都是VegeratianFood例如,您的食谱中某些目前未知的成分很可能不是素食。

由于您对 VegetarianRecipe 的限制是所有成分都应该是素食食品(不仅仅是我们目前知道的那些),不能明确地得出结论(在开放世界中)您的食谱确实是 VegetarianRecipe .

有很多方法可以解决这个问题,但没有一种方法能真正做到你想要的——你需要从稍微不同的角度来处理它。

无需深入了解确切的建模细节:尽管根据您当前的模型很难推断出某个食谱是否为素食主义者,但推断一个食谱是否为素食者相对简单;任何含有至少一种非素食成分的食谱都是非素食食谱。

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

关于rdf - 猫头鹰 - 门徒没有正确推断?如何精确定义一个类 "vegetarian"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10366754/

相关文章:

java - 如何从 Jena RDF Inf 模型中的节点值获取个人名称

rdf - 如何判断资源/实体是类还是实例

SKOS(语义网)的 Haskell 数据结构

java - 获取树结构中所有可能的路径

java - 使用 OWL API 推理本体

java - 通过 OWL-API 获取所有 OWLAnonymousClassExpressions

sparql - 包含 FILTER NOT EXISTS 和 OPTIONAL 的 UNION 案例不会产生结果?

Python 和 rdflib : parsing issues

encoding - Redland RDF 中 URI 的字符串表示形式的字符编码是什么?

rdf - 本体/语义/OWL/RDF 有什么 killer 级应用吗?