OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
OWLReasonerFactory reasonerFactory = new PelletReasonerFactory();
// OWLReasonerFactory reasonerFactory = new
// FaCTPlusPlusReasonerFactory();
OWLReasoner reasoner = null;
OWLOntology tboxOntology = null, aboxOntology = null;
fullCassIndividuals = new HashMap<OWLClass, Set<OWLIndividual>>();
Set<OWLIndividual> allIndividuals;
Set<OWLIndividual> directIndividuals;
HashMap<OWLClass, Integer> allIndividualsCounts = new HashMap<OWLClass, Integer>();
HashMap<OWLClass, Integer> directIndividualsCounts = new HashMap<OWLClass, Integer>();
HashMap<OWLClass, Integer> indirectIndividualsCounts = new HashMap<OWLClass, Integer>();
int cumulativeIndividualsCount = 0;
int cumulativeDirectindividualsCount = 0;
int cumulativeIndirectIndividualsCount = 0;
Timers timers = new Timers();
double time = 0;
double classificationTime = 0;
double instanceRetrievalTime = 0;
try
{
tboxOntology = manager.loadOntology(tboxURI);
aboxOntology = manager.loadOntology(aboxURI);
} catch (OWLOntologyCreationException e)
{
e.printStackTrace();
System.exit(0);
}
// System.out.println("--->classifying...");
reasoner = reasonerFactory.createReasoner(manager);
reasoner.loadOntologies(Collections.singleton(tboxOntology));
reasoner.loadOntologies(Collections.singleton(aboxOntology));
timers.createTimer("classification");
if (!reasoner.isClassified())
{
Timer timerClassify = timers.startTimer("classification");
reasoner.classify();
timerClassify.stop();
classificationTime += timerClassify.getTotal();
}
// System.out.println("--->retrieving instances...");
for (OWLClass cc : classes)
{
allIndividuals = new HashSet<OWLIndividual>();
directIndividuals = new HashSet<OWLIndividual>();
timers.createTimer("retrieval");
Timer timerRetrieval = timers.startTimer("retrieval");
allIndividuals = reasoner.getIndividuals(cc, false);
timerRetrieval.stop();
instanceRetrievalTime += timerRetrieval.getTotal();
fullCassIndividuals.put(cc, allIndividuals);
directIndividuals = reasoner.getIndividuals(cc, true);
allIndividualsCounts.put(cc, new Integer(allIndividuals.size()));
directIndividualsCounts.put(cc, new Integer(directIndividuals
.size()));
indirectIndividualsCounts.put(cc, new Integer(allIndividuals.size()
- directIndividuals.size()));
cumulativeIndividualsCount += allIndividuals.size();
cumulativeDirectindividualsCount += directIndividuals.size();
cumulativeIndirectIndividualsCount += (allIndividuals.size() - directIndividuals
.size());
}
reasoner.clearOntologies();
reasoner.dispose();
manager.removeOntology(tboxOntology.getURI());
manager.removeOntology(aboxOntology.getURI());
time = classificationTime + instanceRetrievalTime;
RunResult result = new RunResult(allIndividualsCounts, time, classes
.size(), properties.size());