Example7.java: SPARQL Describe query

This example shows a SPARQL DESCRIBE query. It inserts triples that assert the following:

It then finds all relationships that involve any parents of Jack.

import com.hp.hpl.jena.graph.*;
import com.hp.hpl.jena.query.*;
import com.hp.hpl.jena.rdf.model.Model;
import oracle.rdf.kv.client.jena.*;

public class Example7
{
  
  public static void main(String[] args) throws Exception 
  {
    
String szStoreName   = args[0];
String szHostName    = args[1];
String szHostPort    = args[2];
String szModelName   = args[3];
    
// Create Oracle NoSQL connection
OracleNoSqlConnection conn 
          = OracleNoSqlConnection.createInstance(szStoreName,
                                                 szHostName, 
                                                 szHostPort);
    
// Create model from named graph
OracleModelNoSql model = 
                OracleModelNoSql.createOracleModelNoSql(szModelName,
                                                        conn);
    
// Clear model
model.removeAll();
    
// Get graph from model
OracleGraphNoSql graph = model.getGraph();
    
// Add triples

graph.add(Triple.create(Node.createURI("u:John"), 
                        Node.createURI("u:parentOf"),
                        Node.createURI("u:Mary")));
    
graph.add(Triple.create(Node.createURI("u:John"), 
                        Node.createURI("u:parentOf"),
                        Node.createURI("u:Jack")));
    
graph.add(Triple.create(Node.createURI("u:Amy"), 
                        Node.createURI("u:parentOf"),
                        Node.createURI("u:Jack")));
    
String szQuery = 
            "DESCRIBE ?x WHERE {?x <u:parentOf> <u:Jack>}";
    
System.out.println("Execute describe query " + szQuery);
    
Query query = QueryFactory.create(szQuery);
QueryExecution qexec = QueryExecutionFactory.create(query, model);
    
Model describeModel = qexec.execDescribe();
    
System.out.println("Describe result = " + describeModel.toString());
    
qexec.close();
describeModel.close();
    
model.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 Example7.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 Example7 <store_name> \
<host_name> <host_port> <graph_name>

Execute describe query DESCRIBE ?x WHERE {?x <u:parentOf> <u:Jack>}
Describe result = <ModelCom   {u:Amy @u:parentOf u:Jack; u:John 
@u:parentOf u:Mary; u:John @u:parentOf u:Jack} | >