【问题标题】:OWL Properties domain and range inheritance semanticsOWL 属性域和范围继承语义
【发布时间】:2023-03-15 07:33:01
【问题描述】:

实际上,除了类分类成员之间的限制继承之外,当存在 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 一起使用都不会!

【问题讨论】:

    标签: jena owl protege reasoning pellet


    【解决方案1】:

    第一个答案:是的,它没有在 Protege 中明确显示。 (来源:在 protege 中运行此示例,在 Apache Jena 中使用 Particle 运行类似的实验)

    第二个答案:不,我们无法推断这一点。您可以将子类视为类似于子集。因此,超类的属性适用于子类,而不是相反。你有非常明确的定义

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

    因此我们知道AudiCar 是Car 的一个子集,而属性hasAudiCar 只适用于这个子集。因此我们不能说hasAudiCar Range Car

    第三个答案:不,这又是和以前一样的逻辑谬误。如果您想指定 driver hasAudiCar min 1 car,则必须在各自的超类上定义该属性,即 humancar
    hasAudiCar Domain Human
    hasAudiCar Range Car

    附加信息:很少需要推断类限制,实际上更有利的是直接指定它们以便它们可以驱动推断。例如,您可以将类 AudiCarDriver 定义为等同于 Driver and hasAudiCar min 1 AudiCar,从而将所有具有至少 1 个 audi 的驱动程序分类为 AudiCarDrivers

    如果这仍然让您感到困惑,请参阅此处的猫头鹰语言参考http://www.w3.org/TR/owl-ref/
    。希望我有所帮助:)

    【讨论】:

      猜你喜欢
      • 2014-03-17
      • 1970-01-01
      • 2016-10-17
      • 1970-01-01
      • 2017-07-24
      • 1970-01-01
      • 2016-09-02
      • 1970-01-01
      • 2014-04-19
      相关资源
      最近更新 更多