Library Version 12.1.3.0

Example5g.java: SPARQL query with PLAN query hint
Prev | Chapter 8. Quick Start for the RDF Graph Feature | Next

## Example5g.java: SPARQL query with PLAN query hint

This example shows the SPARQL query from Example5.java: SPARQL query with JOIN_METHOD with additional features including a PLAN setting (PLAN=encoded_plan), where you can specify the execution plan associated to the query patterns of this query. Further details on query hints can be found in Query hints.

    import com.hp.hpl.jena.query.*;
    import org.openjena.riot.Lang;
    import com.hp.hpl.jena.sparql.core.DatasetImpl;
    import java.net.URLEncoder;
    import oracle.rdf.kv.client.jena.*;

    public class Example5g
    {

      public static void main(String[] args) throws Exception
      {

    String szStoreName = args[0];
    String szHostName = args[1];
    String szHostPort = args[2];

        // Create connection
        OracleNoSqlConnection conn
            = OracleNoSqlConnection.createInstance(szStoreName,
                                                   szHostName,
                                                   szHostPort);

    // Create datasetgraph
    OracleGraphNoSql graph = new OracleGraphNoSql(conn);
    DatasetGraphNoSql datasetGraph = DatasetGraphNoSql.createFrom(graph);

    // Close graph, as it is no longer needed
    graph.close();

    // Clear dataset
    datasetGraph.clearRepository();

    // Load data from file into the dataset
    DatasetGraphNoSql.load("example.nt", Lang.NQUADS, conn,
                           "http://example.com");

    Dataset ds = DatasetImpl.wrap(datasetGraph);

    String plan = URLEncoder.encode("((qp2 qp3 NLJ) qp1 NLJ)", "UTF-8");

    String queryString =
    " PREFIX ORACLE_SEM_HT_NS: "                         +
    " <http://oracle.com/semtech#plan=" + plan + ">"     +
    " PREFIX foaf: <http://xmlns.com/foaf/0.1/>"         +
    " SELECT ?name1 ?name2 "                             +
    " WHERE { " +
    " graph <http://example.org/alice/foaf.rdf> { "      +
    "   ?person1 foaf:knows ?person2 . "                 +
    "   ?person1 foaf:name ?name1 . "                    +
    "   ?person2 foaf:name ?name2 . "                    +
    " } } ";

    System.out.println("Execute query " + queryString);

    Query query = QueryFactory.create(queryString);
    QueryExecution qexec = QueryExecutionFactory.create(query, ds);

    try {
          ResultSet results = qexec.execSelect();
          ResultSetFormatter.out(System.out, results, query);
        }

    finally {
          qexec.close();
        }

    ds.close();
    conn.dispose();
      }
    }

The following are the commands to compile and run this example, as well as the expected output of the java command.

    javac -classpath ./:./jena-core-2.7.4.jar:./jena-arq-2.9.4.jar: \
    ./sdordfnosqlclient.jar:./kvclient.jar:./xercesImpl-2.10.0.jar: \
    ./slf4j-api-1.6.4.jar:./slf4j-log4j12-1.6.4.jar:./log4j/1.2.16.jar: \
    ./jena-iri-0.9.4.jar:./xml-apis-1.4.01.jar Example5g.java

    javac -classpath ./:./jena-core-2.7.4.jar:./jena-arq-2.9.4.jar: \
    ./sdordfnosqlclient.jar:./kvclient.jar:./xercesImpl-2.10.0.jar: \
    ./slf4j-api-1.6.4.jar:./slf4j-log4j12-1.6.4.jar:./log4j/1.2.16.jar: \
    ./jena-iri-0.9.4.jar:./xml-apis-1.4.01.jar Example5g <store_name> \
    <host_name> <host_port>
    -------------------
    | name1   | name2 |
    ===================
    | "Alice" | "Bob" |
    -------------------

Prev | Up | Next
Example5e.java: SPARQL query with INFERENCE/ASSERTED ONLY hints | Home | Example6.java: SPARQL ASK query