在OWL中,是否可以查询没有属性的类?
假设我有一个对象属性R,我想要检索所有没有属性R的类。另外,假设我已经用闭包关闭了所有类。
我正在尝试这个:
假设所讨论的问题是hasProperty,我的查询就是这个
hasProperty only Nothing
但它不起作用
答案 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}
}