问题
I am working on an ontology task in Protege
.
Situation: I have Student class
that has subclasses of InactiveStudent
, ActiveStudent
and VeryActiveStudent
. These subclasses have conditions related to object property called isEnrolledForSubject
. I defined conditions for:
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')
but I don't know how to define it for InactiveStudent
- the condition is that such student has not enrolled for ANY subject
. The thing is, that when I define an individual John I cannot make object property assertion on him saying "isEnrolledForSubject null
", because Protege's wizard is expecting a individual from defined range.
How can one solve this kind of situation?
回答1:
You define it as follows:
InactiveStudent = 'Class of all students' and (isEnrolledForSubject max 0 'Class of all subjects')
Then when you define a inactiveStudent
individual, you will need to state it as follows:
inactiveStudent Type 'Class of all students'
inactiveStudent Type isEnrolledForSubject max 0 'Class of all subjects'
The reason for this is due to 2 factors:
(1) Object properties defines relations between 2 individuals. There is no way to state that an individual in not in a relation with any other individual besides by constraining its type as I did.
(2) If an individual is not linked to another individual via an object property, nothing more can be inferred due to the open world assumption. Informally it means that the only inferences that the reasoner can make from an ontology is based on explicit information stated in the ontology or what can derived from explicit stated information.
来源:https://stackoverflow.com/questions/49463808/individual-with-null-object-property