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() );
}
}