【问题标题】:Jena ARQ query execution extensionJena ARQ 查询执行扩展
【发布时间】:2016-02-13 19:09:40
【问题描述】:

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

【问题讨论】:

  • 这对于 StackOverflow 来说是相当模糊的。请使其更具体,例如什么是运营商?你试过什么?
  • 如果算子是提高执行力的算子,那么OpExt中有一个扩展点。如果运算符是 std SPARQL 中无法编写的,您也可以将其添加到那里。但是,只要正确添加操作符,然后修改 OpExecutor 可能会更容易。这样,您可以编写 SPARQL 代数并使用 SSE 函数读取它,并执行参见 QueryExecUtils。这些是内部类,您应该检查代码。 jena.apache.org/documentation/query/extension.html
  • 非常感谢您的建议,AndyS!是的,我们要添加的运算符不能用 std SPARQL 编写。据我所知,查询引擎将为给定的代数表达式生成一个执行计划并执行它。那么,通过添加新的算子和修改OpExecutor,是不是需要去触碰Plan类呢?
  • 无需接触计划——它不做决定,它只是执行操作和生成的迭代器的持有者。 (PlanBase 添加了少量的检查和管理迭代器关闭。)

标签: jena execution arq


【解决方案1】:

一个起点是查看使用SSE.parseOp 读写代数并使用QueryExecUtils 执行。

OpExecutor 是执行 SPARQL 代数的机制,如果您添加一个新的 Op 类型,那就是添加执行的地方。

【讨论】:

  • 非常感谢。这很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多