obdalib_example4 - ConstantB/ontop-spatial GitHub Wiki

import java.net.URI;
import org.semanticweb.owl.model.OWLOntology;
import org.semanticweb.owl.model.OWLOntologyManager;
import inf.unibz.it.obda.owlapi.OWLAPIController;
import inf.unibz.it.obda.api.io.DataManager;
import inf.unibz.it.obda.api.inference.reasoner.DataQueryReasoner;
import inf.unibz.it.obda.queryanswering.Statement;
import inf.unibz.it.obda.queryanswering.QueryResultSet;

import org.obda.owlrefplatform.core.OBDAOWLReformulationPlatformFactoryImpl;

/**
*A sandbox for testing the Data Query Reasoner.
*/
public class DataQueryReasonerTest {

   public static String owlFile = "src/test/resources/owl/ontology.owl";

   public static void main(String args[]) {

      /** Init */
      URI owlUri = (new File(owlFile)).toURI();

      /** Load the OWL file */
      OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
      OWLOntology ontology = manager.loadOntologyFromPhysicalURI(owlUri);
      OWLAPIController controller = new OWLAPIController(manager, ontology);
      controller.loadData(owlUri);

      /** Load the OBDA data */
      DataManager ioManager = controller.getIOManager();
      URI obdaUri = ioManager.getOBDAFile(owlUri);
      ioManager.loadOBDADataFromURI(obdaUri);

      /** Setup the reasoner */
      OBDAOWLReformulationPlatformFactoryImpl platformFactory = 
            new OBDAOWLReformulationPlatformFactoryImpl();
      platformFactory.setup(manager, "12345", "DataQueryReasoner");  // params: (OWLOntologyManager manager, String id, String name)
      platformFactory.setOBDAController(controller);
      platformFactory.useInMemoryDB(true);
      platformFactory.createMappings(true);
      DataQueryReasoner reasoner = 
            (DataQueryReasoner) platformFactory.createReasoner(manager);

      /** Input example */
      String input =
            "base <http://base.org/stuff/1.0/> <br>n" +
 	    "prefix abc: <http://www.abc.org/1999/02/22-abc-syntax-ns#> <br>n" +
	    "prefix : <http://example.org/stuff/1.0/> <br>n" +
	    "abc:p($x, $y) :- :q($x), r($y)";

      Statement statement = reasoner.getStatement(input);
      QueryResultSet result = statement.getResultSet();

      /** Printing the results */
      int count = result.getColumCount();
      while(result.nextRow()){
         String tuple = "";
         for (int i = 1; i <= count; i++) {
            if (tuple.length() > 0) {
               tuple = tuple + ",";
            } 
            tuple = tuple + result.getAsString(i);
         }
         System.out.println(tuple);
      }
   }   
}

⚠️ **GitHub.com Fallback** ⚠️