在图形名称 SPARQL 中转义 <

Escaping < in graph name 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>

<> 在 URI 中是非法的,因此如果直接使用,解析器会感到不安。

CLEAR 可以被认为是 DELETE 的缩写形式,因此您可以尝试:

DELETE { GRAPH ?g { ?s ?p ?o } }
WHERE { GRAPH ?g { ?s ?p ?o } 
        FILTER (str(?g) = '<graph_name>')
      }