Sparql 绑定到由值和大括号提供的内联数据
我在上尝试了以下查询: 并且结果具有Sparql 绑定到由值和大括号提供的内联数据,sparql,rdf,wikidata,blazegraph,Sparql,Rdf,Wikidata,Blazegraph,我在上尝试了以下查询: 并且结果具有?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:labe
?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". }
}
}
结果中的?字符串
和?iri
为空,看起来好像第一个绑定表达式中缺少?项
。为什么结果不同?SPARQL的“自底向上评估”通常被其另一个标签更好地理解,即“由内而外评估”。也就是说,嵌套是从最内层到最外层进行计算的
如果你翻转嵌套,你会看到
“非正式地说,自底向上求值意味着(逻辑上)首先求值子查询和嵌套组。”From
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". }
}
}
SELECT ?item ?itemLabel ?string ?StringLabel ?iri ?iriLabel
WHERE
{
BIND( STR(?item) AS ?string ).
BIND( IRI(?string) AS ?iri ).
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
{
VALUES ?item { wd:Q1339 }
}
}