OWL 在 DL 查询中补充(NOT)
OWL complement in DL query (NOT)
OWL 使用开放世界假设。因此,如果我有 class 动物和 属性 吃(域动物,范围动物)鼠标、猫(吃鼠标)、狗,并且如果我声明 DL 查询实例 (Protege 5.2) 动物而不是 (吃了一些)结果是空的。
有什么方法可以用 Owl 进行此查询 return 鼠标和狗,例如让它以某种方式表现封闭的世界?
谢谢,
要点正如你暗示的那样:你以某种方式关闭了世界。 IE。目前你的 ontology 中没有任何推理者可以推断出 Dog
和 Mouse
不吃老鼠的东西。这可以通过以下方式实现:
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
.
OWL 使用开放世界假设。因此,如果我有 class 动物和 属性 吃(域动物,范围动物)鼠标、猫(吃鼠标)、狗,并且如果我声明 DL 查询实例 (Protege 5.2) 动物而不是 (吃了一些)结果是空的。
有什么方法可以用 Owl 进行此查询 return 鼠标和狗,例如让它以某种方式表现封闭的世界?
谢谢,
要点正如你暗示的那样:你以某种方式关闭了世界。 IE。目前你的 ontology 中没有任何推理者可以推断出 Dog
和 Mouse
不吃老鼠的东西。这可以通过以下方式实现:
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
.