微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用SPARQL查找两个属性不共享任何相同对象的实例?

如何解决如何使用SPARQL查找两个属性不共享任何相同对象的实例?

在我公司的分类法中,所有概念都具有 skos:prefLabel 的值,并且大多数概念都具有自定义属性的一堆值-我们将其称为 ex:keyword -其值的数据类型为 rdf:langString 。我想找到忽略大小写和语言时 skos:prefLabel 的值与 ex:keyword 的任何值都不完全匹配的概念。

为值确实匹配的概念编写查询非常简单,就像这样:

SELECT *
WHERE {
  ?concept skos:prefLabel ?label ;
    ex:keyword ?kw
  FILTER (lcase(str(?label)) = lcase(str(?kw)))
}

我被绊倒的地方是试图否定这一点。

在FILTER中使用!=只会返回?label ?kw 不匹配的一堆情况,这不是我要的米之后。

我想要的是能够使用FILTER NOT EXISTS,但这对于(?a = ?b)这样的表达式是无效的;它仅适用于{?a ?b ?c}之类的东西。

我怀疑在SPARQL中有一种表达FILTER NOT EXISTS (?a = ?b)的正确方法,但是我不知道它是什么。有人可以帮忙吗?

解决方法

诀窍是在FILTER NOT EXISTS中放置用于匹配关键字的三元模式,如下所示:

SELECT *
WHERE {
  ?concept skos:prefLabel ?label .
  FILTER NOT EXISTS { ?concept ex:keyword ?kw .
                      FILTER(lcase(str(?label)) = lcase(str(?kw))) 
                    }
}

此查询说:“我希望所有概念都带有preflabel,以便该概念没有与该prefLabel相匹配的关键字值”。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?