Search code examples
ontologyprotege

How to set domain and range of a property in an Ontology modeled in Protege


I am using Protege 5.0.0 for developing an ontology. Part of the Ontology is shown in figure at the link:

https://i.sstatic.net/xTeiA.jpg

For the given Ontology I have created classes OperatingRange,OperatingPowerRange,and ValueRange. Also, properties hasOperatingProperty, hasValue and other properties are created. I am facing problem in the following:

  • For ssn:hasOperatingProperty, I am using OpertingRange class as domain and ssn:OperatingPowerRange class as range.Now, according to figure should I set ssn:hasOperatingProperty as domain for ssn:hasValue? I tried to do the same but Protege is not showing any option for this.
  • What is the meaning of "can be" and "all of" written below some properties in the above figure?
  • For the unitOfMeasure property should I set ssn:hasvalue as domain and unit:Volt as range?

Solution

  • I believe the pattern:

    'propertyName'
    can be
    one of
    'className'
    

    is a way to represent restrictions, which are class expressions, and should be read as: at least one object property assertion with property 'propertyName' exists, and the individual in that assertion is an instance of 'className'.

    'can be' and 'one of' are to be read as 'can be one of' - meaning an existential quantification. 'can be' 'all of' is universal quantification.

    Regarding unitOfMeasure, you cannot have a property as a domain for another property, unless the second property (hasValue in your case) is an annotation property. Using unit:Volt as range sounds correct.

    Edit: to answer the comment, you need to add a class expression do the domain. In Protege you do this by clicking on the domain tab, and choosing the type of restriction, the property along which it acts and the type you expect to be a filler (can be Thing). See the picture for reference.

    Protege snapshot