在OWL中,是否可以查询没有属性的类?

时间:2012-12-17 21:08:58

标签: owl

OWL中,是否可以查询没有属性的类?

假设我有一个对象属性R,我想要检索所有没有属性R的类。另外,假设我已经用闭包关闭了所有类。

我正在尝试这个:

假设所讨论的问题是hasProperty,我的查询就是这个

hasProperty only Nothing

但它不起作用

2 个答案:

答案 0 :(得分:0)

“没有财产的班级”是什么意思?

从语义上讲,一个类是一组个体,一个属性是一组个体。鉴于这两组,“你有没有财产”是什么意思?

关于您的示例查询

hasProperty only Nothing

让我们重写一下,以便我们可以用自然语言来思考它。这样可以更好地直观了解此查询的含义。

首先让hasProperty重命名为follows(或任何英文动词),然后我们有:

follows only Nothing

这在语义上等同于

follows only (not Thing)

在语义上等同于

not (follows some Thing)

现在我们已经摆脱了only,这是OWL的一个令人困惑的部分,最好避免使用。所以现在我们可以用英语将查询用语言表达为:

those who do not follow anything

who does not follow anything?

或更正式

which individuals of the ontology are known
    not to have a follow relationship to any other individual

E.g。如果你的本体论述

John does not follow Mary.
John does not follow himself.
Every individual in the ontology is either John or is Mary.

然后John将是上述查询的答案。 如果所请求的限制适用于(命名的)个人组,您还可以将命名类作为查询答案。在任何情况下,必须满足以下条件:如果您声明答案(或其成员) 与某个人有follow - 关系,那么它将使本体不一致。

答案 1 :(得分:0)

OWL没有任何查询数据的方法。 SPARQL用于此目的。所以SPARQL查询找到没有属性的所有类定义:R将是:

SELECT ?cls
WHERE {
   ?cls a owl:Class .
   FILTER NOT EXISTS {?cls :R ?o}
}