Apache Rya has a few mechanisms to query data
Open a url to http://server/web.rya/sparqlQuery.jsp
. This simple form can run Sparql.
The War sets up a Web REST endpoint at http://server/web.rya/queryrdf
that allows GET requests with queries.
For this sample, we will assume you already loaded data from the Load Data tutorial
Save this file somewhere $RDF_DATA
Second, use the following Java code to load data to the REST endpoint:
import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; public class QueryDataServletRun { public static void main(String[] args) { try { String query = "select * where {\n" + "<http://mynamespace/ProductType1> ?p ?o.\n" + "}"; String queryenc = URLEncoder.encode(query, "UTF-8"); URL url = new URL("http://server/rdfTripleStore/queryrdf?query=" + queryenc); URLConnection urlConnection = url.openConnection(); urlConnection.setDoOutput(true); BufferedReader rd = new BufferedReader(new InputStreamReader( urlConnection.getInputStream())); String line; while ((line = rd.readLine()) != null) { System.out.println(line); } rd.close(); } catch (Exception e) { e.printStackTrace(); } } }
Compile and run this code above, changing the url that your Rdf War is running at.
Here is a code snippet for directly running against Accumulo with the code. You will need at least accumulo.rya.jar, rya.api, rya.sail.impl on the classpath and transitive dependencies. I find that Maven is the easiest way to get a project dependency tree set up.
Connector connector = new ZooKeeperInstance("instance", "zoo1,zoo2,zoo3").getConnector("user", "password"); final RdfCloudTripleStore store = new RdfCloudTripleStore(); AccumuloRyaDAO crdfdao = new AccumuloRyaDAO(); crdfdao.setConnector(connector); AccumuloRdfConfiguration conf = new AccumuloRdfConfiguration(); conf.setTablePrefix("rts_"); conf.setDisplayQueryPlan(true); crdfdao.setConf(conf); store.setRdfDao(crdfdao); ProspectorServiceEvalStatsDAO evalDao = new ProspectorServiceEvalStatsDAO(connector, conf); evalDao.init(); store.setRdfEvalStatsDAO(evalDao); InferenceEngine inferenceEngine = new InferenceEngine(); inferenceEngine.setRdfDao(crdfdao); inferenceEngine.setConf(conf); store.setInferenceEngine(inferenceEngine); Repository myRepository = new RyaSailRepository(store); myRepository.initialize(); String query = "select * where {\n" + "<http://mynamespace/ProductType1> ?p ?o.\n" + "}"; RepositoryConnection conn = myRepository.getConnection(); System.out.println(query); TupleQuery tupleQuery = conn.prepareTupleQuery( QueryLanguage.SPARQL, query); ValueFactory vf = SimpleValueFactory.getInstance(); TupleQueryResultHandler writer = new SPARQLResultsXMLWriter(System.out); tupleQuery.evaluate(new TupleQueryResultHandler() { int count = 0; @Override public void startQueryResult(List<String> strings) throws TupleQueryResultHandlerException { } @Override public void endQueryResult() throws TupleQueryResultHandlerException { } @Override public void handleSolution(BindingSet bindingSet) throws TupleQueryResultHandlerException { System.out.println(bindingSet); } }); conn.close(); myRepository.shutDown();