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!

More Median m. Hilal's questions See All
Similar questions and discussions