2016-02-13 54 views
0

我们正试图通过添加一个新的操作符来扩展jena ARQ。然而,现在我们不想从一开始就这样做,即从查询分析到查询执行的所有步骤。我们正在考虑手动重写执行计划,然后让ARQ执行重写的计划。我在网上做了一些搜索,但是,我找不到手动编辑执行计划的任何信息。我想知道是否有方法将计划写入文件并手动编辑文件,然后让ARQ从磁盘读取文件并执行它。这甚至有可能吗?任何人都可以给我一个关于如何开始这个问题的提示吗?Jena ARQ查询执行扩展

+0

这对StackOverflow来说相当模糊。请使它更具体,例如运营商是什么?你有什么尝试? – AndyS

+0

如果运营商是一个改进执行的运营商,那么在OpExt中有一个扩展点。如果操作符是不能写入标准SPARQL的东西,那么您也可以将它添加到那里。但是,只需正确添加运算符,然后修改OpExecutor可能会更容易。这样,您可以编写SPARQL代数并使用SSE函数读取它,并执行查看QueryExecUtils。这些是内部类,你应该检查代码。 https://jena.apache.org/documentation/query/extension.html – AndyS

+0

非常感谢您的建议,AndyS!是的,我们要添加的操作符不能写入std SPARQL中。据我所知,查询引擎会为给定的代数表达式生成一个执行计划并执行它。因此,通过添加新的操作符并修改OpExecutor,我们是否需要触摸Plan类? – sgao

回答

1

一个起点是用SSE.parseOp来阅读和编写代数,并用QueryExecUtils执行。

OpExecutor是执行SPARQL代数的机制,并且如果添加新的Op类型,那就是添加执行的位置。

+0

非常感谢。这有很大帮助。 – sgao