SPARQL 错误尝试使用已用变量附加过滤器

SPARQL error attempt to attach a filter with used variable

我正在尝试使用此查询同时提取有关 2 个基因的信息:

BASE <http://www.southgreen.fr/agrold/>
PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
PREFIX vocab:<vocabulary/>

SELECT DISTINCT ?gene ?gene_lbl ?pathway 
WHERE{
  VALUES ?gene {<http://identifiers.org/ensembl.plant/BGIOSGA000040>
                <http://identifiers.org/ensembl.plant/Sb01g003700.1>}
  {
    GRAPH ?graph1{
          OPTIONAL{?gene rdfs:label ?gene_lbl.}
    }
  }
  UNION
  {
    GRAPH ?graph2{
          OPTIONAL{?gene vocab:is_agent_in ?pathway.}
    }
  }
}

但它给了我以下错误:

Virtuoso 37000 Error SP031: SPARQL compiler: Internal error: sparp_gp_attach_filter_cbk(): attempt to attach a filter with used variable

当我 运行 它仅使用一个基因或当我删除 OPTIONAL 关键字时,它可以正常工作,有人可以向我解释这种行为背后的原因吗?

编辑 :

部分复杂性是因为这只是一个更大查询的示例。

@TallTed, thank you for you answer, when I apply your proposed method to extract more information I don't get the desired results. for instance in this example gene OB12G15100 encodes a protein, but it doesn't show up in the results unless if I comment the OPTIONAL of gene_lbl,据我所知,由于 gene_lbl 是可选的,它可以被忽略,因此,显示查询的其余部分的结果,但它没有这样做,我不知道为什么。

见识不足请见谅

我相信你的目标端点,现在 running a 3 year old version, should be encouraged to upgrade to the current Virtuoso Open Source Edition, 07.20.3229 a/k/a 7.2.5.1. Note that both your original query and my revision 在 LOD Cloud Cache 上执行时没有错误(它缺少 AgroLD 中的一些数据,所以这些不会提供你想要的结果)。

也就是说,我认为您的原始查询过于复杂。请注意 this revision gets results from AgroLD with no problem --

BASE <http://www.southgreen.fr/agrold/>
PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
PREFIX vocab:<vocabulary/>

SELECT DISTINCT ?gene ?gene_lbl ?pathway 
WHERE
  {
    VALUES ?gene { <http://identifiers.org/ensembl.plant/BGIOSGA000040> 
                   <http://identifiers.org/ensembl.plant/Sb01g003700.1> }
    OPTIONAL{ ?gene  rdfs:label  ?gene_lbl }
    OPTIONAL{ ?gene  vocab:is_agent_in  ?pathway }
}