根据GraphDB 文档,可以直接针对其底层 RDF4J 数据库进行编程。两个独立的应用程序可以同时访问相同的数据库文件,这违背了我的直觉。这是否正确处理,包括并发写入?
我相信 GraphDB 使用的是较旧的 Sesame 2.9 版本。文件格式是否随着最新的 RDF4J 2.1 版本而改变?还是我需要改用这个较旧的 Sesame 版本?
我假设,如果以上所有内容都是正确的,那么与 HTTP 连接相比,会有很大的性能提升。是否有任何测试结果可以支持这一点?
根据GraphDB 文档,可以直接针对其底层 RDF4J 数据库进行编程。两个独立的应用程序可以同时访问相同的数据库文件,这违背了我的直觉。这是否正确处理,包括并发写入?
我相信 GraphDB 使用的是较旧的 Sesame 2.9 版本。文件格式是否随着最新的 RDF4J 2.1 版本而改变?还是我需要改用这个较旧的 Sesame 版本?
我假设,如果以上所有内容都是正确的,那么与 HTTP 连接相比,会有很大的性能提升。是否有任何测试结果可以支持这一点?
我认为这里有点混乱。GraphDB 没有“底层 RDF4J/Sesame 数据库”。它实际上是反过来的:RDF4J/Sesame 为 RDF 数据库提供了一个标准化的 Java 访问 API,而 GraphDB 是这个 API 的一个实现。
您可以使用 Sesame API 以编程方式访问 GraphDB 存储,如 GraphDB 文档中所述。Sesame 提供了访问本地数据库(嵌入在您自己的应用程序中)或远程数据库(可通过 HTTP 访问)的方法。正如您正确推测的那样,您不能使用多个应用程序在本地访问数据库 - 如果多个应用程序需要访问,您应该让两个应用程序通过 HTTP 访问数据库(或者让一个应用程序直接与另一个应用程序对话,但这需要很多自定义编码)。
至于 Sesame 2.9 与 RDF4J,正如@ChristophE 正确指出的那样,存在一些差异(有关详细信息,请参阅迁移指南),因此您的 GraphDB 版本可能还不适用于 RDF4J。然而,下一个即将发布的 GraphDB 版本将支持 RDF4J。
至于性能:与直接访问相比,通过 HTTP 进行的通信自然会导致性能损失。恐怕我没有确切的数字给你。然而,Sesame/RDF4J 本身以及 GraphdB 都经过精心设计,以尽可能减少这种损失,所以它并没有你想象的那么糟糕。
我相信 GraphDB 使用的是较旧的 Sesame 2.9 版本。文件格式是否随着最新的 RDF4J 2.1 版本而改变?还是我需要改用这个较旧的 Sesame 版本?
Sesame 2.9 仍然使用 Java 7,Sesame 4 和 RDF4J 使用 Java 8
文件格式没有改变,但编程 API 在 Sesame2 和 4 之间发生了很大变化,所以如果 GraphDB 真的使用 sesame 2.9,那么您需要使用相同的版本。
有关更多信息,另请参阅http://docs.rdf4j.org/migration/