【问题标题】:SPARQL query to find classes missing owl:AnnotationProperty "definition"SPARQL 查询以查找缺少 owl:AnnotationProperty “定义”的类
【发布时间】:2016-06-16 17:14:20
【问题描述】:

寻找一种在非常大的本体中返回所有缺少定义的类的结果的好方法。我在 Protege 5.0 中使用 SPARQL 查询。我也可以使用DL查询,但是我对这个不太熟悉。

我试图做一个过滤器正则表达式“定义”,但它什么也没返回。如果我最终得到了所有有定义的类,我怎么能扭转它来返回所有没有定义的类?

如有必要,我很乐意提供更多细节,但目前我想不出其他任何内容。

【问题讨论】:

    标签: regex sparql ontology protege


    【解决方案1】:

    如果您想查找没有特定属性值的资源,您可以按照以下查询进行操作。我不知道你正在使用什么定义属性(因为你没有在问题中提到它),所以你必须替换 在此查询包含您感兴趣的实际属性。

    select ?class {
      { ?class a owl:Class }
      minus
      { ?class <http://.../definition> ?def }
    }
    

    【讨论】:

    • 这个查询是绝对正确的,同样的结果——在这种情况下,但不是一般情况下——可以使用FILTER NOT EXISTS而不是MINUS来实现。
    • @IvoVelitchkov 是的,我的默认设置是使用过滤器不存在,但在some comments yesterday 之后,我已经有了减号的想法。
    • 我想知道,我们可以说“如果两个模式共享至少一个变量,MINUSFILTER NOT EXISTS 可以互换”是一个安全的规则吗?会不会有例外?相反,即使模式不共享变量,它们是否可以互换。我认为不是,但我不确定。
    • @IvoVelitchkov 我认为如果他们不共享一个变量,那么 MINUS 就不能删除任何东西,因为它基本上是在做一个连接,然后 removing 可连接的事物并保留其余部分,而不是保留 可连接的事物并删除其余部分。至于它们共享变量的情况,我认为它们不应该总是可以互换的(如果它们总是可以互换的,那么使用 MINUS 有什么意义呢?)。但是我并没有立即想到它们不可互换的例子。
    • 谢谢!这正是我想要的。
    猜你喜欢
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    相关资源
    最近更新 更多