/** * Visits all models and flattens the NodeIterator returned by the visitor into * one. Returns null if all visitors return null. * * @param dataset * @param visitor * @param modelSelector * @return */ public static NodeIterator visitFlattenedToNodeIterator(Dataset dataset, ModelVisitor<NodeIterator> visitor, ModelSelector modelSelector) { NodeIterator it = null; for (Iterator<Model> modelIterator = modelSelector.select(dataset); modelIterator.hasNext();) { NodeIterator currentIt = visitor.visit(modelIterator.next()); if (it == null) { it = currentIt; } else { it.andThen(currentIt); } } return it; }