Подзапросы SPARQL оцениваются от самого внутреннего до внешнего. A значения блок во внешнем запросе недоступен для внутренних запросов. В качестве примера:
select ?x ?y ?z {
values ?x { "x" }
{ select (?x as ?y) ("z" as ?z) {} }
}
-----------------
| x | y | z |
=================
| "x" | | "z" |
-----------------
Если значение х были доступны во внутреннем запросе, то у будет иметь значение «х», но это не так? ,
С другой стороны, переплеты из значений блока в подзапроса может быть передан наружу, , если они выбраны. Например, в этом запросе подзапрос связывается х и у, но только проекты х:?
select ?x ?y {
{
select ?x {
values ?x { "x" }
values ?y { "y" }
}
}
}
-----------
| x | y |
===========
| "x" | |
-----------
Официальный ответ в спецификации, но не в части около значения. Он находится в 18.2.1 Variable Scope. Это не самая простая таблица, но следует отметить такие правила, как:
Группа {P1 P2 & hellip; }: v - это область видимости, если она находится в области видимости в одном или нескольких P1, P2, & hellip;
, что означает, что множество переменных в области видимости для шаблона { ... }
определяется как объединение переменных в области видимости вещей, которые появляются внутри в. Переменные получить «прошел» наружу к их вмещающим формам , А не наоборот.
Там одно исключения, что, я думаю, что это значения блока, который находится за внешний запрос, который, я думаю, это почти так же, как значения блока внутри внешнего запроса:
select ?x ?y ?yy {
{ select (?y as ?yy) {} }
}
values (?x ?y) { (1 2) }
--------------
| x | y | yy |
==============
| 1 | 2 | |
--------------