【问题标题】:Persisting data in Jena TDB triple store在 Jena TDB 三重存储中持久化数据
【发布时间】:2015-06-06 11:27:08
【问题描述】:

我正在使用 Jena TDB 来持久化 RDF 数据。在此之前,我搜索了如何在 TDB 中持久化数据,并在link 遇到了问题。 Ryan 提供的答案清楚地提到了各种概念之间的区别,我得到的关于数据集的一点是:

"Dataset 类似于 DataSource,但它的三元组是静态的 - 您不希望添加新的或删除现有的。这些人是只读的 "

牢记这一点,我将一些 rdf 数据存储在数据集中的命名模型中。现在,当我尝试在其中存储/附加一些新数据时,它显然会覆盖以前的数据。所以,这显然与 Ryan 提到的相反,只读性质。 因此,我需要澄清的各个方面包括:

  1. Ryan 关于数据集的讨论是否正确?
  2. 如果对第 1 点的回答是肯定的,那么为什么我能够覆盖?
  3. TDB 在持久化数据之前检查重复。我之所以这样问,是因为我试图插入几个重复的 RDF 语句,并且我预计 rdf 语句的数量会增加,但数量并没有增加!

【问题讨论】:

  • “一个数据集就像一个数据源,但它的三元组是静态的——你不希望添加新的或删除现有的。这些人是只读的”这根本不正确. SPARQL标准包括UPDATEDELETE等,答案是2011年,也就是SPARQL更新发布前2年。

标签: rdf jena ontology triplestore tdb


【解决方案1】:

当插入同一个图表时,您不应期望三重计数会增加。我猜你正在处理 TDB 中的默认图。如果不是这种情况,您应该会感到惊讶,这很可能是由于底层三重存储中的错误造成的。在同一上下文中陈述同一事实的多个三元组只是多余的。

如果您的目的是从不同的上下文(例如不同的信息来源)收集事实,那么您可以将三元组存储在单独的图表中。事实上,大多数三合店都是四合店,您可以这样做。 TDB 是一个四元存储,您可以加载和使用多个图。阅读有关TDB datasets 的更多信息。

【讨论】:

    【解决方案2】:

    在收到反馈并调整 Jena 后,我发现所有问题的答案如下:

    1. Ryan 关于他关于数据集的讨论是否正确?

      从 Joshua 的评论和阅读 API 中我发现 Jena 框架已经改进了很多,所以 Ryan 关于数据集的解释不再有效。

    2. TDB 在持久化数据之前是否检查重复。我之所以这样问是因为我试图插入几个重复的 RDF 语句,并且我期望 rdf 语句的数量会增加,但数量没有增加!

      我试图在同一个命名图中插入重复的语句,但我没有发现计数有任何增加。我相信 TDB 没有检查重复(文档中没有提到),但是如果图中已经存在相同的语句,它会简单地用新语句替换现有语句。因此,它不会导致任何计数增加。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-14
      • 2015-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多