1

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

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

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

4

1 回答 1

2

在大多数 SPARQL 实现中, No+不能用于字符串连接,原则上实现可以支持它作为扩展的运算符映射,但我不知道有任何这样做。

相反,您可以使用标准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)
}
于 2013-11-08T10:12:53.147 回答