首页 > 解决方案 > OWL2等价与子类定义的实用解释

问题描述

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

让我们从上面的文档中举一个例子(部分: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 定义为当这两个明显耦合时的等效集合(没有人就没有人工制品)?

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

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

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

标签: rdfowlontologysemantics

解决方案


你误解语义的地方是:

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

那个工程:

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

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

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

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

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

所以你可以拥有:

  1. 乔,一个从不创造任何东西的人。他属于:Person,因此他属于[owl:onProperty :creatorOf; owl:allValuesFrom :Artefact]如果他创造了,那么它就是一个人工制品)。可以说,他不是由 a 创造的:Person,所以他不属于[owl:onProperty :createdBy; owl:someValuesFrom :Person],也不属于:Artefact
  2. 树不会创建,所以它属于[owl:onProperty :creatorOf; owl:allValuesFrom :Artefact],但它既不是 a:Person也不是 an :Artefact,也不是 的成员[owl:onProperty :createdBy; owl:someValuesFrom :Person]
  3. 一张桌子,由吉姆木头制作。它不创建,所以它属于[owl:onProperty :creatorOf; owl:allValuesFrom :Artefact],但它不是:Person. 它是:createdBy一个:Person,所以它属于[owl:onProperty :createdBy; owl:someValuesFrom :Person],所以它是一个:Artifact
  4. 吉姆是一个:Person创造事物的人。所以他创造的所有东西都是:Artefacts。可以说,他不是:createdBy一个:Person,所以他不是一个:Artefact
  5. WoodBot,一种制造家具的机器。它创造了东西,包括:Artefacts. 当它创建 a 时:Artefact,它会在 a 的帮助下完成它:Person,否则这个东西就不是 a :Artefact。它有时会制造不是:Artefacts 的东西,所以它不能是:Person。WoodBot 可能是由 a 制作的:Person,在这种情况下它是 a :Artefact,但它可能是其他东西。
  6. 还有 CoBot,这是一个协作制造物体的机器人:Person。它创建的所有东西都是:Artefacts,所以它属于[owl:onProperty :creatorOf; owl:allValuesFrom :Artefact],但它不是:Person

推荐阅读