rdf - 通过 Jena 库从 RDF/XML 文档中提取 URI

标签 rdf jena

我想从 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/

相关文章:

rdf - 使用 JENA 库和 Protege 更新 OWL 问题

java - 将数组作为参数传递给 Jena 内置函数

java - 从本体实例中提取数据属性值

java - 无法解决 Jena IRIFactory 的 NoClassDefFoundError

python - 使用 txt 文件作为输入创建 RDF 文件

lisp - 比较 Common Lisp 中 AllegroGraph Prolog 中的 RDF 文字

xml - 结构化格式的维基词典

tree - 用于折叠树分支的 SPARQL 查询(汇总拓扑)

python - 在 RDFLIB 中使用前缀

java - 为什么我无法使用插入查询耶拿数据集创建图形