What kind of method did you use for create VirtModel object?
NOTE:
If you used:
public static VirtModel openDefaultModel(DataSource ds);
public static VirtModel openDefaultModel(String url, String user, String password);
so the Model will contains only data from "virt:DEFAULT" graph. And VirtuosoQueryExecutionFactory will add next pragma to query text:
define input:default-graph-uri <virt:DEFAULT>
If you used something like:
public static VirtModel openDatabaseModel(String graphName, DataSource ds);
public static VirtModel openDatabaseModel(String graphName, String url, String user, String password)
so the Model will contains only data from graphName graph. And VirtuosoQueryExecutionFactory will add next pragma to query text:
define input:default-graph-uri <graphName>
If you want to use data from all graphs, you must call:
VirtModel vmodel = ....create model method...
vmodel.setReadFromAllGraphs(true);
If you set above to TRUE, the pragma for default-graph-uri will not added.
The worked example of using Construct with Virtuoso Jena provider:
url = "jdbc:virtuoso://localhost:1111";
VirtGraph set = new VirtGraph ("test1", url, "dba", "dba");
set.clear();
String qry = "INSERT INTO GRAPH <test1> { <aa> <bb> 'cc' . <aa1> <bb> 'zz' }";
VirtuosoUpdateRequest vur = VirtuosoUpdateFactory.create(qry, set);
vur.exec();
Model inputModel = new VirtModel(set);
System.out.println("InputModel :"+inputModel);
System.out.println("InputModel size :"+inputModel.size());
System.out.println();
qry = "CONSTRUCT { ?x <a> ?y } WHERE { ?x <bb> ?y }";
QueryExecution vqe = VirtuosoQueryExecutionFactory.create (qry, inputModel);
Model model = vqe.execConstruct();
System.out.println("Model :"+model);
System.out.println("Model size :"+model.size());