Java - 通过解析重写 SPARQL 查询
Java - SPARQL query rewriting through parsing
我正在尝试使用 Jena 或其他一些 Java 库来完成一些编码挑战(在本例中是通过 post 顺序遍历重写)。我不是在询问将 SPARQL 转换为 SQL 查询的方法。我已经有了。
我目前正在尝试将给定的 SPARQL 查询转换为其他一些 SQL 查询。
到目前为止,我已经使用 Jena parser,给定 SPARQL 查询,returns ARQ 树表示,可以按 post 顺序遍历。这正是我想要做的。
唯一的问题是 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;
}
但耶拿的访客 returns 无效,因此不可能。是否有另一种方法,而不是复制 Walker 和 Visitor 代码,以使其按我想要的方式工作?谢谢。
我不是在寻找 SPARQL 到 SQL 的直接转换器,因为我需要使用树元素。
我最终通过实现我自己的 Walker 解决了这个问题(因为我正在寻找的任何东西都是在 Jena 中实现的)它以 post-order 和 returns Strings[=10= 遍历树]
我正在尝试使用 Jena 或其他一些 Java 库来完成一些编码挑战(在本例中是通过 post 顺序遍历重写)。我不是在询问将 SPARQL 转换为 SQL 查询的方法。我已经有了。
我目前正在尝试将给定的 SPARQL 查询转换为其他一些 SQL 查询。
到目前为止,我已经使用 Jena parser,给定 SPARQL 查询,returns ARQ 树表示,可以按 post 顺序遍历。这正是我想要做的。
唯一的问题是 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;
}
但耶拿的访客 returns 无效,因此不可能。是否有另一种方法,而不是复制 Walker 和 Visitor 代码,以使其按我想要的方式工作?谢谢。
我不是在寻找 SPARQL 到 SQL 的直接转换器,因为我需要使用树元素。
我最终通过实现我自己的 Walker 解决了这个问题(因为我正在寻找的任何东西都是在 Jena 中实现的)它以 post-order 和 returns Strings[=10= 遍历树]