我需要根据WHERE子句的相关数据位于链接开放数据云中的条件来查询本地Hibernate托管数据存储以获取持久化对象。有没有办法像RDF三元组一样读取Hibernate Session?
有没有办法将RDF作为RDF读取?如果是这样,我至少可以使用组合数据集来决定从Hibernate中检索哪些对象。
最好的解决方案会像我熟悉的那样,在Jena内部展示Hibernate Session。另外,我需要支持RDFS推理和SPARQL进行检索。
我需要根据WHERE子句的相关数据位于链接开放数据云中的条件来查询本地Hibernate托管数据存储以获取持久化对象。有没有办法像RDF三元组一样读取Hibernate Session?
有没有办法将RDF作为RDF读取?如果是这样,我至少可以使用组合数据集来决定从Hibernate中检索哪些对象。
最好的解决方案会像我熟悉的那样,在Jena内部展示Hibernate Session。另外,我需要支持RDFS推理和SPARQL进行检索。
这里是因为发布什么的问题,我发现:
有专门triplify Hibernate的Session没有现成的工具。为了实现我自己,我需要实现Graph或许使用GraphBase作为基础,或StageGenerator。因此,问题的答案是“没有一个”,所以我继续考虑如何实现它。
我需要决定是否对会话中已存在的对象进行升级(即已经被一些较早的查询访问过),依靠访问数据库或者同时执行这两个操作。如果进入数据库,我还需要决定是否加载整个对象,然后将其附加到会话中,或者使用投影来节省额外的数据到堆中,从而增加往返次数。
使用图表对于支持推理来说显然非常重要,尽管它比使用ARQs StageGenerator慢,因为它可以查询一组三重模式,但是这使得总是使用SPARQL非常重要,这似乎有点不灵活。
到目前为止,最佳的解决方案似乎是:
还有一个叫做OpExecutor的SPI可能有助于将FILTER分辨率推入数据库,从而进一步提高性能。
目前我已将此作为一个侧面项目,我可能将其作为LGPL软件发布。
由于您将使用Jena(和ARQ)来执行SPARQL查询,因此您可以使用自定义的FileManager
来解析Hibernate对象/图形(假设您希望每个对象都由图表表示)。
耶拿对使用FileManager
定位机型short HOWTO,和ARQ RDF dataset tutorial(见“描述数据集”一节),可给予一定的提示如何做图形URI的更加个性化的映射(以及那些内容图表作为RDF数据集)映射到您现有的Hibernate管理的数据。
另一种选择可能是创建映射到您现有的Hibernate架构的自定义SDB layout。我不知道在这方面SDB有多灵活。
当你说“查询你的本地数据存储”时,你的意思是Hibernate将执行查询,或者你的意思是你希望Jena对原始数据执行查询(并通过链接数据获取RDF来加入数据) ? SQL或SPARQL中是否存在WHERE子句? – 2009-08-04 05:43:45
我希望WHERE子句是用SPARQL编写的,所以Jena会负责。 – 2009-08-04 13:55:09