Protege:属性 使用其他属性的域限制
Protege: property domain restrictions using other properties
我正在用 protege 5.2 创建我的第一个 ontology,我 运行 遇到了一些麻烦。
假设我有以下 类:
Gender
子类 Female
和 Male
Human
子类 Patient
和 Doctor
Disease
子类 Cancer
子类 Prostate_Cancer
和属性:
hasDisease
(域:Patient
,范围:Disease
)
hasGender
(域:Patient
,范围:Gender
)
现在我想指定 Patient
hasDisease
Prostate_Cancer
是 Patient
hasGender
Male
。
这是否可以不创建新的 类?
在 Protege 中,您可以通过添加通用 class 公理来实现此目的:
hasDisease some Prostate_Cancer SubClassOf: Male
那么每当你有一个人患有前列腺癌的疾病时,推理者就会推断出这个人是Male
。
您可以将其建模为
hasDisease some Prostate_Cancer SubClassOf: hasGender some Male
正如@StanislavKralin 所建议的那样,但是推理者不会推断出一个人只要患有前列腺癌就 Male
。这样做的原因有两个:
(1) 域和范围限制仅说明只要两个个体通过 属性 链接,第一个个体将属于域中指定的任何类型,第二个个体将是指定为范围的任何类型。
(2) 实际上 ontology 有无限多的推论。可用的工具不能提供无限的推论。因此,像 Protege 这样的工具只提供名为 classes 的推论,即 Male
。 类 与 hasGender some Male
一样被称为匿名 class 并且不会显示为推论。
我正在用 protege 5.2 创建我的第一个 ontology,我 运行 遇到了一些麻烦。
假设我有以下 类:
Gender
子类 Female
和 Male
Human
子类 Patient
和 Doctor
Disease
子类 Cancer
子类 Prostate_Cancer
和属性:
hasDisease
(域:Patient
,范围:Disease
)
hasGender
(域:Patient
,范围:Gender
)
现在我想指定 Patient
hasDisease
Prostate_Cancer
是 Patient
hasGender
Male
。
这是否可以不创建新的 类?
在 Protege 中,您可以通过添加通用 class 公理来实现此目的:
hasDisease some Prostate_Cancer SubClassOf: Male
那么每当你有一个人患有前列腺癌的疾病时,推理者就会推断出这个人是Male
。
您可以将其建模为
hasDisease some Prostate_Cancer SubClassOf: hasGender some Male
正如@StanislavKralin 所建议的那样,但是推理者不会推断出一个人只要患有前列腺癌就 Male
。这样做的原因有两个:
(1) 域和范围限制仅说明只要两个个体通过 属性 链接,第一个个体将属于域中指定的任何类型,第二个个体将是指定为范围的任何类型。
(2) 实际上 ontology 有无限多的推论。可用的工具不能提供无限的推论。因此,像 Protege 这样的工具只提供名为 classes 的推论,即 Male
。 类 与 hasGender some Male
一样被称为匿名 class 并且不会显示为推论。