OWL:如何从super类的关系中继承两个类之间的属性关系?
OWL: How to get inheritance of property relations between two classes from those of superclasses?
假设我们有两个 类,名为 People
和 Disease
。这些 类 由对象 属性 has
关联。
:People :has :Disease
People
有子类(或个体)John
,Disease
有子类(或个体)Cancer
.
:John a :People
:Cancer a :Disease
如何通过推理得到这些sub类之间的关系?
:John :has :Cancer
在您得到答案之前,您需要解决一些误解。
首先,subclass和individual是截然不同的概念。个体(实例)是 classes 的成员。 Subclass 表示一个 class 是另一个 class 的子集,这意味着一个蕴涵(通过推理)是一个 subclass 的所有成员都是(super )class。 (仅供参考:OWL中没有继承的概念。)
第二 class 级属性,例如 :People :has :Disease
对 class 个人没有任何意义。定义属性与classes的关系的方法是设置属性的域和范围。 (仅使用 :has
作为 属性 名称表明存在广泛的误解,可能来自其他类型的语言。)所以我建议使用名称 :hasDisease
和断言:
:hasDisease rdfs:domain :People .
:hasDisease rdfs:range :Disease .
第三,假设 :Cancer
是 :Disease
的子 class,您可以断言 :John :hasDisease :Cancer
并推断约翰患有疾病。这需要一个标准的 RDFS 推理机。此外,鉴于上面的域和范围定义,以及断言 :Joy :hasDisease :Gout
,RDFS 推理器将推断出 :Joy a :Person
和 :Gout a :Disease
.
您可以通过 Google 找到一些 OWL 引物。我建议复习其中的一些内容,以基本了解 OWL 和推理配置文件的工作原理。
假设我们有两个 类,名为 People
和 Disease
。这些 类 由对象 属性 has
关联。
:People :has :Disease
People
有子类(或个体)John
,Disease
有子类(或个体)Cancer
.
:John a :People
:Cancer a :Disease
如何通过推理得到这些sub类之间的关系?
:John :has :Cancer
在您得到答案之前,您需要解决一些误解。
首先,subclass和individual是截然不同的概念。个体(实例)是 classes 的成员。 Subclass 表示一个 class 是另一个 class 的子集,这意味着一个蕴涵(通过推理)是一个 subclass 的所有成员都是(super )class。 (仅供参考:OWL中没有继承的概念。)
第二 class 级属性,例如 :People :has :Disease
对 class 个人没有任何意义。定义属性与classes的关系的方法是设置属性的域和范围。 (仅使用 :has
作为 属性 名称表明存在广泛的误解,可能来自其他类型的语言。)所以我建议使用名称 :hasDisease
和断言:
:hasDisease rdfs:domain :People .
:hasDisease rdfs:range :Disease .
第三,假设 :Cancer
是 :Disease
的子 class,您可以断言 :John :hasDisease :Cancer
并推断约翰患有疾病。这需要一个标准的 RDFS 推理机。此外,鉴于上面的域和范围定义,以及断言 :Joy :hasDisease :Gout
,RDFS 推理器将推断出 :Joy a :Person
和 :Gout a :Disease
.
您可以通过 Google 找到一些 OWL 引物。我建议复习其中的一些内容,以基本了解 OWL 和推理配置文件的工作原理。