是否可以将内存中的 Jena 数据集存储为三重存储?

Is it possible to store an in-memory Jena Dataset as a triple-store?

警告!这个问题是一个问题,考虑到 RDF 系统,我带来了 0 XP,所以我无法在一个问题中表达这一点。请随意跳过前两段。

总体而言,我正在尝试构建什么
我目前正在构建一个 Spring 应用程序,它将作为收集测量值的系统的后端。
我想将信息存储在三重存储而不是 RDBMS 中。
因此,您可以想象一个添加了 Jena 库的 Spring 启动应用程序。

系统工作流程
关于我计划部署的方法。
1. 应用程序启动后 运行 它将创建或连接到现有的三重存储数据库。
2. POST 请求到达应用程序控制器。
3. 我使用 SPARQL 查询将新条目插入三重存储。
4. 存在其他 Controller/Service/DAO 方法来为三重存储上的 SELECT 查询提供 GET 请求。

*我提供如此详细的最终目标视图的唯一原因是避免将我的问题称为 XY 问题的答案。

实际问题
1. org.apache.jena.query.Dataset代表内存中的三重存储还是这种Dataset是完全不同的数据结构?
2. 如果数据集确实是三重存储,那么我如何存储这个内存中的数据集以便在以后的会话中检索它?
3. 如果确实可以存储数据集,那么有哪些选择?默认将数据集存储为扩展名为 .tdb 的文件吗?如果是这样,那么它的方法是什么? class?
4. 如果到目前为止我的猜测是正确的,那么 assemble 方法是否足以 "retrieve" 来自存储文件的三重存储? 5. 是否所有三重存储数据库都遵循这个概念,即存储在 .tdb 文件中?

org.apache.jena.query.Dataset是一个接口——有多种实现,各有特点。

DatasetFactory 制作各种数据集。 DatasetFactory.createTxnMem 是内存中的事务数据集。它可以用文件的内容初始化,但更新不会改变文件。

内存中仅存在于 JVM 会话中。

如果你希望数据和数据变化在会话间持久化,你可以使用TDB进行持久化存储。尝试 TDBFactoryTDB2Factory

TDB(TDB1 或 TDB2)是三层存储数据库。


Fuseki是三元组存储服务器。您可以向 Fuseki 发送 SPARQL 请求(查询、更新、批量上传……)

您可以使用 TDB 数据库启动 Fuseki(如果不存在则创建)

fuseki-server -tdb2 --loc DB /myData

".tdb" 不是 Apache Jena 使用的文件扩展名。数据库是一个文件目录。