OWL 在 DL 查询中补充(NOT)

OWL complement in DL query (NOT)

OWL 使用开放世界假设。因此,如果我有 class 动物和 属性 吃(域动物,范围动物)鼠标、猫(吃鼠标)、狗,并且如果我声明 DL 查询实例 (Protege 5.2) 动物而不是 (吃了一些)结果是空的。

有什么方法可以用 Owl 进行此查询 return 鼠标和狗,例如让它以某种方式表现封闭的世界?

谢谢,

要点正如你暗示的那样:你以某种方式关闭了世界。 IE。目前你的 ontology 中没有任何推理者可以推断出 DogMouse 不吃老鼠的东西。这可以通过以下方式实现:

Class: Animal
    DisjointUnionOf: 
        Cat, Dog, Mouse


Class: Cat
    EquivalentTo: 
        eats some Mouse
    SubClassOf: 
        Animal

Class: Dog
    SubClassOf: 
        Animal,
        eats only (not (Mouse))


Class: Mouse
    SubClassOf: 
        Animal,
        eats only (not (Mouse))

我写过一些在使用存在性 (some) 和通用性 (only) 属性 限制时可以避免开放世界假设问题的方法 here and here.

顺便说一句:您可能需要重新考虑 eats 上的域和范围限制。领域和范围限制的作用是,在这种情况下,无论何时,一个人吃另一个人,它都会推断出两个人都是 Animal 类型。这意味着如果 Mouse 类型的人吃奶酪,它将推断奶酪是 Animal.