0

Actually, I'm getting lost with domain and range semantics when a subsummption exists, in addition to restriction inheritance between class taxonomy members. Please see the following cases.

Let's consider

(1) hasCar Domain driver
(2) driver subClassOf human

Then, can we infer that

hasCar Domain human

Let's have hasCar (x, y) whatever x is

from (1): driver(x) from (2): human(x)

then: whatever x is, if hasCar(x, y) => driver (x) =>

(3) hasCar Domain human

First Question: Is this conclusion correct? Why isn't Protege 5 with Hermit (neither Pellet, not even Jena with some reasoner) inferring that?


Let's consider

(1) hasAudiCar Range AudiCar 
(2) AudiCar subClassOf Car

In a similar fashion, we can infer that

(3) hasAudiCar Range Car

Second Question: Is this conclusion correct? Why isn't Protege 5 with Hermit (neither Pellet, not even Jena with some reasoner) inferring that?


Let's consider

(1) hasAudiCar Domain driver 
(2) hasAudiCar Range audiCar
(3) driver hasAudiCar min 1 audiCar
(4) audiCar subClassOf car

Then, we can infer that

driver hasAudiCar min 1 car

Third Question: Is this conclusion correct? Why isn't Protege 5 with Hermit (neither Pellet, not even Jena with some reasoner) inferring that?

UPDATE

Using Jena with the specification OntModelSpec.OWL_DL_MEM_RULE_INF gives my expected results! However, using Jena with Pellet doesn't, neither using Protege with Hermit or Pellet!

Median Hilal
  • 1,483
  • 9
  • 17

1 Answers1

1

First Answer: It is, it is not explicitly showing it in Protege. (Source: running this example in protege, running similar experiments with pellet in Apache Jena)

Second Answer: No, we cannot infer this. You can consider sub-classes to be akin to a sub-set. Therefore properties of the superclass are applicable to the subclass, not the other way around. You have very specifically defined

(1) hasAudiCar Range AudiCar 
(2) AudiCar subClassOf Car

Therefore we know that AudiCar is a subset of Car and that the property hasAudiCar is only applicable to this subset. Thus we cannot say hasAudiCar Range Car.

Third Answer: No, again this is the same logical fallacy as before. If you want to specify that driver hasAudiCar min 1 car then the property must be defined on the respective superclasses, i.e, human and car as
hasAudiCar Domain Human
hasAudiCar Range Car

Additional Info: It is rare to want to infer class restrictions and actually more advantageous to specify them outright so that they can drive inference. For example you can define a class AudiCarDriver as equivalent to Driver and hasAudiCar min 1 AudiCar thus classifying all drivers with at least 1 audi as AudiCarDrivers

Do also refer to the owl language reference here http://www.w3.org/TR/owl-ref/
if this is still confusing you. Hope I helped :)

Kunal Khaladkar
  • 493
  • 3
  • 16