保护多个等价的公理与公理的结合

时间:2018-03-10 15:06:50

标签: owl semantic-web protege

我试图理解使用多个等效公理和使用这些公理的并集(即,析取)之间的区别。我已经建立了一个具有这种结构的玩具本体: var run = require('browser-run'); var browser = run(); browser.pipe(process.stdout); browser.end('console.log(location); window.close()'); 使用名为 Class_A - Class_A.1 Class_B Class_C Class_D - Class_D.1 的对象属性。

has_part使用等价公理定义: Class_A.1

EquivalentTo (Class_A and (has_part some Class_B)) or (Class_A and (has_part some Class_C)) 使用两个等价公理定义: Class_D1 EquivalentTo Class_D and (has_part some Class_B)

使用HermiT 1.3.8.413,我执行DL查询 EquivalentTo Class_D and (has_part some Class_C) 。 这会返回子类has_part some Class_B,这是有道理的。

但是,我不明白为什么Class_D.1没有被退回。我认为,因为Class_A.1的等价公理是一个析取,所以它被Class_A.1析取包含在内。

1 个答案:

答案 0 :(得分:1)

让我尝试一个更简单的例子。我们不一定需要引入对象属性来说明这个概念。我们可以用任意命名的类替换'has_part some X'而不改变蕴涵,因为我们没有说任何关于X的内容。同样为了你的例子,我们可以在交集元素列表中省略'A'

让我们尝试:

,而不是你的A.1
Prokaryote EquivalentTo Bacteria OR Archaea

选择一个生物学例子,因为我知道你很熟悉,但对于其他人来说,细菌,古菌和真核生物是生命的三个领域。术语“原核生物”是指人工但有时有用的细菌和古细菌群。

好的,现在我们尝试DL查询“细菌”。这不会将原核生物作为子类返回,因为我们知道实际上原核生物是细菌的超类

希望映射到这个具体的例子有助于潜在的直觉。我个人发现UnionOf可能与抽象的例子有点奇怪的反直觉,但当用具体的例子代替时,它更加明显。

为了更正式的说明,我认为回应ASKW的评论就足够了,等价需要相互的subClassOf,但A subClassOf B or C不需要A subClassOf B。希望这会有所帮助。