2009-07-27 62 views
0

我需要根据WHERE子句的相关数据位于链接开放数据云中的条件来查询本地Hibernate托管数据存储以获取持久化对象。有没有办法像RDF三元组一样读取Hibernate Session?

有没有办法将RDF作为RDF读取?如果是这样,我至少可以使用组合数据集来决定从Hibernate中检索哪些对象。

最好的解决方案会像我熟悉的那样,在Jena内部展示Hibernate Session。另外,我需要支持RDFS推理和SPARQL进行检索。

+0

当你说“查询你的本地数据存储”时,你的意思是Hibernate将执行查询,或者你的意思是你希望Jena对原始数据执行查询(并通过链接数据获取RDF来加入数据) ? SQL或SPARQL中是否存在WHERE子句? – 2009-08-04 05:43:45

+0

我希望WHERE子句是用SPARQL编写的,所以Jena会负责。 – 2009-08-04 13:55:09

回答

0

这里是因为发布什么的问题,我发现:

有专门triplify Hibernate的Session没有现成的工具。为了实现我自己,我需要实现Graph或许使用GraphBase作为基础,或StageGenerator。因此,问题的答案是“没有一个”,所以我继续考虑如何实现它。

我需要决定是否对会话中已存在的对象进行升级(即已经被一些较早的查询访问过),依靠访问数据库或者同时执行这两个操作。如果进入数据库,我还需要决定是否加载整个对象,然后将其附加到会话中,或者使用投影来节省额外的数据到堆中,从而增加往返次数。

使用图表对于支持推理来说显然非常重要,尽管它比使用ARQs StageGenerator慢,因为它可以查询一组三重模式,但是这使得总是使用SPARQL非常重要,这似乎有点不灵活。

到目前为止,最佳的解决方案似乎是:

  • 实现(可能是只读) 图 - 说“HibernateGraph”
  • 有无HibernateGraph检查 休眠PersistenceContext对象 并返回三倍在 自定义迭代器的头部。
  • 当迭代器使用 条件接口从数据库中加载页面 到期时。
  • 对于具有已知谓词 URI的URI映射到一列并使用 紧投影查询,否则加载 整个对象和迭代 吸气剂,映射吸气名称到 URI。
  • 在其他情况下,使用简单的方案来映射,例如每个主题的http://root/url/instances/EntityName/id
  • 创建帮助对象以允许 SPARQL使用自定义 StageGenerator执行。
  • StageGenerator应包装内置于StageGenerator中的 。
  • 在自定义阶段生成器中通过 查询除了 之外的其他图表,HibernateGraph向上创建了StageGenerator中的 。
  • 也跳过任何一组三重模式 ,没有优化 解决方案,例如任何一组模式。
  • 凡优化的查询可以是 实现,运行适当的 标准的功能和细胞通过细胞映射 结果作为三元组之前 。

还有一个叫做OpExecutor的SPI可能有助于将FILTER分辨率推入数据库,从而进一步提高性能。

目前我已将此作为一个侧面项目,我可能将其作为LGPL软件发布。

1

由于您将使用Jena(和ARQ)来执行SPARQL查询,因此您可以使用自定义的FileManager来解析Hibernate对象/图形(假设您希望每个对象都由图表表示)。

耶拿对使用FileManager定位机型short HOWTO,和ARQ RDF dataset tutorial(见“描述数据集”一节),可给予一定的提示如何做图形URI的更加个性化的映射(以及那些内容图表作为RDF数据集)映射到您现有的Hibernate管理的数据。

另一种选择可能是创建映射到您现有的Hibernate架构的自定义SDB layout。我不知道在这方面SDB有多灵活。

相关问题