【问题标题】:Is it possible to store an in-memory Jena Dataset as a triple-store?是否可以将内存中的 Jena 数据集存储为三重存储?
【发布时间】:2019-12-24 21:24:35
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: dataset sparql rdf jena triplestore


    【解决方案1】:

    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 使用的文件扩展名。数据库是文件的目录。

    【讨论】:

      猜你喜欢
      • 2015-06-18
      • 1970-01-01
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      • 2012-10-09
      • 1970-01-01
      相关资源
      最近更新 更多