2

我正在使用 Jena TDB 来持久化 RDF 数据。在此之前,我搜索了如何在 TDB 中持久化数据,并通过此链接解决了问题。Ryan 提供的答案清楚地提到了各种概念之间的区别,我对数据集的理解之一是:

Dataset 就像一个 DataSource,但它的三元组是静态的 - 你不希望添加新的或删除现有的。这些家伙是只读的

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

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

2 回答 2

1

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

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

于 2015-06-06T19:12:14.337 回答
0

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

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

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

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

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

于 2015-06-08T04:58:03.240 回答