Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/vtramo/concurrent-el-reasoner

Concurrent Classification of EL++ Ontologies
https://github.com/vtramo/concurrent-el-reasoner

classification concurrent-programming description-logic owl-api owl-ontology semantic-web tbox

Last synced: about 1 month ago
JSON representation

Concurrent Classification of EL++ Ontologies

Awesome Lists containing this project

README

        

# Concurrent Classification of EL++ Ontologies
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](https://github.com/owlcs/owlapi).

This project is based on the following articles:
- [Pushing the EL Envelope Further](https://lat.inf.tu-dresden.de/research/papers/2005/BaaderBrandtLutz-IJCAI-05.pdf)
- [Concurrent Classification of EL Ontologies](https://iccl.inf.tu-dresden.de/w/images/c/c3/Kazakov-Kroetzsch-Simancik_concurrent-el-reasoning_ISWC2011.pdf)
- [ELK Reasoner: Architecture and Evaluation](https://ceur-ws.org/Vol-858/ore2012_paper10.pdf)

## Usage example
```java
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);

}
```
## Usage Example (OWL API)
```java
void main() {

OWLOntology ontology;
OWLReasonerFactory owlReasonerFactory = new ELPPReasonerFactory();
OWLReasoner myReasoner = owlReasonerFactory.createReasoner(ontology);
myReasoner.precomputeInferences(InferenceType.CLASS_HIERARCHY);

}
```