Как я могу преобразовать ElementFilter Expr в тип элемента в Sparql, используя Jena? - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть Visit метод класса ElementVisitorBase. Находясь в этом Visit методе, я хочу получить Filter выражение Element; затем я хочу преобразовать это Filter выражение в Element, чтобы я мог пройти по нему и найти, есть ли в этом Filter выражении предложение OPTIONAL. У меня есть код ниже,

public void visit(ElementFilter el) {
    Element ele = (Element) el.getExpr();
    ElementVisitorsub ev = new ElementVisitorsub();
    ElementWalker.walk(ele, ev);
}

Но я получаю ошибку, которая говорит: «Выражение не может быть преобразовано в элемент 'ele'". Кроме того, если я использую ElementFilter параметр "el" непосредственно для моего Walker следующим образом: ElementWalker.walk(el, ev), он зацикливается на бесконечность. Итак, какие-либо решения для этого?

Спасибо!

The Filter expression inside my initial Query is as follows.

FILTER (    (  EXISTS    {
     ?var1  <http://www.wikidata.org/prop/direct/P276>  ?var5 .
     ?var5  <http://www.wikidata.org/prop/direct/P31>  ?var6 .
     ?var5 ( <http://www.wikidata.org/prop/direct/P361> */ 
<http://www.wikidata.org/prop/direct/P131> *) 
<http://www.wikidata.org/entity/Q5061> .
    OPTIONAL {
     ?var5  <http://www.wikidata.org/prop/direct/P625>  ?var2 .
    }
   }
 ) 
)
...