import org.apache.jena.ontology.HasValueRestriction;
import org.apache.jena.ontology.Individual;
import org.apache.jena.ontology.ObjectProperty;
import org.apache.jena.ontology.OntClass;
import org.apache.jena.ontology.OntModel;
import org.apache.jena.ontology.OntModelSpec;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.rdf.model.Resource;
import org.apache.jena.rdf.model.Statement;
import org.apache.jena.rdf.model.StmtIterator;
import org.apache.jena.util.FileManager;
import org.apache.jena.vocabulary.RDF;

public class JenaListStmtsPosit {
  static String filepath = "/home/may/teaching/SemWeb/RDF/";
  public static void main(String[] args){
    String monPrefix = "http://www.semwebtech.org/mondial/10/";
    Model m = FileManager.get().loadModel(filepath + "mondial-europe.n3");
    OntModel ontM = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM, m);

    Model m2 = ModelFactory.createDefaultModel();
    OntModel posit = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM, m2);

    // create Class: HasValue(neighbor,germany) in posit and output its members
    OntClass Country = posit.createClass(monPrefix + "meta#Country");
    Individual germany = Country.createIndividual(monPrefix + "countries/D/");
    ObjectProperty neighborProp = posit.createObjectProperty(monPrefix + "meta#neighbor");
    HasValueRestriction GermanNeighbor =
       posit.createHasValueRestriction(null, neighborProp, germany);

    for (StmtIterator i =
         ontM.listStatements(null, RDF.type, GermanNeighbor, posit);
         i.hasNext(); ) {
           Statement s = i.nextStatement();
           Resource r = s.getSubject();
           System.out.println(r);
      }}}
