Model.filter() にオブジェクトを格納したいと思います。しかし、オブジェクトが空のノードである場合は、対応するトリプルを取得して実際のオブジェクトを保存したいと考えています。
Model.filter() の問題は、空のノード (オブジェクト) が _:a の場合、返される「値」が:xxxxxxxxxxa のようなものになることです。これは問題ありませんが、モデルに ( :xxxxxxxxxxa,p,o) がある場合、model.filter(_:xxxxxxxxxxxa,null,null) を使用しようとすると失敗します。
java.util.NoSuchElementException
at org.openrdf.model.impl.AbstractModel$ValueSet$ValueSetIterator.
next(AbstractModel.java:493)
at org.openrdf.model.impl.AbstractModel$ValueSet$ValueSetIterator.next(AbstractModel.java:470)
これは、問題をより詳細に説明するソース コードです。
private Model triples;
private Value filterBySubjectAndPredicate(Resource subject, IRI Predicate, IRI nextPredicate) {
Value tempValue = triples.filter(subject, vf.createURI(Predicate.getFullIRI()), null).
objects().iterator().next();
BNode bnode = null;
if(tempValue instanceof BNode) {
bnode = vf.createBNode(tempValue.toString());
return triples.filter(bnode, vf.createURI(nextPredicategetFullIRI()), null).
objects().iterator().next();
} else
return triples.filter(subject, vf.createURI(Predicate.getFullIRI()), null).
objects().iterator().next();
}
前もって感謝します。