2

Apache Jena 有没有办法从当前模型中删除所有没有任何属性的资源?

我只找到了如何删除某些三元组,但没有找到诸如迭代资源、检查它们有多少属性等之类的东西。

4

1 回答 1

4

它不存在,因为它不需要存在。RDF 数据模型描述了一个基于三元组的图,其中主语和宾语映射到耶拿用语中的资源,谓词映射到属性。

没有任何属性的资源是不可能的,因此不需要存在删除此类资源的方法。

要迭代资源,请尝试使用listSubjects()listObjects()方法

要获取与特定资源关联的属性的数量,您可以使用该listStatements()方法获取 aStmtIterator然后计算该资源返回的语句,例如

//Assuming you have a Model in variable model
//Assuming you already have some Resource in variable res
StmtIterator stmts = model.listStatements(res, null, null);
int count = 0;
while (stmts.hasNext())
{
  count++;
  stmts.next();
}

如果您想一次计算各种事物(例如每个资源的属性数量),您可能希望使用 SPARQL 查询,例如

SELECT ?s (COUNT(?p) AS ?NumProperties)
WHERE { ?s ?p ?o } GROUP BY ?s

请参阅文档以了解如何运行 SPARQL 查询。

于 2012-07-23T19:07:49.183 回答