This project implements a Reasoner for a simplified version of the EL++ logic, with a focus on computing the classification of a TBox (subsumption hierarchy). The Reasoner is developed in Java, using the owlapi.
This project is based on the following articles:
- Pushing the EL Envelope Further
- Concurrent Classification of EL Ontologies
- ELK Reasoner: Architecture and Evaluation
void main() {
OWLOntology ontology;
// TBox normalisation
OntologyNormaliser ontologyNormaliser = new OntologyNormaliser(ontology);
OWLOntology normalisedOntology = ontologyNormaliser.createNormalisedOntology();
// Ontology indexing
OntologyIndexer ontologyIndexer = new OntologyIndexer(normalisedOntology);
OntologyIndex ontologyIndex = ontologyIndexer.buildIndex();
// Ontology saturation process
OntologySaturationProcess ontologySaturationProcess = new OntologySaturationProcess(normalisedOntology, ontologyIndex);
SaturationResult saturationResult = ontologySaturationProcess.saturate();
// Build subsumption hierarchy
SubsumptionHierarchyProcess subsumptionHierarchyProcess = new SubsumptionHierarchyProcess();
SubsumptionHierarchy subsumptionHierarchy = subsumptionHierarchyProcess.buildHierarchy(saturationResult);
}
void main() {
OWLOntology ontology;
OWLReasonerFactory owlReasonerFactory = new ELPPReasonerFactory();
OWLReasoner myReasoner = owlReasonerFactory.createReasoner(ontology);
myReasoner.precomputeInferences(InferenceType.CLASS_HIERARCHY);
}