Java-通过解析重写SPARQL查询

时间:2019-03-22 14:59:28

标签: java parsing jena

我正在尝试使用Jena或其他Java库来实现一些编码挑战(在这种情况下,是通过后顺序遍历进行重写)。我并没有要求将SPARQL转换为SQL查询的方法。我已经有了。

我目前正在尝试将给定的SPARQL查询转换为其他一些SQL查询。

到目前为止,我已经使用过Jena parser,在给定SPARQL查询的情况下,它返回一个ARQ树表示形式,可以按后序遍历它。这正是我想要做的。

唯一的问题是Walker仅穿过树。我想做的是这样的(假设我正在经历减号):

String visit(OpMinus minus){

    String l_res = minus.getLeft().visit();
    String r_res = minus.getRight().visit();

    /*

    ... do some stuff with the result ...

    */

    String res = l_res + "MINUS (" + r_res + ")";
    return res;
}

然而,耶拿(Jena)的访客返回了空白,这使得这不可能。还有另一种方法可以使它按照我想要的方式工作,而不是复制Walker和Visitor代码?谢谢。

我不是在寻找SPARQL到SQL的直接转换器,因为我需要使用树元素。

1 个答案:

答案 0 :(得分:0)

我最终通过实现自己的Walker(因为我要查找的任何东西都在Jena中实现了)解决了该问题,该Walker遍历树并返回Strings