我正在尝试使用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的直接转换器,因为我需要使用树元素。
答案 0 :(得分:0)
我最终通过实现自己的Walker(因为我要查找的任何东西都在Jena中实现了)解决了该问题,该Walker遍历树并返回Strings