BORN
Bayesian Ontology Reasoner
BORN is a probabilistic reasoner for BEL (Bayesian EL), which is an extension of the lightweight Description Logic EL. Bayesian Ontology Languages are a family of probabilistic ontology languages that allow to encode probabilistic information over the axioms of an ontology with the help of a Bayesian network. BORN uses the OWL API to read OWL 2 EL ontologies, and it can be used as a Protégé plug-in.
Download
- all-in-one ZIP file
- The Central Repository
- as dependency
<dependency>
<groupId>de.tu-dresden.inf.lat.born</groupId>
<artifactId>born-gui</artifactId>
<version>0.4.1</version>
</dependency>
Usage
BORN can be used as a Protégé plug-in or as a standalone application.
To use it as a Protégé plug-in, copy the file born-plugin/target/de.tu-dresden.inf.lat.born-VERSION.jar
into protege/plugins
, where VERSION
is BORN’s version and protege
is Protégé’s directory.
To use it as a standalone, use file born-standalone/target/born.jar
, and start the graphical visual interface with:
java -jar born.jar
or use the console interface giving parameters. The details can be obtained with:
java -jar born.jar help
Source code
To clone and compile the project:
$ git clone https://github.com/julianmendez/born.git
$ cd born
$ mvn clean install
The library, its sources and its Javadoc will be in born-library/target
, the plug-in will be in born-plugin/target
, the standalone will be in born-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 born-*
and on the main directory:
$ cd target
$ jar -cf bundle.jar born-parent-*
The version number is updated with:
$ mvn versions:set -DnewVersion=NEW_VERSION
where NEW_VERSION is the new version.
Authors
Design and Implementation: Julian Alfredo Mendez
Idea: İsmail İlkan Ceylan
License
This software is distributed under the Apache License Version 2.0.
Release notes
See release notes.
Architecture
BORN has a hybrid architecture that uses Java and ProbLog. In addition to Java, BORN requires having Python installed, because it is used to execute ProbLog. If ProbLog is not installed, BORN automatically downloads the most recent version of ProbLog, and uses it to solve the queries. Details on the versions of those requirements are available in the release notes.
Modules
BORN is implemented with the following modules:
born-owlapi
: contains the core of BORN, especially all the data structures needed for the communication with ProbLog. It also includes the communication with the OWL API.born-gui
: contains all the classes for the graphical user interface (GUI) using the model–view–controller pattern (MVC). Each panel in the visual interface has a view and a controller class in this package, but the model is inborn-owlapi
.born-protege
: contains the configuration files and classes for Protégé to run BORN as a Protégé plug-in.born-library
: contains Maven configuration files to create the BORN library, i.e. the BORN classes.born-plugin
: contains Maven configuration files to create the Protégé plug-in.born-standalone
: contains Maven configuration files to create a JAR file to use BORN as a standalone.born-distribution
: contains Maven configuration files to create a single ZIP to distribute all deliverables of BORN, including source code and Javadoc.
Packages
born-owlapi
can be sudivided in 3 groups of packages:
de.tudresden.inf.lat.born.core.*
: contains data structures and interfaces.de.tudresden.inf.lat.born.owlapi.*
: contains classes to read and write files using the OWL API.de.tudresden.inf.lat.born.problog.*
: contains classes to read and write files used for ProbLog.
born-owlapi
contains classes to run BORN from the command line. BORN offers several options, which are shown when it is executed with the option --help
. Each option is a command, and it receives its own parameters.
Technically each command is implemented in its own package. Each command has the following classes:
-Configuration
: contains the interface for the configuration (parameters) of the command line execution, and is also used as model in the visual interface.-ConfigurationImpl
: contains the default implementation of the-Configuration
interface.-Core
: contains the methods to execute the command itself, which may include the communication with ProbLog or the OWL API.-SubApp
: is a snippet used to register this command in the list of commands, containing the help and some parsing methods to read the arguments from the command line.
born-gui
has a package for each panel, and a package to integrate them using tabs. Each package contains:
-View
: contains the interface for the visual components-Panel
: implements-View
and contains the visual components, but not their behavior. This class can be edited using WindowBuilder.-Controller
: contains the behavior for the provided view, using the-Configuration
interface as model. The controller uses the-Core
class and might run it in a separate thread, to avoid blocking the whole application.
Contact
In case you need more information, please contact julianmendez.