Ошибка SPARQL при подключении фильтра с использованной переменной - PullRequest
0 голосов
/ 24 августа 2018

Я пытаюсь извлечь информацию о 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 ОшибкаSP031: Компилятор SPARQL: Внутренняя ошибка: sparp_gp_attach_filter_cbk (): попытка присоединить фильтр с использованной переменной

. Он работает без проблем, когда я запускаю его с использованием только одного гена ИЛИ, когда я удаляю ключевое слово OPTIONALМожет кто-нибудь объяснить мне причину этого поведения?

  • Конечная точка Виртуоз версия: 07.10.3211

РЕДАКТИРОВАТЬ :

Часть сложности связана с тем, что это всего лишь пример более крупного запроса.

@ TallTed , спасибо за ответ, когда яприменить предложенный метод для получения дополнительной информации я не получаю желаемых результатов.например, в этом примере ген OB12G15100 кодирует белок, но он не обнаруживается в результатах, если только если я прокомментирую ФАКУЛЬТАТИВНО для gene_lbl , насколько я знаю,поскольку gene_lbl является необязательным, его можно игнорировать, следовательно, показывая результаты остальной части запроса, но это не так, и я не знаю почему.

Пожалуйста, прости меня за недостаток знаний.

1 Ответ

0 голосов
/ 24 августа 2018

Я считаю, что ваша целевая конечная точка, теперь с 3-летней версией , должна поощряться к обновлению до текущей версии Virtuoso Open Source Edition, 07.20.3229 a / k / a 7.2.5.1.Обратите внимание, что и ваш исходный запрос и моя ревизия выполняются без ошибок в LOD Cloud Cache (в котором отсутствуют некоторые данные в AgroLD, поэтому они не дают желаемых результатов).

Тем не менее, я думаю, что ваш исходный запрос излишне сложен.Обратите внимание, что эта версия без проблем получает результаты от AgroLD -

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 }
}
...