private int[] colWidths(ResultSetRewindable rs) { int numCols = rs.getResultVars().size() ; int numRows = 0 ; int[] colWidths = new int[numCols] ; // Widths at least that of the variable name. Assumes we will print col headings. for ( int i = 0 ; i < numCols ; i++ ) colWidths[i] = (rs.getResultVars().get(i)).length() ; // Preparation pass : find the maximum width for each column for ( ; rs.hasNext() ; ) { numRows++ ; QuerySolution rBind = rs.nextSolution() ; int col = -1 ; for ( String s1 : rs.getResultVars() ) { col++; String rVar = s1; String s = getVarValueAsString( rBind, rVar ); if ( colWidths[col] < s.length() ) { colWidths[col] = s.length(); } } } rs.reset() ; return colWidths ; }
/** * Creates new select results * * @param statement * Statement that created the result set * @param qe * Query Execution * @param results * SPARQL Results * @param commit * Whether a commit is necessary when the results are closed * @throws SQLException * Thrown if the arguments are invalid */ public MaterializedSelectResults(JenaStatement statement, QueryExecution qe, ResultSetRewindable results, boolean commit) throws SQLException { super(statement, qe, commit); if (results == null) throw new SQLException("SPARQL Results cannot be null"); this.innerResults = results; this.columns = new ArrayList<>(this.innerResults.getResultVars()); this.metadata = new SelectResultsMetadata(this, this.innerResults); this.innerResults.reset(); }
/** * Creates new select results * * @param statement * Statement that created the result set * @param qe * Query Execution * @param results * SPARQL Results * @param commit * Whether a commit is necessary when the results are closed * @throws SQLException * Thrown if the arguments are invalid */ public MaterializedSelectResults(JenaStatement statement, QueryExecution qe, ResultSetRewindable results, boolean commit) throws SQLException { super(statement, qe, commit); if (results == null) throw new SQLException("SPARQL Results cannot be null"); this.innerResults = results; this.columns = new ArrayList<>(this.innerResults.getResultVars()); this.metadata = new SelectResultsMetadata(this, this.innerResults); this.innerResults.reset(); }
int numCols = resultSetRewindable.getResultVars().size(); int[] colWidths = colWidths(resultSetRewindable);
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) ; }
public static Collection<Map<String, RDFNode>> results(final ResultSetRewindable rs) { rs.reset(); final List<String> vars = rs.getResultVars(); final Set<Map<String, RDFNode>> results = new HashSet<>(); while (rs.hasNext()) { final QuerySolution qs = rs.nextSolution(); final Map<String, RDFNode> result = new HashMap<>(); for (final String var : vars) result.put(var, qs.get(var)); results.add(solutionMap(qs, vars)); } return results; }
new ResultSetPart(x.getResultVars(), tmp.getAdded()), new ResultSetPart(y.getResultVars(), tmp.getRemoved()));
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) ; }
public static boolean assertEquals(final ResultSet expectedResults, final ResultSet computedResults) { final ResultSetRewindable expected = ResultSetFactory.makeRewindable(expectedResults); final ResultSetRewindable computed = ResultSetFactory.makeRewindable(computedResults); if (expected.size() != computed.size()) { logResults("Expected", expected); logResults("Real", computed); Assert.fail("Expected " + expected.size() + " but got " + computed.size()); } final List<String> vars = expected.getResultVars(); final Collection<Map<String, RDFNode>> results = results(computed); for (expected.reset(); expected.hasNext();) { final QuerySolution qs = expected.nextSolution(); final Map<String, RDFNode> map = solutionMap(qs, vars); if (!results.contains(map)) { logResults("Expected", expected); logResults("Real", computed); Assert.fail("Solution not found : " + map + "\tin results : " + results); Assert.fail("Expected " + expected.size() + " but got " + computed.size()); } } return true; }