Apache Jena有没有办法从当前模型中删除所有没有任何属性的资源?
我只发现了如何删除某些三元组,但不是像迭代资源,检查它们有多少属性等等。
答案 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。