import org.apache.jena.ontology.OntModel;
import org.apache.jena.query.Query;
import org.apache.jena.query.QueryExecution;
import org.apache.jena.query.QueryExecutionFactory;
import org.apache.jena.query.QueryFactory;
import org.apache.jena.query.ResultSet;
import org.apache.jena.query.ResultSetFormatter;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.util.FileManager;
import openllet.jena.PelletReasonerFactory;

public class JenaPelletWinMoveDraw {
  static String filepath = "/home/may/teaching/SemWeb/RDF/";
  public static void main(String[] args){
    Model m = FileManager.get().loadModel(filepath + "winmove-axioms.n3");
    m.add(FileManager.get().loadModel(filepath + "winmove-closure.n3"));
    m.add(FileManager.get().loadModel(filepath + "winmove-graph.n3"));
    OntModel pelletmodel = ModelFactory.createOntologyModel(PelletReasonerFactory.THE_SPEC, m);

    String q = "prefix : <foo://bla#>" +
        "construct { ?N a :DrawNode }" +
        "where { ?N a :Node . filter not exists { ?N a :WinNode }" +
        "                     filter not exists { ?N a :LoseNode }}";
    Query qu = QueryFactory.create(q);
    QueryExecution qe = QueryExecutionFactory.create(qu, pelletmodel);
    Model resultgraph = qe.execConstruct();

    pelletmodel.add(resultgraph);

    q = "prefix : <foo://bla#>" +
        "select ?W ?L ?D " +
        "where {{ ?W a :WinNode } union { ?L a :LoseNode } union { ?D a :DrawNode }}";
    qu = QueryFactory.create(q);
    qe = QueryExecutionFactory.create(qu, pelletmodel);
    ResultSet results = qe.execSelect();
    ResultSetFormatter.out(results);
} }
