0

我是本体新手,有一个关于 OWL 推理的基本问题。这个问题可能看起来很啰嗦,对此感到抱歉..

考虑具有以下公理 (owl:class C1) 和 (owl:class P) 的本体,具有对象属性 (rdfs:domain observes C1)(rdfs:range observes P),以及个体 (rdf:type p P )

然后我通过创建具有限制的类 C2 (rdfs:subClassOf C2 C1) 来限制类 C1(观察 C2 p)

现在,当我创建一个新个体 (rdf:type x owl:Thing)(观察 xp)时,推理器会推断出 (rdf:type x C1)。然而,个体 x 的定义似乎更接近于 C2,所以推理者不应该推断 x 属于 C2 类型吗?

请帮忙!

我正在尝试使用 Jena 框架。

4

1 回答 1

2

没有发生这种情况的原因是您已经使用子类创建了限制,这意味着您已经创建了必要(但不充分)条件。换句话说,你对推理者这么说:

“如果一个人是 C2 类型,那么它必须有一个属性‘观察’”

但是您并没有反过来说:

“如果一个人有一个属性‘观察’,那么它必须是 C2 类型的”

为了让推理者能够推断出您的个人属于 C2 类型,您还必须具备第二条规则(充分条件)。您可以在 OWL 中通过owl:equivalentClass对您的限制使用关系(而不是rdfs:subClassOf关系)来执行此操作。

于 2012-07-29T05:59:28.487 回答