带有变量的SPARQL正则表达式

时间:2013-11-08 09:42:14

标签: regex rdf sparql

我正在尝试执行相对简单的正则表达式查询,但它在正则表达式中使用了一个变量。 sparql是不是能够使用这种串联,还是我使用了错误的方法?我想要查询的内容如下:

SELECT *
 WHERE {
    ?part local:part_start ?start .
    ?chunk local:long_region ?long_region   
    BIND(REPLACE(?long_region, ".{"+?start+"}(.{10}).*", "$1") AS ?regionX)
}

根据起始位置和最后10个字符,我将从长字符区域中得到一小部分。

1 个答案:

答案 0 :(得分:2)

在大多数SPARQL实现中,没有+不能用于字符串连接,原则上,实现可以支持extended operator mapping,但我不知道这样做。

相反,如果您使用符合CONCAT()标准的引擎,则可以使用标准SPARQL 1.1功能来实现目标:

SELECT *
 WHERE {
    ?part local:part_start ?start .
    ?chunk local:long_region ?long_region   
    BIND(REPLACE(?long_region, CONCAT(".{", ?start, "}(.{10}).*"), "$1") AS ?regionX)
}