2

假设我们有两个名为People和的类Disease。这些类由 Object Property 关联has

:People :has :Disease

People有子类(或个体)JohnDisease有子类(或个体)Cancer

:John a :People
:Cancer a :Disease

我们如何通过推理得到这些子类之间的关系?

:John :has :Cancer
4

1 回答 1

5

在您得到答案之前,您需要解决许多误解。

首先,子类和个体是非常不同的概念。个人(实例)是类的成员。子类表示一个类是另一个类的子集,这意味着(通过推理)暗示子类的所有成员都是(超)类的成员。(仅供参考:OWL 中没有继承的概念。)

第二类级别的属性,例如:People :has :Disease对类个人没有意义。定义属性与类的关系的方法是设置属性的域和范围。(仅用:has作属性名称表示存在多种误解,可能来自其他类型的语言。)所以我建议使用名称:hasDisease和断言:

:hasDisease rdfs:domain :People .
:hasDisease rdfs:range :Disease .

第三,您可以断言:John :hasDisease :Cancer并推断 John 患有疾病,因为它:Cancer是 的子类:Disease。这需要一个标准的 RDFS 推理器。此外,给定上述域和范围定义以及断言:Joy :hasDisease :Gout,RDFS 推理器将推断出:Joy a :Person:Gout a :Disease

您可以通过 Google 找到一些 OWL 入门书。我建议仔细阅读其中的一些内容,以基本了解 OWL 和推理配置文件的工作原理。

于 2016-05-10T18:44:23.677 回答