【问题标题】:Can an application directly program against GraphDB's underlying RDF4J database?应用程序可以直接针对 GraphDB 的底层 RDF4J 数据库进行编程吗?
【发布时间】:2016-11-07 14:06:46
【问题描述】:

根据the GraphDB documentation,可以直接针对其底层RDF4J 数据库进行编程。两个独立的应用程序可以同时访问相同的数据库文件,这违背了我的直觉。这是否正确处理,包括并发写入?

我相信 GraphDB 使用的是较旧的 Sesame 2.9 版本。文件格式是否随着最新的 RDF4J 2.1 版本而改变?还是我需要改用这个较旧的 Sesame 版本?

我假设,如果以上所有内容都正确,那么与 HTTP 连接相比,会有很大的性能提升。是否有任何测试结果可以支持这一点?

【问题讨论】:

    标签: sesame graphdb rdf4j


    【解决方案1】:

    我认为这里有些混乱。 GraphDB 没有“底层 RDF4J/Sesame 数据库”。实际上是反过来的:RDF4J/Sesame 为 RDF 数据库提供了一个标准化的 Java 访问 API,GraphDB 就是这个 API 的一个实现。

    您可以使用 Sesame API 以编程方式访问 GraphDB 存储,如 GraphDB 文档中所述。 Sesame 提供了访问本地数据库(嵌入在您自己的应用程序中)或远程数据库(可通过 HTTP 访问)的方法。正如您正确推测的那样,您不能使用多个应用程序在本地访问数据库 - 如果多个应用程序需要访问,您应该让两个应用程序通过 HTTP 访问数据库(或者让一个应用程序直接与另一个应用程序对话,但这需要很多自定义编码)。

    至于 Sesame 2.9 与 RDF4J,正如 @ChristophE 正确指出的那样,存在一些差异(有关详细信息,请参阅 migration guide),因此您的 GraphDB 版本可能还不能与 RDF4J 一起使用。然而,下一个即将发布的 GraphDB 版本将支持 RDF4J。

    至于性能:与直接访问相比,通过 HTTP 进行的通信自然会导致性能损失。恐怕我没有确切的数字给你。然而,Sesame/RDF4J 本身以及 GraphdB 都经过精心设计,以尽可能地减少这种损失,因此它并没有您想象的相当那么糟糕。

    【讨论】:

      【解决方案2】:

      我相信 GraphDB 使用的是较旧的 Sesame 2.9 版本。有文件 最新的 RDF4J 2.1 版本改变了格式?还是我需要使用 改用这个旧版的芝麻?

      Sesame 2.9 仍然使用 Java 7,Sesame 4 和 RDF4J 使用 Java 8

      文件格式没有改变,但编程 API 在 Sesame2 和 4 之间发生了相当大的变化,所以如果 GraphDB 真的使用 sesame 2.9,那么您需要使用相同的版本。

      更多信息请参见http://docs.rdf4j.org/migration/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-10-08
        • 2020-07-23
        • 1970-01-01
        • 1970-01-01
        • 2023-03-29
        • 2020-02-28
        • 1970-01-01
        • 2011-03-27
        相关资源
        最近更新 更多