我在Protege中创建了一个描述人际关系的简单OWL本体:
现在我想查询孩子只有女儿的所有人。我在DL查询选项卡中写了这个查询:
Person and hasChild only Woman
但它没有返回任何实例!或者对只有两个孩子的人进行简单查询
Person and hasChild exactly 2
这两个查询都没有返回任何实例,任何人都可以告诉我这是什么问题吗?
由于
答案 0 :(得分:4)
DL有一个开放世界假设(OWA)。这意味着在本体中捕获的知识是不完整的。另一种选择是封闭世界假设(CWA),它用于数据库。在CWA中,没有声明的所有内容都不存在。
根据OWA的说法,我们从上面的一个本体论中得知,a和c有一些孩子。我们不知道a是否有一个以上的孩子,因为x和y可能是相同的(为了避免这种情况,应该使用DifferentIndividuals()公理)。我们不知道这些是否是唯一的孩子:在开放的世界中,任何个体都可以拥有本体中遗漏的其他任何性别的孩子。这就是为什么这些查询的答案是空集。
获得预期答案的最简单方法是关闭知识。如果本体将包含公理
a instanceOf (hasChild only {x,y})
然后a将成为第一个查询的答案。另外,如果是公理
DifferentIndividuals(x,y)
将被添加,然后第二个查询将返回一个。 Protege允许人们轻松制作第二类公理。