/** * Build a result set from one of ARQ's lower level query iterator. * * @param queryIterator * @param vars * List of variables, by name, for the result set * @return ResultSet */ static public ResultSet create(QueryIterator queryIterator, List<String> vars) { return new ResultSetStream(vars, null, queryIterator); } }
private ResultSet asResultSet(QueryIterator qIter) { Model model = null ; if ( dataset != null ) model = dataset.getDefaultModel() ; else model = ModelFactory.createDefaultModel() ; ResultSetStream rStream = new ResultSetStream(query.getResultVars(), model, qIter) ; return rStream ; }
public static ResultSet readResultSet(TProtocol protocol) { Thift2Binding t2b = new Thift2Binding(protocol) ; List<String> varsNames = Var.varNames(t2b.getVars()) ; return new ResultSetStream(varsNames, null, t2b) ; }
public static ResultSet fromBIO(InputStream input) { // Scan the stream for VARS and accumulate the total variables. // Trade off of guessing first line is all the VARS and coping with // anything possible. -> Cope with anything possible. BindingInputStream bin = new BindingInputStream(input) ; List<Binding> bindings = new ArrayList<>() ; List<Var> vars = new ArrayList<>() ; while(bin.hasNext()) { Binding b = bin.next(); bindings.add(b) ; for ( Var v : bin.vars() ) { if ( ! vars.contains(v) ) vars.add(v) ; } } QueryIterator qIter = new QueryIterPlainWrapper(bindings.iterator()) ; return new ResultSetStream(Var.varNames(vars), m, qIter) ; } }
private static void dump(Table table) { System.out.println("Table: "+Lib.className(table)) ; QueryIterator qIter = table.iterator(null) ; ResultSet rs = new ResultSetStream(table.getVarNames(), null, table.iterator(null)) ; ResultSetFormatter.out(rs) ; } }
@Override public ResultSet toResultSet() { QueryIterator qIter = iterator(null) ; ResultSet rs = new ResultSetStream(getVarNames(), null, qIter) ; rs = ResultSetFactory.makeRewindable(rs) ; qIter.close() ; return rs ; }
private void worker(InputSource in, Model model) { if ( model == null ) model = GraphFactory.makeJenaDefaultModel() ; try { XMLReader xr = XMLReaderFactory.createXMLReader() ; xr.setFeature("http://xml.org/sax/features/namespace-prefixes", true) ; // ResultSetXMLHandler1 handler = new ResultSetXMLHandler1() ; ResultSetXMLHandler2 handler = new ResultSetXMLHandler2() ; xr.setContentHandler(handler) ; xr.parse(in) ; if ( handler.isBooleanResult ) { // Set superclass member set(handler.askResult) ; return ; } ResultSetStream rss = new ResultSetStream(handler.variables, model, new QueryIterPlainWrapper(handler.results.iterator())) ; // Set superclass member set(rss) ; } catch (SAXException ex) { throw new ResultSetException("Problems parsing file (SAXException)", ex) ; } catch (IOException ex) { throw new ResultSetException("Problems parsing file (IOException)", ex) ; } }
public static ResultSet build(Item item) { BuilderLib.checkTagged(item, Tags.tagResultSet, "Not a (resultset ...)") ; ItemList list = item.getList() ; List<Var> vars = BuilderNode.buildVarList(list.get(1)) ; // skip tag, skip vars. int start = 2 ; List<Binding> bindings = new ArrayList<>() ; for ( int i = start ; i < list.size() ; i++ ) { Item itemRow = list.get(i) ; Binding b = BuilderBinding.build(itemRow) ; bindings.add(b) ; } QueryIterator qIter = new QueryIterPlainWrapper(bindings.listIterator()) ; return new ResultSetStream(Var.varNames(vars), null, qIter) ; } }
static private SPARQLResult process(InputStream in, Model model, Context context) { if ( context == null ) context = ARQ.getContext(); RS_JSON exec = new RS_JSON(context); exec.parse(in); if ( model == null ) model = GraphFactory.makeJenaDefaultModel(); if ( exec.rows != null ) { QueryIterator qIter = new QueryIterPlainWrapper(exec.rows.iterator()); ResultSet rs = new ResultSetStream(Var.varNames(exec.vars), model, qIter); return new SPARQLResult(rs); } else return new SPARQLResult(exec.booleanResult); }
return new ResultSetStream(varNames, null, new TSVInputIterator(reader, vars));
private ResultSet make(String var, Node val) { BindingMap b = BindingFactory.create() ; b.add(Var.alloc(var), val) ; List<String> vars = new ArrayList<>() ; vars.add(var) ; QueryIterator qIter = QueryIterSingleton.create(b, null) ; ResultSet rs = new ResultSetStream(vars, null, qIter) ; return rs ; }
private static ResultSetRewindable unique(ResultSetRewindable results) { // VERY crude. Utilises the fact that bindings have value equality. List<Binding> x = new ArrayList<>() ; Set<Binding> seen = new HashSet<>() ; for ( ; results.hasNext() ; ) { Binding b = results.nextBinding() ; if ( seen.contains(b) ) continue ; seen.add(b) ; x.add(b) ; } QueryIterator qIter = new QueryIterPlainWrapper(x.iterator()) ; ResultSet rs = new ResultSetStream(results.getResultVars(), ModelFactory.createDefaultModel(), qIter) ; return ResultSetFactory.makeRewindable(rs) ; }
resultRs = new ResultSetStream(varNames, null, it);
private ResultSet make(String var1, Node val1, String var2, Node val2 ) { BindingMap b = BindingFactory.create() ; b.add(Var.alloc(var1), val1) ; b.add(Var.alloc(var2), val2) ; List<String> vars = new ArrayList<>() ; vars.add(var1) ; vars.add(var2) ; QueryIterator qIter = QueryIterSingleton.create(b, null) ; ResultSet rs = new ResultSetStream(vars, null, qIter) ; return rs ; }
resultRs = new ResultSetStream(varNames, null, it);
private ResultSet make2(String var, Node val) { BindingMap b1 = BindingFactory.create() ; b1.add(Var.alloc(var), val) ; BindingMap b2 = BindingFactory.create() ; b2.add(Var.alloc(var), val) ; List<String> vars = new ArrayList<>() ; vars.add(var) ; List<Binding> solutions = new ArrayList<>() ; solutions.add(b1) ; solutions.add(b2) ; QueryIterator qIter = new QueryIterPlainWrapper(solutions.iterator(), null) ; ResultSet rs = new ResultSetStream(vars, null, qIter) ; return rs ; }
public static ResultSet fromCSV(InputStream in) { CSVParser parser = CSVParser.create(in) ; final List<Var> vars = vars(parser) ; List<String> varNames = Var.varNames(vars) ; Function<List<String>, Binding> transform = new Function<List<String>, Binding>(){ private int count = 1 ; @Override public Binding apply(List<String> row) { if ( row.size() != vars.size() ) FmtLog.warn(log, "Row %d: Length=%d: expected=%d", count, row.size(), vars.size()) ; BindingMap binding = BindingFactory.create() ; // Check. for (int i = 0 ; i < vars.size() ; i++ ) { Var v = vars.get(i) ; String field = (i<row.size()) ? row.get(i) : "" ; Node n = NodeFactory.createLiteral(field) ; binding.add(v, n); } count++ ; return binding ; }} ; Iterator<Binding> bindings = Iter.map(parser.iterator(), transform) ; //Generate an instance of ResultSetStream using TSVInputIterator //This will parse actual result rows as needed thus minimising memory usage return new ResultSetStream(varNames, null, bindings); }
private ResultSetRewindable convertToStrings(ResultSetRewindable resultsActual) { List<Binding> bindings = new ArrayList<>() ; while(resultsActual.hasNext()) { Binding b = resultsActual.nextBinding() ; BindingMap b2 = BindingFactory.create() ; for ( String vn : resultsActual.getResultVars() ) { Var v = Var.alloc(vn) ; Node n = b.get(v) ; String s ; if ( n == null ) s = "" ; else if ( n.isBlank() ) s = "_:"+n.getBlankNodeLabel() ; else s = NodeFunctions.str(n) ; b2.add(v, NodeFactory.createLiteral(s)) ; } bindings.add(b2) ; } ResultSet rs = new ResultSetStream(resultsActual.getResultVars(), null, new QueryIterPlainWrapper(bindings.iterator())) ; return ResultSetFactory.makeRewindable(rs) ; }
QueryEngineMain engine = new QueryEngineMain(op, ds.asDatasetGraph(), BindingFactory.binding(), ARQ.getContext()); QueryIterator iter = engine.eval(op, ds.asDatasetGraph(), BindingFactory.binding(), ARQ.getContext()); ResultSetRewindable rs = ResultSetFactory.makeRewindable(new ResultSetStream(vars, ModelFactory.createDefaultModel(), iter)); if (expected != rs.size()) { engine = new QueryEngineMain(op, ds.asDatasetGraph(), BindingFactory.binding(), ARQ.getContext()); QueryIterator iterOpt = engine.eval(op, ds.asDatasetGraph(), BindingFactory.binding(), ARQ.getContext()); ResultSetRewindable rsOpt = ResultSetFactory.makeRewindable(new ResultSetStream(vars, ModelFactory .createDefaultModel(), iterOpt)); if (expected != rsOpt.size()) {