in commons-rdf-simple/src/main/java/org/apache/commons/rdf/simple/DatasetImpl.java [173:202]
public Stream<Quad> stream(final Optional<BlankNodeOrIRI> graphName, final BlankNodeOrIRI subject, final IRI predicate,
final RDFTerm object) {
final Optional<BlankNodeOrIRI> newGraphName;
if (graphName == null) {
// Avoid Optional<Optional<BlankNodeOrIRI>> ...
newGraphName = null;
} else {
newGraphName = graphName.map(g -> (BlankNodeOrIRI) internallyMap(g));
}
final BlankNodeOrIRI newSubject = (BlankNodeOrIRI) internallyMap(subject);
final IRI newPredicate = (IRI) internallyMap(predicate);
final RDFTerm newObject = internallyMap(object);
return getQuads(t -> {
if (newGraphName != null && !t.getGraphName().equals(newGraphName)) {
// This would check Optional.empty() == Optional.empty()
return false;
}
if (subject != null && !t.getSubject().equals(newSubject)) {
return false;
}
if (predicate != null && !t.getPredicate().equals(newPredicate)) {
return false;
}
if (object != null && !t.getObject().equals(newObject)) {
return false;
}
return true;
});
}