Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Multiple domain and range in objectProperty?

I want to create an ontology with Protege that contains two classes, Animal and FatherAnimal, and the object property hasFather, with domain Animal and range FatherAnimal.

Also, I create two other classes: Son and Father which are linked with the same object property, hasFather. The problem here is that I'm not allowed to create multiple domain and range for the same object property. I'd really like to avoid creating a new object property. Is there any other solution?

like image 591
Katerina Dimitraki Avatar asked May 11 '15 16:05

Katerina Dimitraki


1 Answers

It's not really clear what the problem is. You can add multiple domains and ranges to object properties, but the interpretation is the intersection. That means that you if say, for instance,

hasFather rdfs:domain Son
hasFather rdfs:domain Animal

whenever you have

X hasFather Y

you'll be able to infer

X rdf:type Son
X rdf:type Animal

which probably isn't what you want.

As I see it, you could do this:

  • Don't declare any domain or range on hasFather. There's no need to do that. You can just declare the property, and then use it however you see fit.

If you want a bit more type inference available to you, then you could also add two subclass axioms:

        Son SubClassOf (hasFather only Father)
        Animal SubClassOf (hasFather only AnimalFather)

these axioms say that if something is a Son and it's related to something by the property hasFather, then that something is an instance of Father. Similiary, if something is an Animal and is related to something by the property hasFather, then that something is an instance of AnimalFather.

like image 168
Joshua Taylor Avatar answered Sep 24 '22 00:09

Joshua Taylor