<docbook><section><title>VirtJenaSPARQLExample14</title><title> Virtuoso Jena Provider - SPARQL Example 14</title> Virtuoso Jena Provider - SPARQL Example 14
<programlisting>import org.apache.jena.query.*;
import org.apache.jena.ontology.*;
import org.apache.jena.rdf.model.*;
import org.apache.jena.reasoner.ReasonerRegistry;
import org.apache.jena.util.PrintUtil;
import org.apache.jena.vocabulary.RDFS;

/**
import org.apache.jena.query.*;
import org.apache.jena.graph.Triple;
import org.apache.jena.graph.Node;
import org.apache.jena.graph.Graph;
import org.apache.jena.graph.*;
import org.apache.jena.rdf.model.*;
import org.apache.jena.rdf.model.RDFNode;
import org.apache.jena.vocabulary.RDFS;

**/

import virtuoso.jena.driver.*;


public class VirtuosoSPARQLExample14 {

    static String URL = &quot;jdbc:virtuoso://localhost:1111&quot;;
    static final String uid = &quot;dba&quot;;
    static final String pwd = &quot;dba&quot;;


    public static void print_model(String header, Model m) {
        String h = header==null?&quot;Model&quot;:header;
        System.out.println(&quot;===========[&quot;+h+&quot;]==========&quot;);
        StmtIterator it = m.listStatements((Resource)null, (Property)null, (RDFNode)null);
        while(it.hasNext()) {
            Statement st = it.nextStatement();
            System.out.println(st);
        }
        System.out.println(&quot;============================\n&quot;);
    }

    public static void print_model(String header, StmtIterator it) {
        String h = header==null?&quot;Model iterator&quot;:header;
        System.out.println(&quot;===========[&quot;+h+&quot;]==========&quot;);
        while(it.hasNext()) {
            Statement st = it.nextStatement();
            System.out.println(st);
        }
        System.out.println(&quot;============================\n&quot;);
    }

    public static void exec_select(String header, Model m, String query) {
        String h = header==null?&quot;&quot;:header;
        System.out.println(&quot;===========[&quot;+h+&quot;]==========&quot;);
        System.out.println(&quot;Exec: &quot;+ query);
        Query jquery = QueryFactory.create(query) ;
        QueryExecution qexec = QueryExecutionFactory.create(jquery, m) ;
        ResultSet results =  qexec.execSelect();
        ResultSetFormatter.out(System.out, results, jquery);
        qexec.close();
        System.out.println(&quot;============================\n&quot;);

    }

    public static void main(String[] args) {
        if (args.length != 0)
            URL = args[0];

        try {
            test1();
            test2();
            test3();
            test4();
        } catch (Exception e) {
            System.out.println(&quot;ERROR Test Failed.&quot;);
            e.printStackTrace();
        }

    }



    public static void test1() {
        try {
            System.out.println(&quot;--------------- TEST 1 -------------------&quot;);
            VirtModel vdata = VirtModel.openDatabaseModel(&quot;test:inf1&quot;, URL, uid, pwd);
            vdata.removeAll();

            String NS = PrintUtil.egNS;
            Resource c1 = vdata.createResource(NS + &quot;C1&quot;);
            Resource c2 = vdata.createResource(NS + &quot;C2&quot;);
            Resource c3 = vdata.createResource(NS + &quot;C3&quot;);
            vdata.add(c2, RDFS.subClassOf, c3);
            InfModel im = ModelFactory.createInfModel(ReasonerRegistry.getRDFSReasoner(), vdata);
            print_model(&quot;Data in DB&quot;, vdata);
            print_model(&quot;Data in Inferenced Model&quot;, im);

            Model premise = ModelFactory.createDefaultModel();
            premise.add(c1, RDFS.subClassOf, c2);
            print_model(&quot;Test listStatements&quot;,im.listStatements(c1, RDFS.subClassOf, null, premise));

        } catch (Exception e) {
            System.out.println(&quot;ERROR Test Failed.&quot;);
            e.printStackTrace();
        }
    }


    public static void test2() {
        try {
            System.out.println(&quot;--------------- TEST 2 -------------------&quot;);
            VirtModel vdata = VirtModel.openDatabaseModel(&quot;test:inf2&quot;, URL, uid, pwd);
            vdata.removeAll();

            String NS = PrintUtil.egNS;
            Resource c1 = vdata.createResource(NS + &quot;C1&quot;);
            Resource c2 = vdata.createResource(NS + &quot;C2&quot;);
            Resource c3 = vdata.createResource(NS + &quot;C3&quot;);
            vdata.add(c2, RDFS.subClassOf, c3);
            OntModel om = ModelFactory.createOntologyModel(OntModelSpec.RDFS_MEM_RDFS_INF, vdata);

            print_model(&quot;Data in DB&quot;, vdata);
            print_model(&quot;Data in Ontology Model&quot;, om);

            Model premise = ModelFactory.createDefaultModel();
            premise.add(c1, RDFS.subClassOf, c2);
            print_model(&quot;Test listStatements&quot;,om.listStatements(c1, RDFS.subClassOf, null, premise));

        } catch (Exception e) {
            System.out.println(&quot;ERROR Test Failed.&quot;);
            e.printStackTrace();
        }
    }


    public static void test3() {
        try {
            System.out.println(&quot;--------------- TEST 3 -------------------&quot;);
            VirtModel vdata = VirtModel.openDatabaseModel(&quot;test:inf3&quot;, URL, uid, pwd);
            vdata.removeAll();

            String NS = PrintUtil.egNS;
            Resource c1 = vdata.createResource(NS + &quot;C1&quot;);
            Resource c2 = vdata.createResource(NS + &quot;C2&quot;);
            Resource c3 = vdata.createResource(NS + &quot;C3&quot;);
            vdata.add(c2, RDFS.subClassOf, c3);
            vdata.add(c1, RDFS.subClassOf, c2);
            InfModel im = ModelFactory.createInfModel(ReasonerRegistry.getRDFSReasoner(), vdata);

            exec_select(&quot;Data in DB&quot;, vdata, &quot;select * where {?s ?p ?o}&quot;);

            exec_select(&quot;Data in Inferenced Model&quot;, im, &quot;select * where {?s ?p ?o}&quot;);

            exec_select(&quot;Data in Inferenced Model&quot;, im, &quot;select * where {&lt;&quot;+c1+&quot;&gt; &lt;&quot;+RDFS.subClassOf+&quot;&gt; ?o}&quot;);

        } catch (Exception e) {
            System.out.println(&quot;ERROR Test Failed.&quot;);
            e.printStackTrace();
        }
    }


    public static void test4() {
        try {
            System.out.println(&quot;--------------- TEST 4 -------------------&quot;);
            VirtModel vdata = VirtModel.openDatabaseModel(&quot;test:inf4&quot;, URL, uid, pwd);
            vdata.removeAll();

            String NS = PrintUtil.egNS;
            Resource c1 = vdata.createResource(NS + &quot;C1&quot;);
            Resource c2 = vdata.createResource(NS + &quot;C2&quot;);
            Resource c3 = vdata.createResource(NS + &quot;C3&quot;);
            vdata.add(c2, RDFS.subClassOf, c3);
            vdata.add(c1, RDFS.subClassOf, c2);
            OntModel om = ModelFactory.createOntologyModel(OntModelSpec.RDFS_MEM_RDFS_INF, vdata);

            exec_select(&quot;Data in DB&quot;, vdata, &quot;select * where {?s ?p ?o}&quot;);

            exec_select(&quot;Data in Ontology Model&quot;, om, &quot;select * where {?s ?p ?o}&quot;);

            exec_select(&quot;Data in Ontology&quot;, om, &quot;select * where {&lt;&quot;+c1+&quot;&gt; &lt;&quot;+RDFS.subClassOf+&quot;&gt; ?o}&quot;);

        } catch (Exception e) {
            System.out.println(&quot;ERROR Test Failed.&quot;);
            e.printStackTrace();
        }
    }

}
</programlisting><para> </para>
</section></docbook>