删除Apache Jena中没有属性的所有资源?

时间:2012-07-23 18:13:52

标签: api rdf jena

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

我只发现了如何删除某些三元组,但不是像迭代资源,检查它们有多少属性等等。

1 个答案:

答案 0 :(得分:3)

它不存在,因为不需要它存在。 RDF数据模型描述了一个基于三元组的图表,其中主题和对象映射到Jena用语中的Resources,谓词映射到属性。

没有任何属性的资源是不可能的,因此不需要一种方法来删除这些资源。

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

要获取与特定资源关联的属性数,您可以使用listStatements()方法获取StmtIterator,然后计算由此返回的语句。

//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查询,请参阅the documentation