使用 SPARQL replace 转为小写

Turn to lowercase using SPARQL replace

您好,我正在尝试简单地编写一个将字符串中的某些字母小写的函数,但没有成功。

这是我写的:

SELECT * 

WHERE {

    BIND (REPLACE ("HELLO", "L",  LCASE("[=10=]") ) AS ?var)

}

我回来“HELLO”。

我在此处 https://www.w3.org/TR/xpath-functions/#func-replace 遵循了“$x”的规范。

但是如果我写

SELECT * 

WHERE {

    BIND (REPLACE ("HELLO", "L",  LCASE("[=11=]HI") ) AS ?var)

}

我回来“HELhiLhiO”。

为什么 LCASE 不能应用于 $x

LCASE应用于字符串,然后将结果传递给REPLACE函数,就像写“function(1+2)”一样——函数get passed 3,不是 1+2.

所以 LCASE 不应用于 [=14=] 的值,而是应用于字符串“$0”。

LCASE("[=15=]HI") 是“$0hi”。

REPLACE 执行为:

REPLACE ("HELLO", "L", "[=10=]hi")

并且每个“L”都被“$0hi”替换,其中 $0 被替换为“L”。