我用5.2号保护创建了我的第一个本体,我遇到了麻烦。
我们说我有以下课程:
带有子类Gender
和Female
的 Male
带有子类Human
和Patient
Doctor
带有子类Disease
Cancer
的 Prostate_Cancer
和属性:
hasDisease
(doman:Patient
,范围:Disease
)
hasGender
(域名Patient
,范围:Gender
)
现在,我想指定一个Patient
hasDisease
Prostate_Cancer
Patient
hasGender
谁Male
{{1}}。
这是否可以在不创建新类的情况下实现?
答案 0 :(得分:2)
在Protege中,您可以通过添加通用类公理来实现此目的:
hasDisease some Prostate_Cancer SubClassOf: Male
然后,只要您患有前列腺癌的个体,推理者就会推断该个体是Male
。
您可以将其建模为
hasDisease some Prostate_Cancer SubClassOf: hasGender some Male
正如@StanislavKralin建议的那样,然后推理者不会推断出一个人患有前列腺癌就是Male
。原因有两个:
(1)域和范围限制仅表明每当两个人通过该属性链接时,第一个人将是域中指定的任何类型,第二个人将是指定为的任何类型范围。
(2)实际上,本体论有无数的推论。要成为可用的工具无法提供无限的推论。因此,像Protege这样的工具只提供有命名类的推论,比如Male
。像hasGender some Male
这样的类被称为匿名类,不会显示为推论。