实际上,除了类分类成员之间的限制继承之外,当存在子存在时,我会迷失域名和范围语义。请参阅以下案例。
让我们考虑
(1) hasCar Domain driver
(2) driver subClassOf human
然后,我们可以推断出
hasCar Domain human
不管x是
,我们都有hasCar (x, y)
来自(1):driver(x)
来自(2):human(x)
然后:无论x
是什么,如果hasCar(x, y)
=> driver (x)
=>
(3) hasCar Domain human
第一个问题:这个结论是否正确?为什么不用隐士(没有Pellet,甚至是带有某种推理的Jena)来推断5?
让我们考虑
(1) hasAudiCar Range AudiCar
(2) AudiCar subClassOf Car
以类似的方式,我们可以推断
(3) hasAudiCar Range Car
第二个问题:这个结论是否正确?为什么不用隐士(没有Pellet,甚至是带有某种推理的Jena)来推断5?
让我们考虑
(1) hasAudiCar Domain driver
(2) hasAudiCar Range audiCar
(3) driver hasAudiCar min 1 audiCar
(4) audiCar subClassOf car
然后,我们可以推断出
driver hasAudiCar min 1 car
第三个问题:这个结论是否正确?为什么不用隐士(没有Pellet,甚至是带有某种推理的Jena)来推断5?
更新
将Jena与规范OntModelSpec.OWL_DL_MEM_RULE_INF
一起使用可以得到我的预期结果!然而,使用带有Pellet的Jena并没有使用Protege with Hermit或Pellet!