我正在尝试使用Jena或其他一些Java库来实现一些编码挑战(在这种情况下通过后序遍历进行重写)。我不是要求一种将SPARQL转换为SQL查询的方法。我已经有了。
我目前正在尝试将给定的SPARQL查询转换为其他一些SQL查询。
到目前为止,我已经使用了Jena parser,它给出了一个SPARQL查询,返回一个ARQ树表示,可以在后序中遍历。这正是我想要做的。
唯一的问题是Walker,只是穿过树。我想做的是这样的事情(假设我正在通过MINUS):
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;
}
然而,耶拿的访客返回无效,这使得这不可能。还有另一种方法吗,而不是复制沃克和访客代码,以使其按我想要的方式工作?谢谢。
我不是在寻找SPARQL到SQL的直接翻译器,因为我需要使用树元素。
我最终通过实现我自己的Walker解决了这个问题(因为我正在寻找的任何东西都是在Jena中实现的),它在后期遍历树并返回字符串