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);
}
}
}