/** * Converts from JSON to internal Jena format. * * @param json * A JSON representation if a SPARQL query result. * @return A Jena ResultSet. */ public static ResultSetRewindable convertJSONtoResultSet(String json) { ByteArrayInputStream bais = new ByteArrayInputStream(json .getBytes(Charset.forName("UTF-8"))); // System.out.println("JSON " + json); return ResultSetFactory.makeRewindable(ResultSetFactory.fromJSON(bais)); }
@Override public ResultSetRewindable readFrom(Class<ResultSetRewindable> type, Type type1, Annotation[] antns, javax.ws.rs.core.MediaType mediaType, MultivaluedMap<String, String> httpHeaders, InputStream in) throws IOException { if (log.isTraceEnabled()) log.trace("Reading ResultSet with HTTP headers: {} MediaType: {}", httpHeaders, mediaType); // result set needs to be rewindable because results might be processed multiple times, e.g. to calculate hash and write response // TO-DO: construct Jena's ResultFormat and then pass to ResultSet.load(in, format) if (mediaType.isCompatible(com.atomgraph.core.MediaType.APPLICATION_SPARQL_RESULTS_XML_TYPE)) return ResultSetFactory.makeRewindable(ResultSetFactory.fromXML(in)); if (mediaType.isCompatible(com.atomgraph.core.MediaType.APPLICATION_SPARQL_RESULTS_JSON_TYPE)) return ResultSetFactory.makeRewindable(ResultSetFactory.fromJSON(in)); if (mediaType.isCompatible(com.atomgraph.core.MediaType.APPLICATION_SPARQL_RESULTS_CSV_TYPE)) return ResultSetFactory.makeRewindable(CSVInput.fromCSV(in)); if (mediaType.isCompatible(com.atomgraph.core.MediaType.APPLICATION_SPARQL_RESULTS_CSV_TYPE)) return ResultSetFactory.makeRewindable(TSVInput.fromTSV(in)); throw new IllegalStateException("ResultSet MediaType should be readable but no Jena reader matched"); }
private static void areIsomorphic(ResultSet x, ResultSet y) { ResultSetRewindable rs1 = ResultSetFactory.makeRewindable(x) ; ResultSetRewindable rs2 = ResultSetFactory.makeRewindable(y) ; // System.out.println(ResultSetFormatter.asText(rs1)); // System.out.println(); // System.out.println(ResultSetFormatter.asText(rs2)); // rs1.reset(); // rs2.reset(); Assert.assertTrue(ResultSetCompare.isomorphic(rs1, rs2)) ; }
private ResultSetRewindable make2Rewindable(String var, Node val) { ResultSet rs = make2(var, val) ; ResultSetRewindable rsw = ResultSetFactory.makeRewindable(rs) ; return rsw ; }
private ResultSetRewindable makeRewindable(String var, Node val) { ResultSet rs = make(var, val) ; ResultSetRewindable rsw = ResultSetFactory.makeRewindable(rs) ; return rsw ; }
private ResultSetRewindable makeRewindable(String var1, Node val1, String var2, Node val2 ) { ResultSet rs = make(var1, val1, var2, val2) ; ResultSetRewindable rsw = ResultSetFactory.makeRewindable(rs) ; return rsw ; }
@Override public ResultSet toResultSet() { QueryIterator qIter = iterator(null) ; ResultSet rs = new ResultSetStream(getVarNames(), null, qIter) ; rs = ResultSetFactory.makeRewindable(rs) ; qIter.close() ; return rs ; }
private final ResultSetRewindable realResultsHandler(final QueryResult bindings) { final ResultSetRewindable real = ResultSetFactory.makeRewindable(new SparqlDLResultSet(bindings, _model.getRawModel())); final List<?> realList = ResultSetFormatter.toList(real); if (realList.size() > 10) { if (_logger.isLoggable(Level.INFO)) _logger.log(Level.INFO, "Real=" + realList.subList(0, 9) + " ... " + realList.size()); } else if (_logger.isLoggable(Level.INFO)) _logger.info("Real=" + realList); real.reset(); return real; }
static ResultSet make(String... strings) { if ( strings.length == 0 ) throw new IllegalArgumentException() ; String x = StrUtils.strjoinNL(strings) ; Item item = SSE.parse(x) ; return ResultSetFactory.makeRewindable(BuilderResultSet.build(item)); }
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) ; }
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) ; }
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) ; }
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) ; }
private static ResultSetRewindable make(String ... strings) { String s = StrUtils.strjoinNL(strings) ; Item item = SSE.parse(s) ; ResultSetRewindable rs = ResultSetFactory.makeRewindable(BuilderResultSet.build(item)) ; return rs ; }
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 void testQuery(Dataset ds, String query, String queryName, int differences) { try(QueryExecution qe = QueryExecutionFactory.create(query, ds)) { ResultSetRewindable results = ResultSetFactory.makeRewindable(qe.execSelect()); Assert.assertEquals(queryName + " gave incorrect results", differences, results.size()); } }
private ResultSetRewindable executeSparqlSelect(Model model, String sparql, boolean lock) { Query query = QueryFactory.create(sparql); try(QueryExecution queryExec = QueryExecutionFactory.create(query, model)) { model.enterCriticalSection(lock); try { return ResultSetFactory.makeRewindable(queryExec.execSelect()); } finally { model.leaveCriticalSection(); } } }
private void isotest(String[] rs1$2, String[] rs2$2) { ResultSetRewindable rs1 = ResultSetFactory.makeRewindable(BuilderResultSet.build(SSE.parseItem(StrUtils.strjoinNL(rs1$)))) ; ResultSetRewindable rs2 = ResultSetFactory.makeRewindable(BuilderResultSet.build(SSE.parseItem(StrUtils.strjoinNL(rs2$)))) ; assertTrue(ResultSetCompare.isomorphic(rs1, rs2)) ; rs1.reset() ; rs2.reset() ; assertTrue(ResultSetCompare.equalsByTerm(rs1, rs2)) ; assertTrue(ResultSetCompare.equalsByValue(rs1, rs2)) ; }
private static void preserve_bnodes(Lang sparqlresultlang, Context cxt, boolean same) { ResultSetRewindable rs1 = ResultSetFactory.makeRewindable(BuilderResultSet.build(SSE.parseItem(StrUtils.strjoinNL(rs1$)))) ; ByteArrayOutputStream x = new ByteArrayOutputStream(); ResultsWriter.create().context(cxt).lang(sparqlresultlang).write(x, rs1); ByteArrayInputStream y = new ByteArrayInputStream(x.toByteArray()); ResultSetRewindable rs2 = ResultSetFactory.copyResults( ResultsReader.create().context(cxt).lang(sparqlresultlang).read(y) ); rs1.reset(); rs2.reset(); if ( same ) assertTrue(ResultSetCompare.equalsExact(rs1, rs2)); else assertFalse(ResultSetCompare.equalsExact(rs1, rs2)); }
@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) ; }