我想从RDF / XML文档中取出所有URI。在Jena Library中将RDF / XML转换为Model Class,然后为每个Model class语句提取每个主题,谓词和对象的URI(非null)对我有用吗?
Model read = ModelFactory.createDefaultModel().read(my_url);
StmtIterator si;
si = read.listStatements();
其中url是RDF / XML Web文档..
答案 0 :(得分:2)
正如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() );
}
}