DL-Learner consists of core functionality, which provides Machine Learning algorithms for solving the learning problem, support for different knowledge base formats, an OWL library, and reasoner interfaces. There are several interfaces for accessing this functionality, a couple of tools which use the DL-Learner algorithms, and a set of convenience scripts. The general structure is illustrated in the following figure:
To be flexible in integrating new learning algorithms, new kinds of learning problems, new knowledge bases, and new reasoner implementations, DL-Learner uses a component based model. Adding a component is as easy as subclassing the appropriate class and adding the name of the new class to the “components.ini“ file.
In DL-Learner, there are four types of components (knowledge source, reasoning service, learning problem, learning algorithm). There are several components of each type and each component can have its own configuration options as illustrated below:
Each component can specify its own configuration options. The mechanism is based on Java Spring, which means that it is sufficient to require Java Beans standards (i.e. creating getX() and setX() methods for a configuration option x). Most configuration option types are supported via Spring, in particular the following:
- string (a set of allowed strings can be specified)
- int (min and max value can be specifified)
- double (min and max value can be specifified)
- set of strings
- list of string tuples
This allows possibility to build very flexible user interfaces. Whenever, a new component or a new configuration option for a component is added, the current user interfaces (GUI, web service, commandline) will automatically support it without any need for code changes.