private static ResultSetRewindable test(ResultSetRewindable resultSet) { resultSet.reset(); ByteArrayOutputStream out = new ByteArrayOutputStream() ; BinRDF.writeResultSet(out, resultSet, true) ; resultSet.reset(); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()) ; ResultSet rs$ = BinRDF.readResultSet(in) ; ResultSetRewindable resultSet2 = ResultSetFactory.makeRewindable(rs$) ; // Includes bnode labels. ResultSetCompare.equalsExact(resultSet, resultSet2) ; resultSet.reset(); resultSet2.reset(); return resultSet2 ; }
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 ; }
public static void logResults(final String name, final ResultSetRewindable results) { if (_logger.isLoggable(Level.WARNING)) { _logger.warning(name + " (" + results.size() + ")"); results.reset(); final ByteArrayOutputStream out = new ByteArrayOutputStream(); ResultSetFormatter.output(out, results, ResultsFormat.FMT_RDF_TTL); _logger.warning("\n" + out.toString()); } } }
/** * 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(); }
/** * @param rsw * @param depth * @return true if there are more blanknodes */ public static boolean testResultSet(ResultSetRewindable rsw, int depth){ List<String> vars = new ArrayList<>(); vars.add("o0"); for (int i = 1; i <= depth; i++) { vars.add("o"+i); } while (rsw.hasNext()){ QuerySolution q = rsw.nextSolution(); if(!q.get("o0").isAnon()){ continue; }else{ if(!testOneQuerySolution(vars, q)){ rsw.reset(); return false; } } } rsw.reset(); return true; }
@Test public void test_RS_2() { ResultSetRewindable rs1 = makeRewindable("x", org.apache.jena.graph.NodeFactory.createURI("tag:local")) ; ByteArrayOutputStream arr = new ByteArrayOutputStream() ; ResultSetFormatter.outputAsXML(arr, rs1) ; rs1.reset() ; ByteArrayInputStream ins = new ByteArrayInputStream(arr.toByteArray()) ; ResultSet rs2 = ResultSetFactory.fromXML(ins) ; assertTrue(ResultSetCompare.equalsByTerm(rs1, rs2)) ; }
@Test public void test_RS_6() { ResultSetRewindable rs1 = make2Rewindable("x", org.apache.jena.graph.NodeFactory.createURI("tag:local")) ; ByteArrayOutputStream arr = new ByteArrayOutputStream() ; ResultSetFormatter.outputAsJSON(arr, rs1) ; rs1.reset() ; ByteArrayInputStream ins = new ByteArrayInputStream(arr.toByteArray()) ; ResultSet rs2 = ResultSetFactory.fromJSON(ins) ; // Test using the DAWG examples assertTrue(ResultSetCompare.equalsByTerm(rs1, rs2)) ; }
private void test_RS_fmt(ResultSet rs, ResultsFormat fmt, boolean ordered) { ResultSetRewindable rs1 = ResultSetFactory.makeRewindable(rs) ; ByteArrayOutputStream arr = new ByteArrayOutputStream() ; ResultSetFormatter.output(arr, rs1, fmt) ; byte bytes[] = arr.toByteArray() ; rs1.reset() ; ByteArrayInputStream ins = new ByteArrayInputStream(bytes) ; ResultSetRewindable rs2 = ResultSetFactory.makeRewindable(ResultSetFactory.load(ins, fmt)) ; // Ordered? Unordered? boolean b = ResultSetCompare.equalsByTerm(rs1, rs2) ; if ( ordered ) { rs1.reset() ; rs2.reset() ; b = b & ResultSetCompare.equalsByTerm(rs1, rs2) ; } if ( !b ) { System.out.println(new String(bytes)) ; rs1.reset() ; rs2.reset() ; ResultSetFormatter.out(rs1) ; ResultSetFormatter.out(rs2) ; } assertTrue(b) ; } // Test comparison
private static void logResults(final String name, final ResultSetRewindable results) { if (_logger.isLoggable(Level.WARNING)) { results.reset(); final StringBuilder sb = new StringBuilder(name + " (" + results.size() + ")="); while (results.hasNext()) { final QuerySolution result = results.nextSolution(); sb.append(result); } _logger.warning(sb.toString()); } if (_logger.isLoggable(Level.FINE)) { final ByteArrayOutputStream out = new ByteArrayOutputStream(); ResultSetFormatter.out(out, results); _logger.fine(out.toString()); } }
@Test public void test_RS_2_str() { ResultSetRewindable rs1 = makeRewindable("x", org.apache.jena.graph.NodeFactory.createURI("tag:local")) ; String x = ResultSetFormatter.asXMLString(rs1) ; rs1.reset() ; InputStream in = new ByteArrayInputStream(StrUtils.asUTF8bytes(x)); ResultSet rs2 = ResultSetFactory.fromXML(in) ; assertTrue(ResultSetCompare.equalsByTerm(rs1, rs2)) ; }
final QueryExecution exec = ...; final ResultSetRewindable r = ResultSetFactory.copyResults(exec.execSelect()); exec.close(); // Assuming slf4j if( logger.isDebugEnabled() ) { final ByteArrayOutputStream results = new ByteArrayOutputStream(); ResultSetFactory.out(results,r); r.reset(); logger.debug("Rendering query solution:\n{}", results); } // Continue on like you normally would
@Test public void test_RS_4() { ResultSetRewindable rs1 = makeRewindable("x", org.apache.jena.graph.NodeFactory.createURI("tag:local")) ; Model model = RDFOutput.encodeAsModel(rs1) ; rs1.reset() ; ResultSetRewindable rs2 = ResultSetFactory.makeRewindable(RDFInput.fromRDF(model)) ; boolean b = ResultSetCompare.equalsByTerm(rs1, rs2) ; if ( ! b ) { rs1.reset() ; rs2.reset() ; ResultSetFormatter.out(rs1) ; ResultSetFormatter.out(rs2) ; } assertTrue(b) ; }
@Test public void test_RS_peeking_7() { // Peeking may fail if someone moves backwards in the result set // If we hadn't moved pass the first item this should be safe ResultSetRewindable inner = makeRewindable("x", NodeFactory.createURI("tag:local")); ResultSetPeekable rs = ResultSetFactory.makePeekable(inner); assertTrue(rs.hasNext()); assertNotNull(rs.peek()); // Reset the inner result set independently inner.reset(); // Since we moved the underlying result set backwards but we hadn't gone anywhere // we should still be able to safely access the underlying results assertTrue(rs.hasNext()); }
private static void same(ResultSet rs1, ResultSet rs2, boolean result) { ResultSetRewindable rsw1 = ResultSetFactory.makeRewindable(rs1) ; ResultSetRewindable rsw2 = ResultSetFactory.makeRewindable(rs2) ; boolean b = ResultSetCompare.equalsByValue(rsw1, rsw2) ; if ( b != result) { System.out.println("Different: ") ; rsw1.reset() ; rsw2.reset() ; ResultSetFormatter.out(rsw1) ; ResultSetFormatter.out(rsw2) ; System.out.println() ; } assertTrue(b == result) ; }
@Test public void test_RS_cmp_5() { // Same variable, different values ResultSetRewindable rs1 = makeRewindable("x", org.apache.jena.graph.NodeFactory.createURI("tag:local:1")) ; ResultSetRewindable rs2 = makeRewindable("x", org.apache.jena.graph.NodeFactory.createURI("tag:local:2")) ; assertFalse(ResultSetCompare.equalsByTerm(rs1, rs2)) ; rs1.reset() ; rs2.reset() ; assertFalse(ResultSetCompare.equalsByTerm(rs1, rs2)) ; }
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 void main(String[] args) { FileManager.get().addLocatorClassLoader(ExampleARQ_02.class.getClassLoader()); Model model = FileManager.get().loadModel("data/data.ttl"); String queryString = "SELECT * { ?s ?p ?o }"; Query query = QueryFactory.create(queryString); QueryExecution qexec = QueryExecutionFactory.create(query, model); try { ResultSetRewindable results = ResultSetFactory.makeRewindable(qexec.execSelect()); System.out.println("---- XML ----"); ResultSetFormatter.outputAsXML(System.out, results); results.reset(); System.out.println("---- Text ----"); ResultSetFormatter.out(System.out, results); results.reset(); System.out.println("\n---- CSV ----"); ResultSetFormatter.outputAsCSV(System.out, results); results.reset(); System.out.println("\n---- TSV ----"); ResultSetFormatter.outputAsTSV(System.out, results); results.reset(); System.out.println("\n---- JSON ----"); ResultSetFormatter.outputAsJSON(System.out, results); results.reset(); } finally { qexec.close(); } }
ResultSetRewindable rsrw = ResultSetFactory.copyResults(rs); int size = rsrw.size(); rsrw.reset(); int i = 1; while(rsrw.hasNext()){ QuerySolution qs = rsrw.next(); if(qs.getResource("type").isURIResource()){ progressMonitor.learningProgressChanged(axiomType, i++, size);
public static boolean isEqual(ResultSet actual, ResultSet expected) { boolean isEqual = true; ResultSetRewindable act = null; ResultSetRewindable exp = null; if (expected != null) { // TODO File in JIRA issue: This impl is bugged (look at the code, // rs1 should be rs1a) act = ResultSetFactory.makeRewindable(actual); exp = ResultSetFactory.makeRewindable(expected) ; isEqual = ResultSetCompare.equalsByTerm(act, exp); act.reset(); exp.reset(); } if(!isEqual) { String eStr = ResultSetFormatter.asText(exp); System.out.println("Expected"); System.out.println("------"); System.out.println(eStr); String aStr = ResultSetFormatter.asText(act); System.out.println("Actual"); System.out.println("------"); System.out.println(aStr); } return isEqual; }
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; }