Допустимо ли использование BIND
?
# Query 1
SELECT * {
BIND (<http://ex/p2> as ?p)
{
BIND (<http://ex/p1> as ?p)
?s ?p ?o
}
}
При запуске на данных черепахи:
@prefix h: <http://ex/> .
h:s1 h:p1 h:o1 .
h:s2 h:p2 h:o2 .
arq 3.11.0 дает в результате:
-------------
| p | s | o |
=============
-------------
без выдачи ошибки (даже при использовании --strict
).
Но удаление группы или изменение порядка выдает ошибку:
# Query 2
SELECT * {
BIND (<http://ex/p2> as ?p)
BIND (<http://ex/p1> as ?p)
?s ?p ?o
}
BIND: Variable used when already in-scope: ?p in BIND(<http://ex/p1> AS ?p)
и
# Query 3
SELECT * {
{
BIND (<http://ex/p1> as ?p)
?s ?p ?o
}
BIND (<http://ex/p2> as ?p)
}
BIND: Variable used when already in-scope: ?p in BIND(<http://ex/p2> AS ?p)
Вопросы:
нарушает ли запрос 1 10.1 BIND , в котором говорится:
Переменная, введенная предложением BIND, не должна использоваться в
шаблон группового графа до точки использования в BIND.
Мое чтение 18.2.1 Переменная сфера
в запросе 1 переменная ?p
находится в области видимости внутри
внутренняя группа и, следовательно, также внутри области действия за пределами группы.
Будет ли сообщение об ошибке arq для Query 2 также применимо к
Запрос 1?
Буду признателен за разъяснения.