jcel is a reasoner for the description logic EL+. It uses the OWL API and can be used as a plug-in for Protege.
- all-in-one ZIP file
- The Central Repository
- older releases
- as dependency:
<dependency>
<groupId>de.tu-dresden.inf.lat.jcel</groupId>
<artifactId>jcel-owlapi</artifactId>
<version>0.23.0</version>
</dependency>
- is an OWL 2 EL reasoner (albeit currently with some limitations)
- uses the OWL API
- can be used in Protégé
- is free software and is licensed under GNU Lesser General Public License version 3 and Apache License, Version 2.0
- is fully implemented in Java
- evaluated by the SEALS Community having the lowest Average Reasoning Time in 2010
- Java Development Kit 8 (or higher)
- Apache Maven 3.0.3 (or higher)
- Eclipse Luna (or higher)
The project is hosted on GitHub. To checkout and compile the project with Apache Maven:
$ git clone https://github.com/julianmendez/jcel.git
$ cd jcel
$ mvn clean install
The library, its sources and its Javadoc will be in jcel-library/target
, the plug-in will be in jcel-plugin/target
, the standalone will be in jcel-standalone/target
, and the release ZIP file will be in target
.
To compile the project offline, first download the dependencies:
$ mvn dependency:go-offline
and once offline, use:
$ mvn --offline clean install
The bundles uploaded to Sonatype are created with:
$ mvn clean install -DperformRelease=true
and then on each module:
$ cd target
$ jar -cf bundle.jar jcel-*
and on the main directory:
$ cd target
$ jar -cf bundle.jar jcel-parent-*
The version under development has the following modules:
- jcel-coreontology : set of normalized axioms
- jcel-core : classification algorithms using only normalized axioms
- jcel-ontology : set of all possible axioms and a procedure to normalize them
- jcel-reasoner : reasoner that can classify an ontology and can compute entailment
- jcel-owlapi : OWL API interface, performs the translation between the OWL API axioms and jcel axioms
- jcel-protege : module to connect to Protégé
It also has the following module used to build the release:
- jcel-library : module to create the library, its sources and its javadoc
- jcel-plugin : module to create the jar for Protégé
- jcel-standalone : module to create the standalone application
- jcel-distribution : module to create the release, a single ZIP file
This file is an example of how to start jcel.
This file is an example ontology using ELHIfR+.
Ontologies:
- Gene Ontology: input owl krss, output xml
- NCI Thesaurus: input owl, output xml
- CEL GALEN: input owl krss, output xml
- Not GALEN: input owl krss, output xml
- Foundational Model of Anatomy
- SNOMED CT
- translate OWL API axioms into jcel axioms, which are composed by integer numbers
- detect the expressivity used in the axioms
- apply normalization rules to the set of axioms, producing a set of normalized axioms and auxiliary entities if necessary
- saturate the set of normalized axioms with deduced object property axioms
- create an extended ontonlogy based on the set of normalized axioms
- apply the completion rules while there is some change in the affected sets
- remove the auxiliary entities
- build a graph containing direct subsumers (parents), direct subsumees (children) and equivalents
- create OWL API data structures based on the jcel's integer representation
If we consider each package as a node, and each dependency between two packages as a directed edge, the structure of package dependency should be a directed acyclic graph (DAG). The packages should only make public those classes that are or could be used by another package preserving the DAG structure.
- Theoretical foundation:
- Master's thesis by J. A. Mendez
- Master's thesis by Q. H. Vu
- Ph.D. thesis by B. Suntisrivaraporn
- CEL: main page - source code
- OWL API: main page - examples — javadoc
- OWL 2: OWL Working Group
See release notes.
Any bug, or unexpected behavior can be reported to the e-mail addresses at this web page. Questions and suggestions are also very welcome.