I'm creating my first ontology with protege 5.2 and I'm running into some trouble.
Let's say I have the following Classes:
Gender with subclasses Female and Male
Human with subclasses Patient and Doctor
Disease with subclass Cancer with subclass Prostate_Cancer
and the properties:
hasDisease (doman: Patient, range: Disease)
hasGender (domain: Patient, range: Gender)
Now I want to specify that a Patient who hasDisease Prostate_Cancer is a Patient who also hasGender Male.
Is this possible without creating new classes?
In Protege you can achieve this by adding a general class axiom:
Then whenever you have an individual with a disease that is prostate cancer, the reasoner will infer that the individual is a
Male.You could model this as
as @StanislavKralin suggested, but then the reasoner will not infer that an individual is
Malewhenever it has prostate cancer. The reason for this is two fold:(1) Domain and range restrictions merely state that whenever two individuals are linked via that property, the the first individual will be of the type of whatever is specified in the domain and the second individual will be of whatever type is specified as the range.
(2) In reality an ontology has infinite many inferences. To be usable tools cannot provide infinite inferences. Hence, tools like Protege only provide inferences for which there are named classes, i.e. like
Male. Classes likehasGender some Maleis referred to as anonymous classes and are not displayed as inferences.