Giter Club home page Giter Club logo

born's Introduction

License Maven Central build

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

<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 in born-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.

born's People

Contributors

julianmendez avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

born's Issues

Protege plugin

Hi, I'm trying to use the protege plugin but BORN doesn't appear in the reasoners list or anywhere else. It is shown in the plugins list though.
I'm using protege 5.

Example ontologies

Are there any example BEL ontologies that I can load into protege to test this out?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.