@Override public QueryIterator execEvaluated( final Binding binding, PropFuncArg argSubject, Node predicate, PropFuncArg argObject, ExecutionContext execCxt) { // check subject is a variable. if (!argSubject.getArg().isVariable()) throw new QueryExecException("Subject not a variable"); final Var var = Var.alloc(argSubject.getArg()); if (!argObject.getArg().isLiteral()) throw new QueryExecException("Subject not a literal"); String searchTerm = argObject.getArg().getLiteralLexicalForm(); Search search = searchEngine(); Iterator<String> x = search.search(searchTerm); Iter<String> iter = Iter.iter(x); QueryIterator qIter = new QueryIterPlainWrapper( iter.map( (item) -> { return BindingFactory.binding(binding, var, NodeFactory.createURI(item)); })); return qIter; }