我正在寻找一种以不区分大小写的方式匹配声明值的方法。
例如,维基数据有以下声明:
wd:Q1524522 wdt:P2002 'bouletcorp'
但是,在case used in twitter之后,让我们说我会使用值Bouletcorp
代替,这将提供以下查询,并且无法找到任何匹配的实体:
SELECT ?item WHERE {
?item wdt:P2002 "Bouletcorp" .
}
(try it)
解决方案可能是使用带有不敏感案例标志的Regex,如下所示:
SELECT ?item WHERE {
?item wdt:P2002 ?twittername .
FILTER (regex(?twittername, "Bouletcorp", "i"))
}
(try it)
但这个查询效率会低多少?难道没有更好的方法吗?据我了解,此查询将使SPARQL引擎通过正则表达式传递具有所请求属性值的所有三元组,这听起来效率低下。对于P2002来说,情况并不那么缓慢,但我猜一些拥有超过一百万个匹配声明的属性可能会有问题,不是吗?