我想从 RDF/XML 文档中提取所有 URI。将 RDF/XML 转换为 Jena 库中的模型类,然后为该模型类的每个语句提取每个主题、谓词和宾语的 URI(非 null)对我有用吗?
Model read = ModelFactory.createDefaultModel().read(my_url);
StmtIterator si;
si = read.listStatements();
其中 url 是 RDF/XML Web 文档。
正如Javadoc所说,listStatements()
将列出模型中的所有语句——即三元组。
如果要列出所有URI,则需要考虑它们在 RDF 模型中出现的位置。您可能想要也可能不想要所有这些。对于给定的三元组 T,由主语、谓语和宾语组成:
所以(未经测试的代码):
Set<String> uris = new HashSet<String>();
for (StmtIterator i = model.listStatements(); i.hasNext(); ) {
Statement s = i.next();
if (!s.getSubject().isAnon()) {
uris.add( s.getSubject().getURI() );
}
uris.add( s.getPredicate().getURI() );
if (s.getObject().isResource() && !s.getResource().isAnon()) {
uris.add( s.getResource().getURI() );
}
}