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?
Surprisingly; Using Jena with the specification OntModelSpec.OWL_DL_MEM_RULE_INF gives my expected results!