在 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();
}
先感谢您。