public synchronized InputStreamHandle executeSelect(SPARQLQueryDefinition qdef, InputStreamHandle handle, Long offset, Long limit) { if (limit == null) { this.sparqlQueryManager.clearPageLength(); } else { this.sparqlQueryManager.setPageLength(limit); } if (offset != null) { return this.sparqlQueryManager.executeSelect(qdef, handle, offset, currentTransaction); } else { return this.sparqlQueryManager.executeSelect(qdef, handle, currentTransaction); } }
@Test public void testPagination() throws Exception { SPARQLQueryDefinition qdef1 = smgr.newQueryDefinition( "SELECT ?s ?p ?o FROM <" + graphUri + "> { ?s ?p ?o }"); qdef1.setIncludeDefaultRulesets(false); qdef1.setCollections(graphUri); long start = 1; smgr.setPageLength(1); JacksonHandle handle = new JacksonHandle(); handle.setMimetype(SPARQLMimeTypes.SPARQL_JSON); JsonNode results = smgr.executeSelect(qdef1, handle, start).get(); JsonNode bindings = results.path("results").path("bindings"); // because we set pageLength to 1 we should only get one result assertEquals(1, bindings.size()); String uri1 = bindings.get(0).get("s").get("value").asText(); smgr.setPageLength(2); results = smgr.executeSelect(qdef1, new JacksonHandle(), start).get(); // because we set pageLength to 2 we should get two results assertEquals(2, results.path("results").path("bindings").size()); start = 2; results = smgr.executeSelect(qdef1, new JacksonHandle(), start).get(); bindings = results.path("results").path("bindings"); // because we skipped the first result (by setting start=2) there are not enough // results for a full page, so size() only returns 1 assertEquals(1, bindings.size()); String uri2 = bindings.get(0).get("s").get("value").asText(); assertNotEquals(uri1, uri2); }
sparqlQmgr.setPageLength(1); String jsonStrResults = sparqlQmgr.executeSelect(qdef, new StringHandle(), 1, t).get(); ObjectMapper mapper = new ObjectMapper(); sparqlQmgr.setPageLength(1); String jsonStrResults2 = sparqlQmgr.executeSelect(qdef, new StringHandle(), 2, t).get(); sparqlQmgr.setPageLength(3); String jsonStrResults3 = sparqlQmgr.executeSelect(qdef, new StringHandle(), 2, t).get(); sparqlQmgr.setPageLength(2); String jsonStrResultsNeg1 = sparqlQmgr.executeSelect(qdef, new StringHandle(), 21, t).get(); sparqlQmgr.setPageLength(100); String jsonStrResultsNeg2 = sparqlQmgr.executeSelect(qdef, new StringHandle(), 100, t).get(); sparqlQmgr.setPageLength(-1); String jsonStrResultsNeg3 = sparqlQmgr.executeSelect(qdef, new StringHandle(), -1, t).get(); } catch (Exception e) {