假设我们有两个名为People
和的类Disease
。这些类由 Object Property 关联has
。
:People :has :Disease
People
有子类(或个体)John
,Disease
有子类(或个体)Cancer
。
:John a :People
:Cancer a :Disease
我们如何通过推理得到这些子类之间的关系?
:John :has :Cancer
假设我们有两个名为People
和的类Disease
。这些类由 Object Property 关联has
。
:People :has :Disease
People
有子类(或个体)John
,Disease
有子类(或个体)Cancer
。
:John a :People
:Cancer a :Disease
我们如何通过推理得到这些子类之间的关系?
:John :has :Cancer
在您得到答案之前,您需要解决许多误解。
首先,子类和个体是非常不同的概念。个人(实例)是类的成员。子类表示一个类是另一个类的子集,这意味着(通过推理)暗示子类的所有成员都是(超)类的成员。(仅供参考: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 和推理配置文件的工作原理。