OWL2等价与子类定义的实用解释

Posted

技术标签:

【中文标题】OWL2等价与子类定义的实用解释【英文标题】:Pragmatic explanation on OWL2 equivalence vs subclass definition 【发布时间】:2021-12-26 13:30:58 【问题描述】:

我正在为许多 OWL 教程(例如这里的 https://www.cs.vu.nl/~guus/public/owl-restrictions/)中使用等效类和 subClassOf 的方式而苦苦挣扎。

让我们从上面的文档中举一个例子(部分:Persons and Artefacts):

“人所创造的一切都是人工制品”是陈述,RDF是:

:Person
  a owl:Class ;
  rdfs:subClassOf
    [ a owl:Restriction ;
      owl:onProperty :creatorOf ;
      owl:allValuesFrom :Artefact 
   ] .

RDF 表单令人困惑的地方在于,它将 Persons 定义为所有具有 :creatorOf 属性到范围 :Artefacts 的事物的子类。

我对匿名类的技术解读是否正确:有一个类(方括号中的限制)定义了所有对 :Artefacts 具有 :creatorOf 属性的事物,并且 :Persons 是其中的一个子集,所以在换句话说,可能还有其他东西(如工厂装配线)可以创造人工制品,并且 :Persons 是这个集合的子集?

:Artefact 定义是“人工制品是由至少一个人创造的东西”,RDF 形式是:

:Artefact
  a owl:Class ;
  owl:equivalentClass
  [ a owl:Restriction ;
    owl:onProperty :createdBy ;
    owl:someValuesFrom :Person
  ] .

:Artefact 定义似乎与我对如何定义 :Person 类的解释相矛盾,因为它定义了除了属于 :Person 类的实体之外,没有其他实体创建的 :Artefacts。

因此,我不明白为什么我们要首先将 :Persons 定义为子集,然后将 :Artefacts 定义为当这两者明显耦合时的等效集合(没有人就没有人工制品)?

是的,有些 :Person 还没有创建任何 :Artefacts ,所以从 :Artefacts 到 :Persons 这是一个纯粹的单射函数,但我看不出这如何通过 :Person 的定义方式反映出来。

将这些组视为集合,我发现应该有一个通用的 :Persons 集合,其中包含具有 :creatorOf 属性的那些 :Persons 的子集。相反, :Persons 被定义为具有 :creatorOf 属性的那些事物的子集。我觉得这很令人困惑。

我研究过基本逻辑和集合论,但是在查看有关 *** 和 stackexchange 的其他问题和答案时,我发现在形式本体上苦苦挣扎的人似乎最渴望的是能够阐明论点的务实答案为什么事情是这样的。我正在学习一阶逻辑,但目前用它来解释 RDF 并不能帮助我理解这里的论证流程。提前感谢您的帮助!

【问题讨论】:

我同意你的评估,我认为这里的问题是示例,它只是展示了如何创建某种结构,但没有给出具有有趣语义的结构。但是我不知道如何回答这个问题:这个例子没有帮助,但是你在寻找更好的例子吗? 我在my blog 上写过关于 SubClassOf 和 EquivalentTo 的区别。 【参考方案1】:

你误解语义的地方是:

有一个类(方括号中的限制)定义了所有对 :Artefacts 具有 :creatorOf 属性的事物)

结构:

[] a owl:Restriction ;
  owl:onProperty :creatorOf ;
  owl:allValuesFrom :Artefact .

没有定义一个对:Artefact 具有:creatorOf 属性的类,而是这样的类,如果它们具有:creatorOf 属性(或其中几个)那么它是(或它们是)朝向:Artefact 的一个实例。人们属于这一类,因为如果他们创造了一些东西,那么它就是一个人工制品。

定义第一个子类关系并不强制所有人工制品都是由人创造的。构造:

[] a owl:Restriction ;
  owl:onProperty :createdBy ;
  owl:someValuesFrom :Person .

定义了至少由一个人创造的一类事物。所以第二条公理说所有的人工制品都是由至少一个人创造的,这是一种等价,所以所有由至少一个人创造的东西都是人工制品。

所以你可以拥有:

    乔,一个从不创造任何东西的人。他属于:Person,因此他属于[owl:onProperty :creatorOf; owl:allValuesFrom :Artefact]如果他创造了,那么这是一个人工制品)。可以说,他不是由:Person创建的,所以他不属于[owl:onProperty :createdBy; owl:someValuesFrom :Person],也不属于:Artefact。 树不会创建,所以它属于[owl:onProperty :creatorOf; owl:allValuesFrom :Artefact],但它既不是:Person,也不是:Artefact,也不是[owl:onProperty :createdBy; owl:someValuesFrom :Person]的成员。 Jim 木制的桌子。它不创建,所以它属于[owl:onProperty :creatorOf; owl:allValuesFrom :Artefact],但它不是:Person。它是:createdBy:Person,所以它属于[owl:onProperty :createdBy; owl:someValuesFrom :Person],所以它属于:Artifact。 Jim 是 :Person,他确实在创造事物。所以他创造的所有东西都是:Artefacts。可以说,他不是:createdBy:Person,所以他不是:Artefact。 WoodBot,一种制造家具的机器。它创造了东西,包括:Artefacts。当它创建一个:Artefact 时,它会在:Person 的帮助下完成它,否则它不是:Artefact。它有时会产生不是:Artefacts 的东西,所以它不可能是:Person。 WoodBot 可能是由 :Person 制作的,在这种情况下它是 :Artefact,但也可能是别的东西。 还有 CoBot,这是一个使用 :Person 协作制作物体的机器人。它创建的所有东西都是:Artefacts,所以它属于[owl:onProperty :creatorOf; owl:allValuesFrom :Artefact],但它不是:Person

【讨论】:

以上是关于OWL2等价与子类定义的实用解释的主要内容,如果未能解决你的问题,请参考以下文章

java多态怎么解释?

equals(), "== ",hashcode() 详细解释

在多元线性回归分析中,t检验与F检验有何不同?在一元线性回归分析中二者是不是有等价的作用?

编译执行 VS 解释执行

android Fragment与Activity交互,互相发数据(附图具体解释)

数据结构与算法分析 - 9 - 并查集(不相交集)