0

我有一个文件在 FOAF 的帮助下描述人们。在耶拿,我试图从配置文件中解析所有年龄,并注意到我的 listStatements 和 listObjectsOfProperty 给了我不同的结果。我无法从 javadocs 或其他文档中轻松找到任何帮助。

我有以下代码用于使用 listStatments 进行查询:

StmtIterator iter = this.foafmodel.listStatements(
     (Resource) null, 
     this.foafmodel.createProperty("http://xmlns.com/foaf/0.1/age"), 
     (RDFNode) null);

这是 listObjectsOfProperty 的代码:

Property foafAge = this.foafmodel.createProperty("http://xmlns.com/foaf/0.1/age");
NodeIterator iter = this.foafmodel.listObjectsOfProperty(foafAge);

在这种情况下,listStatements 迭代器迭代 38 次,而 listObjectsOfProperty 仅迭代 20 次。有人可以向我解释这两种实现之间有什么区别吗?

4

1 回答 1

2

让我们假设您的数据包含多个三元组,并且您的属性:p引用相同的 object :o,如下所示:

:s1 :p :o .
:s2 :p :o .

乍一看,在我看来,listObjectsOfProperty您的财产引用的所有个人都没有重复。我们可以通过深入研究依赖于. 该代码使用 a来聚合所有对象。因此,您应该只使用 element 返回一次迭代。GraphUtil#listObjects(...)Set<Node>:o

另一种方法,listStatements应该在每次使用该属性时返回给您一个语句/三元组。在上面的示例模型中,您将/应该得到两个结果,每个包含:p.

于 2014-04-14T14:33:02.340 回答