1

我正在尝试构建基于 rdf4j 和 FedX 的联合 RDF 应用程序。我需要的是能够:

  1. 优化查询计划和加入策略。
  2. 以联合方式公开不同的异构数据库(例如时间序列或关系数据库)。

我稍微浏览了一下 rdf4j 文档并掌握了。因此我有一些小问题:

  1. 是否有任何文档解释如何实现 SAIL API?我尝试使用 RDF 内存存储调试并遵循示例查询的执行流程,但我迷路了。
  2. 假设我想在我的数据中心公开一个关系数据库,我应该实现 SPARQL 存储库还是 HTTP 存储库?无论如何我应该实施 SAIL api 吗?
  3. 关于 fedX,我如何才能使用 SPARQL 1.1 联合查询中提出的 SERVICE 和 VALUES 术语?我怎样才能改变乔宁的策略?查询计划?

我知道如果我深入研究代码可以回答这个问题,但我想知道是否有人已经使用 rdf4j API 公开了某种数据库,或者甚至工作和调整了 RDF4J。

谢谢大家!

4

1 回答 1

1

是否有任何文档解释如何实现 SAIL API?我尝试使用 RDF 内存存储调试并遵循示例查询的执行流程,但我迷路了。

有一个基本的设计草案,但它不完整。一个更全面的 HowTo 已经在计划中了一段时间,但它从来没有完全得到它需要的优先级。

也就是说,我认为您不需要根据自己的想法实施自己的 SAIL。有很多现有的实现可以满足您的需求。

假设我想在我的数据中心公开一个关系数据库,我应该实现 SPARQL 存储库还是 HTTP 存储库?

我不明白这个问题。HTTPRepository 是 RDF4J 服务器的客户端代理。SPARQLRepository 是(非 RDF4J)SPARQL 端点的客户端代理。两者都与关系数据库无关。

无论如何我应该实施 SAIL api 吗?

这取决于您的用例,但我对此表示怀疑 - 至少在一开始就不正确。我可能会使用与 RDF4J 兼容的现有R2RML库,例如R2RML APICARML - 关系数据和三元存储之间的实时映射或离线批处理映射可能会解决您的问题。

关于 fedX,我如何才能使用 SPARQL 1.1 联合查询中提出的 SERVICE 和 VALUES 术语?

你不需要“让它成为可能”来做到这一点,FedX 开箱即用地支持这一点。

我怎样才能改变乔宁的策略?查询计划?

您不能(至少不容易),也不应该这样做。RDF4J 和 FedX 查询规划策略进行了大量研究和开发。我并不是说两者都是完美的,但你不太可能做得更好。

于 2020-03-23T01:12:00.597 回答