使用 Protege 在 OWL 中进行通用量化和空洞蕴涵

universal quantification and vacuous entailment in OWL using Protege

我正在尝试了解由于在 Protege 中使用全称量化而出现空泛蕴涵的情况。也就是说,公理的形式:

A rel *only* B

这是我的设置:

我创建了一个 ontology,它(或多或少)遵循这篇个体发生文章中描述的内容:

http://ontogenesis.knowledgeblog.org/1260

它由一个owns关系和两个高级不相交的classes组成:personpet

在宠物class下,我有三个原始不相交的classes:dogelephantnewt

下面这个人class,我有一个定义classpet owner,定义如下:

'pet owner' equivalent_to person and (owns only pet)

最后,我创建了一个人,名为 person 1,没有任何宠物。

通用量化:

我对通用量化的理解是,only 量词描述了那些只与特定 class 的个体有关系的个体。这意味着与另一个人没有任何关系的个人也将通过通用量化来描述。

在我的示例中,我认为 person 1 会被推断为 pet owner,因为 person 1 不会 own 任何 pets 或站在任何其他关系。但是,当我 运行 推理器(HermiT 和 Pellet)时,事实并非如此。 Person 1 未被推断为 pet owner 的成员。

所以,看来我对泛量化不是很了解。有人可以帮我吗?

这里的问题是你没有考虑开放世界假设(OWA)。根据 OWA,ontology 仅包含已知事实;可能还有其他事实。如果你对person 1拥有的东西只字未提,并不代表它什么都没有。它可能拥有 ontology 中没有的其他东西。所以你的通用限制可能 阻止 某人成为宠物主人(以防他们拥有不是宠物的东西,并且相应的公理在 ontology 中)。要让某人成为宠物主人,您可能 'close' 有关它的信息,例如说已知的宠物是该人唯一拥有的东西。为此,您可以使用 owns only {pet1, pet2, pet3} 构造。