1

我有一个具有以下等价性的 OWL 类(以曼彻斯特表示法):

A and not (hasB some (B and (hasC some C) and (hasD some D) and (hasList some (OWLList and (hasContents some (OWLList and (hasContents some (E and (hasValue some integer[< 200]) and (hasType value "xsd:integer"^^string))) and (hasNext some EmptyList))) and (hasNext some EmptyList)))))

我希望对这个类强制执行封闭世界推理,以便任何不满足not语句后剩余条件的个人都将成为这个类的成员。

为此,我尝试使hasC,hasDhasList属性起作用,以便 OWL 知道不可能有这些属性的其他实例附加到此类。

不幸的是,该hasB属性可能不止一次出现,因此无法限制。为了尝试“关闭”课程的这一部分,我在课程中添加了一条oneOf语句,B指定了该B课程可能接受的所有可能的个人。

在我看来,功能属性和oneOf语句的这种组合应该成功地“关闭”类。谁能告诉我我做错了什么?

我正在使用http://owl-workshop.man.ac.uk/acceptedLong/submission_12.pdf提出的 OWLList 类和相关属性。

非常感谢。

4

2 回答 2

5

Stardog有一个称为完整性约束验证的功能,它为 OWL 添加了一个封闭世界的解释,以便能够将其用作验证语言。您可以在详细的语义细分中阅读有关如何完成此操作的更多信息。

我不确定验证部分是否是您想要的,但如果是这样,您可以立即使用 Stardog ICV。如果没有,语义可能会指出您如何精确地实现您需要的东西。

于 2014-03-04T13:16:28.363 回答
3

OWL 是建立在开放世界假设之上的,你无法真正绕过它。在某些情况下,您可以提供一些关于类的额外公理,以减少开放世界允许的可能性数量。例如,如果你有

{d} ⊑ ∃ hasValue 正好 1 {a, b, c}
a ≠ b
a ≠ c
b ≠ c

然后从hasValue(d,a),您可以推断出这两个:

¬hasValue(d,b)
¬hasValue(d,c)

你所要求的听起来更像是你想说的默认推理

如果使用标准 OWL 无法证明 X,则推断 ¬X。

这样做的困难在于您可以在 OWL 中同时表示正面和负面的陈述,并且当X和¬X都不能使用标准 OWL 证明时,您会遇到问题,因为在这种情况下,您会同时推断出¬X和 ¬ ¬X。

但是,您可以在这里做一些事情。如果您正在生成数据,则可以添加否定属性断言以明确声明某些特定关系不成立。这是编码有关您的域的某些子集的全部知识的一种方式。因此,如果那里有许多已知的 B,那么您可以为每个 B 断言 A 是否与每个 B 相关。

另一种选择是使用 SPARQL 查询数据并检查 A 是否与符合条件的 B 相关,如果不是,则添加一些额外的数据,以便 OWL 推理器得出您需要的推论。这并不难,但是如果推断出需要找到您正在寻找的 B 的任何其他关系,您仍然可能需要在 SPARQL 查询之前运行 OWL 推理器。

于 2014-03-03T18:33:37.850 回答