我想从 RDF/XML 文档中提取所有 URI。是否将 RDF/XML 转换为耶拿图书馆中的模型类,然后为该 Model class 的每个语句提取每个主语、谓语和宾语的 URI(非空)会为我工作吗?
Model read = ModelFactory.createDefaultModel().read(my_url);
StmtIterator si;
si = read.listStatements();
其中 url 是 RDF/XML Web 文档..
最佳答案
作为Javadoc表示,listStatements()
将列出模型中的所有语句(即三元组)。
如果您想列出所有 URI,您需要考虑它们在 RDF 模型中出现的位置。您可能想要也可能不想要所有这些。对于给定的三元组 T,由主语、谓语和宾语组成:
- T 的主体将有一个 URI,除非它是匿名资源(bNode)
- T 的谓词将有一个 URI
- 如果 T 的对象是资源而不是文字,并且不是 bNode,则该对象将具有 URI
所以(未经测试的代码):
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() );
}
}
关于rdf - 通过 Jena 库从 RDF/XML 文档中提取 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12816560/