Apache Jena 有没有办法从当前模型中删除所有没有任何属性的资源?
我只找到了如何删除某些三元组,但没有找到诸如迭代资源、检查它们有多少属性等之类的东西。
它不存在,因为它不需要存在。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 查询。