绑定到VALUES提供的内联数据和花括号

时间:2019-08-29 15:49:57

标签: sparql rdf wikidata blazegraph

我在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。为什么结果不同?

1 个答案:

答案 0 :(得分:2)

SPARQL的“自下而上的评估”通常可以通过其其他标签更好地理解,即“由内而外的评估”。也就是说,嵌套是从最内层到最外层进行评估的。

如果您翻转嵌套,则会看到the results you expected --

SET Money= '+ NewAmount +'