为什么这个DL查询没有返回预期的结果?

时间:2014-10-29 10:51:25

标签: owl protege description-logic dlquery

我在Protege中创建了一个描述人际关系的简单OWL本体:

  • 课程:人,男,女
    • 人是男人和女人的超级人员
    • 男人和女人不相交
  • 对象属性:hasChild
    • 其doman和范围是人
  • 个人:a(男),b(男),c(男)--- x(女),y(女),z(女)
  • 断言
    • a hasChild x
    • a hasChild y
    • c hasChild a

现在我想查询孩子只有女儿的所有人。我在DL查询选项卡中写了这个查询:

Person and hasChild only Woman

但它没有返回任何实例!或者对只有两个孩子的人进行简单查询

Person and hasChild exactly 2

这两个查询都没有返回任何实例,任何人都可以告诉我这是什么问题吗?

由于

1 个答案:

答案 0 :(得分:4)

DL有一个开放世界假设(OWA)。这意味着在本体中捕获的知识是不完整的。另一种选择是封闭世界假设(CWA),它用于数据库。在CWA中,没有声明的所有内容都不存在。

根据OWA的说法,我们从上面的一个本体论中得知,a和c有一些孩子。我们不知道a是否有一个以上的孩子,因为x和y可能是相同的(为了避免这种情况,应该使用DifferentIndividuals()公理)。我们不知道这些是否是唯一的孩子:在开放的世界中,任何个体都可以拥有本体中遗漏的其他任何性别的孩子。这就是为什么这些查询的答案是空集。

获得预期答案的最简单方法是关闭知识。如果本体将包含公理

a instanceOf (hasChild only {x,y})

然后a将成为第一个查询的答案。另外,如果是公理

DifferentIndividuals(x,y)

将被添加,然后第二个查询将返回一个。 Protege允许人们轻松制作第二类公理。