2

RDF/XML ドキュメントからすべての URI を抽出したいと考えています。RDF/XML を Jena Library のモデル クラスに変換し、そのモデル クラスの各ステートメントの各主語、述語、目的語の URI (null 以外) を抽出することはできますか??

    Model read = ModelFactory.createDefaultModel().read(my_url);
    StmtIterator si;
    si = read.listStatements();

ここで、url は RDF/XML Web ドキュメントです。

4

1 に答える 1

2

Javadocが言うようにlistStatements()、モデル内のすべてのステートメント (つまりトリプル) をリストします。

すべての URIをリストしたい場合は、それらが RDF モデルのどこにあるかを考慮する必要があります。これらすべてが必要な場合とそうでない場合があります。主語、述語、および目的語で構成される特定のトリプル T について、次のようにします。

  • 匿名リソース (bNode) でない限り、T のサブジェクトには URI があります。
  • 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() );
    }
}
于 2012-10-10T10:19:29.527 に答える