/** Create a service request for remote execution over HTTP. The returned class, * {@link QueryEngineHTTP}, * allows various HTTP specific parameters to be set. * @param service Endpoint URL * @param query Query * @return Remote Query Engine */ static public QueryEngineHTTP createServiceRequest(String service, Query query) { return createServiceRequest(service, query, null) ; }
/** Create a QueryExecution that will access a SPARQL service over HTTP * @param service URL of the remote service * @param query Query to execute * @param client HTTP client * @return QueryExecution */ static public QueryExecution sparqlService(String service, Query query, HttpClient client, HttpContext httpContext) { checkNotNull(service, "URL for service is null") ; checkArg(query) ; return createServiceRequest(service, query, client, httpContext) ; }
/** Create a QueryExecution that will access a SPARQL service over HTTP * @param service URL of the remote service * @param query Query to execute * @param client HTTP client * @return QueryExecution */ static public QueryExecution sparqlService(String service, Query query, HttpClient client) { checkNotNull(service, "URL for service is null") ; checkArg(query) ; return createServiceRequest(service, query, client) ; }
/** Create a QueryExecution that will access a SPARQL service over HTTP * @param service URL of the remote service * @param query Query to execute * @param defaultGraph URI of the default graph * @param client HTTP client * @return QueryExecution */ static public QueryExecution sparqlService(String service, Query query, String defaultGraph, HttpClient client, HttpContext httpContext) { checkNotNull(service, "URL for service is null") ; // checkNotNull(defaultGraph, "IRI for default graph is null") ; checkArg(query) ; QueryEngineHTTP qe = createServiceRequest(service, query, client, httpContext) ; qe.addDefaultGraph(defaultGraph) ; return qe ; } /** Create a service request for remote execution over HTTP. The returned class,
@Override public SPARQLExecutionResult call() { Map<String, Set<String>> resultSet = new HashMap<>(); markers.forEach(marker -> resultSet.put(marker, new HashSet<>())); Model unionModel = ModelFactory.createDefaultModel(); SPARQLServiceConverter converter = new SPARQLServiceConverter(schema); String sparqlQuery = converter.getSelectQuery(query, inputSubset, rootType); logger.info(sparqlQuery); CredentialsProvider credsProvider = new BasicCredentialsProvider(); Credentials credentials = new UsernamePasswordCredentials(this.sparqlEndpointService.getUser(), this.sparqlEndpointService.getPassword()); credsProvider.setCredentials(AuthScope.ANY, credentials); HttpClient httpclient = HttpClients.custom() .setDefaultCredentialsProvider(credsProvider) .build(); HttpOp.setDefaultHttpClient(httpclient); Query jenaQuery = QueryFactory.create(sparqlQuery); QueryEngineHTTP qEngine = QueryExecutionFactory.createServiceRequest(this.sparqlEndpointService.getUrl(), jenaQuery); qEngine.setClient(httpclient); ResultSet results = qEngine.execSelect(); results.forEachRemaining(solution -> { markers.stream().filter(solution::contains).forEach(marker -> resultSet.get(marker).add(solution.get(marker).asResource().getURI())); unionModel.add(this.sparqlEndpointService.getModelFromResults(query, solution, schema)); }); SPARQLExecutionResult sparqlExecutionResult = new SPARQLExecutionResult(resultSet, unionModel); logger.info(sparqlExecutionResult); return sparqlExecutionResult; }
@Override public SPARQLExecutionResult call() { Map<String, Set<String>> resultSet = new HashMap<>(); markers.forEach(marker -> resultSet.put(marker, new HashSet<>())); Model unionModel = ModelFactory.createDefaultModel(); SPARQLServiceConverter converter = new SPARQLServiceConverter(schema); String sparqlQuery = converter.getSelectQuery(query, inputSubset, rootType); logger.info(sparqlQuery); CredentialsProvider credsProvider = new BasicCredentialsProvider(); Credentials credentials = new UsernamePasswordCredentials(this.sparqlEndpointService.getUser(), this.sparqlEndpointService.getPassword()); credsProvider.setCredentials(AuthScope.ANY, credentials); HttpClient httpclient = HttpClients.custom() .setDefaultCredentialsProvider(credsProvider) .build(); HttpOp.setDefaultHttpClient(httpclient); Query jenaQuery = QueryFactory.create(sparqlQuery); QueryEngineHTTP qEngine = QueryExecutionFactory.createServiceRequest(this.sparqlEndpointService.getUrl(), jenaQuery); qEngine.setClient(httpclient); ResultSet results = qEngine.execSelect(); results.forEachRemaining(solution -> { markers.stream().filter(solution::contains).forEach(marker -> resultSet.get(marker).add(solution.get(marker).asResource().getURI())); unionModel.add(this.sparqlEndpointService.getModelFromResults(query, solution, schema)); }); SPARQLExecutionResult sparqlExecutionResult = new SPARQLExecutionResult(resultSet, unionModel); logger.info(sparqlExecutionResult); return sparqlExecutionResult; }
/** Create a QueryExecution that will access a SPARQL service over HTTP * @param service URL of the remote service * @param query Query to execute * @param defaultGraphURIs List of URIs to make up the default graph * @param namedGraphURIs List of URIs to make up the named graphs * @param client HTTP client * @param httpContext HTTP Context * @return QueryExecution */ static public QueryExecution sparqlService(String service, Query query, List<String> defaultGraphURIs, List<String> namedGraphURIs, HttpClient client, HttpContext httpContext) { checkNotNull(service, "URL for service is null") ; // checkNotNull(defaultGraphURIs, "List of default graph URIs is null") ; // checkNotNull(namedGraphURIs, "List of named graph URIs is null") ; checkArg(query) ; QueryEngineHTTP qe = createServiceRequest(service, query, client) ; if ( defaultGraphURIs != null ) qe.setDefaultGraphURIs(defaultGraphURIs) ; if ( namedGraphURIs != null ) qe.setNamedGraphURIs(namedGraphURIs) ; return qe ; }
public static void main(String[] args) { FileManager.get().addLocatorClassLoader(ExampleARQ_01.class.getClassLoader()); String apikey = System.getenv("KASABI_API_KEY"); String queryString = "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>" + "PREFIX italy: <http://data.kasabi.com/dataset/italy/schema/>" + "SELECT ?region WHERE { " + " ?region rdf:type italy:Region" + "}"; Query query = QueryFactory.create(queryString); QueryEngineHTTP qexec = (QueryEngineHTTP)QueryExecutionFactory.createServiceRequest("http://api.kasabi.com/dataset/italy/apis/sparql", query); qexec.addParam("apikey", apikey); try { ResultSet results = qexec.execSelect(); while ( results.hasNext() ) { QuerySolution soln = results.nextSolution(); Resource region = soln.getResource("region"); System.out.println(region.getURI()); } } finally { qexec.close(); } }
@SuppressWarnings("unchecked") @Test public void query_service_context_application_02() { // This test requires us to set some authentication credentials for the // service Map<String, Context> serviceContextMap = (Map<String, Context>) ARQ.getContext().get(Service.serviceContext); if (serviceContextMap == null) { ARQ.getContext().put(Service.serviceContext, new HashMap<String, Context>()); serviceContextMap = (Map<String, Context>) ARQ.getContext().get(Service.serviceContext); } if (serviceContextMap.get(SERVICE) == null) { serviceContextMap.put(SERVICE, new Context(ARQ.getContext())); } Context serviceContext = serviceContextMap.get(SERVICE); try { HttpClient testClient = HttpClients.custom().build(); serviceContext.put(Service.queryClient, testClient); Query q = QueryFactory.create("ASK { }"); QueryEngineHTTP engine = QueryExecutionFactory.createServiceRequest(SERVICE, q); Assert.assertNotNull(engine); // Check that no settings were changed Assert.assertEquals(-1, engine.getTimeout1()); Assert.assertEquals(-1, engine.getTimeout2()); Assert.assertTrue(engine.getAllowCompression()); Assert.assertEquals(testClient, engine.getClient()); } finally { serviceContext.remove(Service.queryClient); } }
@Test public void query_service_context_application_01() { // This test requires no service context to be set @SuppressWarnings("unchecked") Map<String, Context> serviceContextMap = (Map<String, Context>) ARQ.getContext().get(Service.serviceContext); if (serviceContextMap != null) { serviceContextMap.remove(SERVICE); } Query q = QueryFactory.create("ASK { }"); QueryEngineHTTP engine = QueryExecutionFactory.createServiceRequest(SERVICE, q); Assert.assertNotNull(engine); // Check that no settings were changed Assert.assertEquals(-1, engine.getTimeout1()); Assert.assertEquals(-1, engine.getTimeout2()); Assert.assertTrue(engine.getAllowCompression()); Assert.assertNull(engine.getClient()); }
@SuppressWarnings("unchecked") @Test public void query_service_context_application_03() { // This test requires us to set some timeouts for the service Map<String, Context> serviceContextMap = (Map<String, Context>) ARQ.getContext().get(Service.serviceContext); if (serviceContextMap == null) { ARQ.getContext().put(Service.serviceContext, new HashMap<String, Context>()); serviceContextMap = (Map<String, Context>) ARQ.getContext().get(Service.serviceContext); } if (serviceContextMap.get(SERVICE) == null) { serviceContextMap.put(SERVICE, new Context(ARQ.getContext())); } Context serviceContext = serviceContextMap.get(SERVICE); try { serviceContext.put(Service.queryTimeout, "10"); Query q = QueryFactory.create("ASK { }"); QueryEngineHTTP engine = QueryExecutionFactory.createServiceRequest(SERVICE, q); Assert.assertNotNull(engine); // Check that no settings were changed Assert.assertEquals(-1, engine.getTimeout1()); Assert.assertEquals(10, engine.getTimeout2()); Assert.assertTrue(engine.getAllowCompression()); Assert.assertNull(engine.getClient()); } finally { serviceContext.remove(Service.queryTimeout); } }
@SuppressWarnings("unchecked") @Test public void query_service_context_application_04() { // This test requires us to set some timeouts for the service Map<String, Context> serviceContextMap = (Map<String, Context>) ARQ.getContext().get(Service.serviceContext); if (serviceContextMap == null) { ARQ.getContext().put(Service.serviceContext, new HashMap<String, Context>()); serviceContextMap = (Map<String, Context>) ARQ.getContext().get(Service.serviceContext); } if (serviceContextMap.get(SERVICE) == null) { serviceContextMap.put(SERVICE, new Context(ARQ.getContext())); } Context serviceContext = serviceContextMap.get(SERVICE); try { serviceContext.put(Service.queryTimeout, "10,20"); Query q = QueryFactory.create("ASK { }"); QueryEngineHTTP engine = QueryExecutionFactory.createServiceRequest(SERVICE, q); Assert.assertNotNull(engine); // Check that no settings were changed Assert.assertEquals(20, engine.getTimeout1()); Assert.assertEquals(10, engine.getTimeout2()); Assert.assertTrue(engine.getAllowCompression()); Assert.assertNull(engine.getClient()); } finally { serviceContext.remove(Service.queryTimeout); } }
@SuppressWarnings("unchecked") @Test public void query_service_context_application_05() { // This test requires us to set that GZip and Deflate are permitted Map<String, Context> serviceContextMap = (Map<String, Context>) ARQ.getContext().get(Service.serviceContext); if (serviceContextMap == null) { ARQ.getContext().put(Service.serviceContext, new HashMap<String, Context>()); serviceContextMap = (Map<String, Context>) ARQ.getContext().get(Service.serviceContext); } if (serviceContextMap.get(SERVICE) == null) { serviceContextMap.put(SERVICE, new Context(ARQ.getContext())); } Context serviceContext = serviceContextMap.get(SERVICE); try { serviceContext.put(Service.queryCompression, false); Query q = QueryFactory.create("ASK { }"); QueryEngineHTTP engine = QueryExecutionFactory.createServiceRequest(SERVICE, q); Assert.assertNotNull(engine); // Check that no settings were changed Assert.assertEquals(-1, engine.getTimeout1()); Assert.assertEquals(-1, engine.getTimeout2()); Assert.assertFalse(engine.getAllowCompression()); Assert.assertNull(engine.getClient()); } finally { serviceContext.remove(Service.queryCompression); } }