警告!这个问题很重要,考虑到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文件中的这个概念?
答案 0 :(得分:2)
org.apache.jena.query.Dataset
是一个界面-有多种具有不同特征的实现。
DatasetFactory
生成各种数据集。 DatasetFactory.createTxnMem
是内存中的事务性数据集。可以使用文件的内容对其进行初始化,但是更新不会更改文件。
仅在JVM会话中存在内存。
如果希望数据和数据更改在会话之间持久存在,则可以使用TDB进行持久存储。尝试TDBFactory
或TDB2Factory
TDB(TDB1或TDB2)是三元数据库。
Fuseki
是三元组存储服务器。您可以将SPARQL请求发送到Fuseki(查询,更新,批量上传...)
您可以使用TDB数据库启动Fuseki(如果不存在,它将创建)
fuseki-server -tdb2 --loc DB /myData
“。tdb”不是Apache Jena使用的文件扩展名。数据库是文件目录。