【问题标题】:In OWL, is it possible to query a class that does not have a property?在 OWL 中,是否可以查询没有属性的类?
【发布时间】:2016-03-17 02:33:46
【问题描述】:

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

假设我有一个对象属性 R,并且我想检索所有不具有属性 R 的类。另外,假设我已经关闭了所有带有闭包的类。

我正在尝试这个:

假设有问题的属性是 hasProperty,我的查询是这样的

hasProperty only Nothing

但它不起作用

【问题讨论】:

  • “它不起作用”是什么意思?您是否收到错误消息?这是什么?
  • 它不会返回那些与属性 hasProperty 没有关系的类

标签: owl


【解决方案1】:

“没有属性的类”是什么意思?

在语义上,一个类是一组个体,一个属性是一组个体对。鉴于这两组,“类有/没有属性”是什么意思?

关于您的示例查询

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

例如如果你的本体声明

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

那么John 将是上述查询的答案。 如果要求的限制适用于(命名的)个人组,您还可以获得命名类作为查询答案。在任何情况下,必须满足以下条件:如果您断言答案(或其成员)确实与某个人有follow-关系,那么它将导致本体不一致。 p>

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-27
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      • 2012-08-23
      相关资源
      最近更新 更多