import org.apache.jena.ontology.OntModel;
import org.apache.jena.ontology.OntModelSpec;
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;

public class JenaIntRuleMicro {
  static String filepath = "/home/may/teaching/SemWeb/RDF/";
  public static void main(String[] args){
    Model m = FileManager.get().loadModel(filepath + "infinite-parents.n3");
    OntModel ontmodel = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_RULE_INF, m);
    // OntModel ontmodel =
    //   ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_MICRO_RULE_INF, m);
    ontmodel.prepare();
    System.out.println(" ... prepared the model ...");

    String q = "prefix : <foo://bla#> " +
        "select ?A ?C ?X " +
        "where {{?A a :Parent} UNION {?C a :HasParent} UNION {:kate :parent ?X}}";

    Query qu = QueryFactory.create(q);
    QueryExecution qe = QueryExecutionFactory.create(qu, ontmodel);
    ResultSet results = qe.execSelect();
    ResultSetFormatter.out(results);
} }
