如何在Blazegraph RDF中正确过滤IRI?SPARQL查询返回空集问题
SPARQL过滤IRI主语返回空集的解决方法
你在Blazegraph中执行SPARQL查询时,过滤对象(?g)包含"Svet"的语句能得到结果,但过滤主语(?y)包含"www"的语句却返回空集,核心原因是直接对IRI变量使用regex()函数时,数据库无法直接识别IRI的字符串内容。
正确的查询语句
SELECT ?y ?p ?g WHERE { ?y ?p ?g . FILTER regex(STR(?y), "www", "i") }
原因说明
SPARQL中,IRI类型的变量(比如作为主语的?y)默认以资源形式存在,而非字符串。使用STR(?y)函数可以将IRI转换为对应的字符串形式,之后regex()就能正确匹配字符串中的"www"字符了。之前的查询没有转换类型,数据库无法对IRI资源执行字符串正则匹配,因此返回空集。
内容的提问来源于stack exchange,提问作者Manik Arora
相关产品推荐
相关产品推荐

