实际上,除了类分类成员之间的限制继承之外,当存在 subsummption 时,我迷失了域和范围语义。请看以下案例。
让我们考虑一下
(1) hasCar Domain driver
(2) driver subClassOf human
那么,我们能不能推断出
hasCar Domain human
让我们看看hasCar (x, y)
x 是什么
从 (1):driver(x)
从 (2):human(x)
那么:无论如何x
,如果hasCar(x, y)
=> driver (x)
=>
(3) hasCar Domain human
第一个问题:这个结论正确吗?为什么 Protege 5 with Hermit(Pellet 也没有,甚至 Jena 和一些推理者都没有)推断出这一点?
让我们考虑一下
(1) hasAudiCar Range AudiCar
(2) AudiCar subClassOf Car
以类似的方式,我们可以推断
(3) hasAudiCar Range Car
第二个问题:这个结论正确吗?为什么 Protege 5 with Hermit(Pellet 也没有,甚至 Jena 和一些推理者都没有)推断出这一点?
让我们考虑一下
(1) hasAudiCar Domain driver
(2) hasAudiCar Range audiCar
(3) driver hasAudiCar min 1 audiCar
(4) audiCar subClassOf car
那么,我们可以推断
driver hasAudiCar min 1 car
第三个问题:这个结论正确吗?为什么 Protege 5 with Hermit(Pellet 也没有,甚至 Jena 和一些推理者都没有)推断出这一点?
更新
将 Jena 与规范一起使用OntModelSpec.OWL_DL_MEM_RULE_INF
会产生我预期的结果!但是,将 Jena 与 Pellet 一起使用不会,Protege 与 Hermit 或 Pellet 一起使用都不会!