WARNING! This URL (in the Main cluster) is no longer the authoritative source for this page; it has been moved to the VOS or ODS cluster as appropriate instead.
See Tim Haynes in case of confusion.
Virtuoso Jena Provider - SPARQL Example 13
import com.hp.hpl.jena.query.*;
import com.hp.hpl.jena.graph.Triple;
import com.hp.hpl.jena.graph.Node;
import com.hp.hpl.jena.graph.Graph;
import com.hp.hpl.jena.graph.test.*;
import com.hp.hpl.jena.rdf.model.*;
import com.hp.hpl.jena.rdf.model.RDFNode;
import com.hp.hpl.jena.vocabulary.RDFS;
import java.util.*;
import virtuoso.jena.driver.*;
public class VirtuosoSPARQLExample13 {
/**
* Executes a SPARQL query against a virtuoso url and prints results.
*/
public static void main(String[] args)
{
String url;
if(args.length == 0)
url = "jdbc:virtuoso://localhost:1111";
else
url = args[0];
/*** LOADING data to http://exmpl13 graph ***/
VirtModel mdata = VirtModel.openDatabaseModel("http://exmpl13", url, "dba", "dba");
mdata.removeAll();
Statement st;
st = statement(mdata, "http://localhost:8890/dataspace http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://rdfs.org/sioc/ns#Space" );
mdata.add(st);
st = statement(mdata, "http://localhost:8890/dataspace http://rdfs.org/sioc/ns#link http://localhost:8890/ods");
mdata.add(st);
st = statement(mdata, "http://localhost:8890/dataspace/test2/weblog/test2tWeblog http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://rdfs.org/sioc/types#Weblog");
mdata.add(st);
st = statement(mdata, "http://localhost:8890/dataspace/test2/weblog/test2tWeblog http://rdfs.org/sioc/ns#link http://localhost:8890/dataspace/test2/weblog/test2tWeblog");
mdata.add(st);
st = statement(mdata, "http://localhost:8890/dataspace/discussion/oWiki-test1Wiki http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://rdfs.org/sioc/types#MessageBoard");
mdata.add(st);
st = statement(mdata, "http://localhost:8890/dataspace/discussion/oWiki-test1Wiki http://rdfs.org/sioc/ns#link http://localhost:8890/dataspace/discussion/oWiki-test1Wiki");
mdata.add(st);
// Query string.
String queryString = "SELECT * WHERE {?s ?p ?o}" ;
System.out.println("Execute query=\n"+queryString) ;
System.out.println() ;
QueryExecution qexec = VirtuosoQueryExecutionFactory.create(queryString, mdata) ;
try {
ResultSet rs = qexec.execSelect() ;
for ( ; rs.hasNext() ; ) {
QuerySolution result = rs.nextSolution();
RDFNode s = result.get("s");
RDFNode p = result.get("p");
RDFNode o = result.get("o");
System.out.println(" { " + s + " " + p + " " + o + " . }");
}
} finally {
qexec.close() ;
}
mdata.removeRuleSet("exmpl13_rules","http://:exmpl13_schema");
/*** LOADING rule to http://exmpl13_schema graph ***/
VirtModel mrule = VirtModel.openDatabaseModel("http://exmpl13_schema", url, "dba", "dba");
mrule.removeAll();
Resource r1 = mrule.createResource("http://rdfs.org/sioc/ns#Space") ;
r1.addProperty(RDFS.subClassOf, rdfNode(mrule, "http://www.w3.org/2000/01/rdf-schema#Resource"));
r1 = mrule.createResource("http://rdfs.org/sioc/ns#Container") ;
r1.addProperty(RDFS.subClassOf, rdfNode(mrule, "http://rdfs.org/sioc/ns#Space"));
r1 = mrule.createResource("http://rdfs.org/sioc/ns#Forum") ;
r1.addProperty(RDFS.subClassOf, rdfNode(mrule, "http://rdfs.org/sioc/ns#Container"));
r1 = mrule.createResource("http://rdfs.org/sioc/types#Weblog") ;
r1.addProperty(RDFS.subClassOf, rdfNode(mrule, "http://rdfs.org/sioc/ns#Forum"));
r1 = mrule.createResource("http://rdfs.org/sioc/types#MessageBoard") ;
r1.addProperty(RDFS.subClassOf, rdfNode(mrule, "http://rdfs.org/sioc/ns#Forum"));
r1 = mrule.createResource("http://rdfs.org/sioc/ns#link") ;
r1.addProperty(RDFS.subPropertyOf, rdfNode(mrule, "http://rdfs.org/sioc/ns"));
mrule.close();
mdata.createRuleSet("exmpl13_rules","http://exmpl13_schema");
mdata.close();
VirtInfGraph infGraph = new VirtInfGraph("exmpl13_rules", false,
"http://exmpl13", url, "dba", "dba");
InfModel model = ModelFactory.createInfModel(infGraph);
queryString = "SELECT ?s "+
"FROM <http://exmpl13> "+
"WHERE {?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://rdfs.org/sioc/ns#Space> } ";
System.out.println("\n\nExecute query=\n"+queryString) ;
System.out.println() ;
qexec = VirtuosoQueryExecutionFactory.create(queryString, model) ;
try {
ResultSet rs = qexec.execSelect() ;
for ( ; rs.hasNext() ; ) {
QuerySolution result = rs.nextSolution();
RDFNode s = result.get("s");
System.out.println(" " + s);
}
} finally {
qexec.close() ;
}
queryString = "SELECT * "+
"FROM <http://exmpl13> "+
"WHERE "+
"{ "+
" ?s ?p <http://rdfs.org/sioc/ns#Space> . "+
" ?s ?p1 <http://localhost:8890/dataspace/test2/weblog/test2tWeblog> . "+
"} ";
System.out.println("\n\nExecute query=\n"+queryString) ;
System.out.println() ;
qexec = VirtuosoQueryExecutionFactory.create(queryString, model) ;
try {
ResultSet rs = qexec.execSelect() ;
for ( ; rs.hasNext() ; ) {
QuerySolution result = rs.nextSolution();
RDFNode s = result.get("s");
RDFNode p = result.get("p");
RDFNode p1 = result.get("p1");
System.out.println(" " + s + " " + p + " " + p1);
}
} finally {
qexec.close() ;
}
model.close();
}
public static Statement statement( Model m, String fact )
{
StringTokenizer st = new StringTokenizer( fact );
Resource sub = resource( m, st.nextToken() );
Property pred = property( m, st.nextToken() );
RDFNode obj = rdfNode( m, st.nextToken() );
return m.createStatement( sub, pred, obj );
}
public static Resource resource( Model m, String s )
{ return (Resource) rdfNode( m, s ); }
public static Property property( Model m, String s )
{ return (Property) rdfNode( m, s ).as( Property.class ); }
public static RDFNode rdfNode( Model m, String s )
{ return m.asRDFNode( NodeCreateUtils.create( m, s ) ); }
}