-3

我在端点上尝试以下 SPARQL 查询,但它告诉我

Virtuoso 37000 错误 SP030:SPARQL 编译器,第 4 行:“选择”之前的“联合”处的语法错误

select ?uri, ?label where { quad map virtrdf:DefaultQuadMap { graph ?g { ?uri ?p ?label.FILTER (?label = 'biomass'@en) .}. values ?g {<BEFDATA>}}}
UNION
 select ?uri, ?label where { quad map virtrdf:DefaultQuadMap { graph ?g { ?uri ?p ? label.FILTER (?label = 'biomass'@en) .}. values ?g {<COPY>}}}
4

1 回答 1

3

你在哪个端点上运行这个?这有很大的不同。在您的查询中有很多不合法的 SPARQL(尽管它们可能会被 Virtuoso 端点接受)。例如: (i) 它使用未定义的前缀;(ii) 投影变量 ( ) 之间有逗号?uri, ?label;(iii)quad map ...不是 SPARQL 语法的一部分;等等

但是,您收到错误消息的主要问题是,它union应该出现在某些三元组模式之间,而不是两个查询之间。例如,你可以这样做:

prefix : <http://example.org/>

select ?person ?name where {
  { ?person :firstName ?name }
  union 
  { ?person :lastName ?name }
}

但你不会这样做

prefix : <http://example.org/>

select ?person ?name where { ?person :firstName ?name }
union 
select ?person ?name where { ?person :lastName ?name }
于 2014-04-30T14:45:17.967 回答