Как игнорировать ЗНАЧЕНИЯ в SPARQL? - PullRequest
0 голосов
/ 02 мая 2018

Часть моего запроса выглядит примерно так:

  GRAPH g1: {VALUES (?ut) {$U1}
        ?IC_uri skos:related ?ut .
    }

Обычно, основываясь на пользовательском вводе, $U1 получает список URI. Я хотел бы отправить в целях тестирования значения для $U1, чтобы объявление значений игнорировалось и учитывались все возможные значения. Фактически, он должен давать такие же результаты, как:

  GRAPH g1: {
        # VALUES (?ut) {$U1}
        ?IC_uri skos:related ?ut .
    }

Я помню, что был способ сделать это, но я не смог найти его в спецификации SPARQL.

1 Ответ

0 голосов
/ 03 мая 2018

Я бы предложил три варианта:

  • FILTER (?ut IN ($ut)), передавая $ut вместо списка URI;
  • BIND ($ut as ?ut), передавая $ut вместо одного URI;
  • VALUES (?ut) {(UNDEF)}, передавая (UNDEF) вместо списка разделенных пробелами (заключенных в скобки) URI.

Такие инъекции SPARQL нельзя считать безопасными.

Ключевое слово UNDEF, впервые упомянутое в 10.2.2 VALUES Примеры :

Если переменная не имеет значения для конкретного решения в предложении VALUES, вместо термина RDF используется ключевое слово UNDEF.

...