classpropertiesontologyprotegerestrictions

Protege: property domain restrictions using other properties


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?


Solution

  • In Protege you can achieve this by adding a general class axiom:

    hasDisease some Prostate_Cancer SubClassOf: Male
    

    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

    hasDisease some Prostate_Cancer SubClassOf: hasGender some Male
    

    as @StanislavKralin suggested, but then the reasoner will not infer that an individual is Male whenever 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 like hasGender some Male is referred to as anonymous classes and are not displayed as inferences.