我在WDQS上尝试了以下查询:
SELECT ?item ?itemLabel ?string ?StringLabel ?iri ?iriLabel
WHERE {
VALUES ?item { wd:Q1339 }
BIND( STR(?item) AS ?string ).
BIND( IRI(?string) AS ?iri ).
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
结果具有?string
和?iri
的值。但是,如果我在查询表达式中放了一对大括号
SELECT ?item ?itemLabel ?string ?StringLabel ?iri ?iriLabel
WHERE {
VALUES ?item { wd:Q1339 }
{
BIND( STR(?item) AS ?string ).
BIND( IRI(?string) AS ?iri ).
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
}
结果中的 ?string
和?iri
为空,似乎第一个BIND表达式中缺少?item
。为什么结果不同?
答案 0 :(得分:2)
SPARQL的“自下而上的评估”通常可以通过其其他标签更好地理解,即“由内而外的评估”。也就是说,嵌套是从最内层到最外层进行评估的。
如果您翻转嵌套,则会看到the results you expected --
SET Money= '+ NewAmount +'