Обработка пустых узлов в кунжуте
В Model.filter() я хотел бы хранить объекты. Но если объект является пустым узлом, я хотел бы получить соответствующую тройку и сохранить реальный объект.
Проблема в Model.filter() состоит в том, что если пустым узлом (объектом) является _:a, возвращаемое "значение" будет выглядеть примерно так :xxxxxxxxxxa. это нормально, но когда у меня (( xxxxxxxxxxa,p,o)) в модели, попытка использовать model.filter(_:xxxxxxxxxxa,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();
}
Заранее спасибо.