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

时间:2019-12-24 21:24:35

标签: dataset sparql rdf jena triplestore

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

总体上我要构建的东西
我目前正在构建一个Spring应用,该应用将作为收集测量数据的系统的后端。
我想将信息存储在三重存储而不是RDBMS中。
因此,您可能会想到一个带有Jena库的Spring Boot应用程序。

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

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

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

1 个答案:

答案 0 :(得分:2)

org.apache.jena.query.Dataset是一个界面-有多种具有不同特征的实现。

DatasetFactory生成各种数据集。 DatasetFactory.createTxnMem是内存中的事务性数据集。可以使用文件的内容对其进行初始化,但是更新不会更改文件。

仅在JVM会话中存在内存。

如果希望数据和数据更改在会话之间持久存在,则可以使用TDB进行持久存储。尝试TDBFactoryTDB2Factory

TDB(TDB1或TDB2)是三元数据库。


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

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

fuseki-server -tdb2 --loc DB /myData

“。tdb”不是Apache Jena使用的文件扩展名。数据库是文件目录。

相关问题