我正在Protege
开展本体任务。
情况:我Student class
的子类为InactiveStudent
,ActiveStudent
和VeryActiveStudent
。这些子类具有与称为isEnrolledForSubject
的对象属性相关的条件。我定义了以下条件:
ActiveStudent = 'Class of all students' and (isEnrolledForSubject min 1 'Class of all subjects')
VeryActiveStudent = 'Class of all students' and (isEnrolledForSubject min 4 'Class of all subjects')
但我不知道如何为InactiveStudent
定义 - 条件是此类学生尚未注册ANY subject
。问题是,当我定义一个约翰时,我不能对他说#34; isEnrolledForSubject null
&#34;,因为Protege的向导期望一个人来自定义的范围。< / p>
如何解决这种情况?
答案 0 :(得分:1)
您可以按如下方式定义:
InactiveStudent = 'Class of all students' and (isEnrolledForSubject max 0 'Class of all subjects')
然后,当您定义inactiveStudent
个人时,您需要按如下方式说明:
inactiveStudent Type 'Class of all students'
inactiveStudent Type isEnrolledForSubject max 0 'Class of all subjects'
原因在于两个因素:
(1)对象属性定义了2个个体之间的关系。除了通过限制其类型之外,没有办法说明不中的个体与任何其他个体的关系。
(2)如果个人未通过对象属性与另一个人相关联,则由于开放世界假设而无法推断出其他任何内容。非正式地,它意味着推理者可以从本体论中做出的唯一推论是基于本体论中陈述的明确信息或者可以从明确陈述的信息中得出的内容。