Skip to content

Java Client API

Andrea Gazzarini edited this page Jul 19, 2015 · 2 revisions

The module solrdf-client contains a Java client that can be used to interact with SolRDF. This has been mainly designed for hiding, as much as possible,

  • the mixing of Jena (client side) and Solr (actually Solrj) code
  • the interaction (including low level communication details) with a running SolRDF

As the client API development is currently in progress, the content of this chapter will be adjusted / corrected / changed according with the latest changes.

Instantiating the remote proxy

The fully name of the proxy is (not surprisingly) org.gazzax.labs.solrdf.client.SolRDF. It can be instantiated (at the moment) with several options, depending on the architecture of the target running SolRDF instance(s):

SolRDF solrdf = SolRDF.newBuilder()
              .withEndpoint("http://127.0.0.1:8080/solr/store")
		      .withGraphStoreProtocolEndpointPath("/rdf-graph-store")
		      .withSPARQLEndpointPath("/sparql")
		      .build();

The example above uses all defaults value so in that case you could simply do:

final SolRDF solrdf = SolRDF.newBuilder().build();

In case SolRDF is running in SolrCloud mode, you can provide only the Zookeeper address(es):

SolRDF solrdf = SolRDF.newBuilder()
                      .withZkHost("192.168.1.132:2181")
                      .build();

The SolrCloud client is still under development

Adding data

Once you got a valid SolRDF reference as described above, you can use one of the add(...) methods:

void add(List<Statement> statements)   
void add(String uri, List<Statement> statements)      

void add(Statement [] statements)    
void add(String uri, Statement [] statements)    
  
void add(Statement statement)   
void add(String uri, Statement statement)   

void add(Resource subject, Property predicate, RDFNode object)     
void add(String uri, Resource subject, Property predicate, RDFNode object)   

void add(String url, String lang)   
void add(String graphUri, String url, String lang)

void add(InputStream stream, String lang)   
void add(String graphUri, InputStream stream, String lang)

void add(Reader charStream, String lang)     
void add(String graphUri, Reader charStream, String lang)   

For example:

solrdf.add(new FileReader("/usr/local/data/mydata.nt", "N-TRIPLES");

A complete list of all available Add scenarios can be found in the test case org.gazzax.labs.solrdf.client.AddTestCase (under the test folder)

Querying data

Following the same approach for adding data, you can use one of the "query" methods of the SolRDF proxy:

// SELECT
final ResultSet result = solrdf.select("SELECT * WHERE {?s ?p ?o} LIMIT 10");
      
// CONSTRUCT
final Model result = solrdf.construct("CONSTRUCT ...");

// DESCRIBE
final Model result = solrdf.describe("DESCRIBE ...");
    
// ASK
final boolean result = solrdf.ask("ASK ...");