Экранирование <в имени графа SPARQL
Я случайно создал график с именем, которое начинается с <
и заканчивается >
,
Если я попытаюсь очистить график с сервера Virtuoso с помощью -
clear graph <graph_name>
-- или же --
clear graph <<graph_name>>
-- или же --
clear graph <\<graph_name\>>
-- это не работает. Все они дают похожие ошибки:
*** Error 37000: [Virtuoso Driver][Virtuoso Server]SQ074: Line 1: SPARQL compiler, line 1: syntax error at '<' before '<graph_name>
1 ответ
Решение
<
а также >
недопустимы в URI, поэтому парсер будет расстроен, если его использовать напрямую.
CLEAR можно рассматривать как краткую форму DELETE, поэтому вы можете попробовать:
DELETE { GRAPH ?g { ?s ?p ?o } }
WHERE { GRAPH ?g { ?s ?p ?o }
FILTER (str(?g) = '<graph_name>')
}