使用 Protege 在 OWL 中进行通用量化和空洞蕴涵
universal quantification and vacuous entailment in OWL using Protege
我正在尝试了解由于在 Protege 中使用全称量化而出现空泛蕴涵的情况。也就是说,公理的形式:
A rel *only* B
这是我的设置:
我创建了一个 ontology,它(或多或少)遵循这篇个体发生文章中描述的内容:
http://ontogenesis.knowledgeblog.org/1260
它由一个owns
关系和两个高级不相交的classes组成:person
和pet
。
在宠物class下,我有三个原始不相交的classes:dog
、elephant
和newt
。
下面这个人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}
构造。
我正在尝试了解由于在 Protege 中使用全称量化而出现空泛蕴涵的情况。也就是说,公理的形式:
A rel *only* B
这是我的设置:
我创建了一个 ontology,它(或多或少)遵循这篇个体发生文章中描述的内容:
http://ontogenesis.knowledgeblog.org/1260
它由一个owns
关系和两个高级不相交的classes组成:person
和pet
。
在宠物class下,我有三个原始不相交的classes:dog
、elephant
和newt
。
下面这个人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}
构造。