|
jCOLIBRI is an object-oriented framework in Java for building Case-Based Reasoning applications. A framework is a reusable, semi-complete application that can
be specialized to produce custom applications. Application frameworks are targeted at a given application domain providing the design for a family of applications within that domain.
jCOLIBRI is built around a task/method ontology, a knowledge level
description that guides the framework design, determines possible
extensions and supports the framework instantiation process. Task and methods are
described in terms of domain-independent CBR terminology which is mapped into the
classes of the framework.
Although various authors have applied knowledge level analysis to CBR
systems, the most relevant work is the CBR task structure described in
terms of four tasks (4 Rs): Retrieve the most similar case/s, Reuse its/their
knowledge to solve the problem, Revise the proposed solution and Retain the
experience.
Each one of the four CBR tasks involves a number of more specific
sub-tasks. There are methods to solve tasks either by decomposing a task in
subtasks or by solving it directly. The task structure identifies a number
of alternative methods for a task, and each one of the methods sets up difeerent
subtasks in its turn. This kind of task-method-subtask analysis is carried on to a
level of detail where the tasks are primitive with respect to the available
knowledge (i.e. there are resolution methods).
Besides this task structure, our framework includes a library of PSMs
to solve these tasks.
Historical Evolution
jCOLIBRI is a software artifact that promotes software reuse for building
CBR systems, and tries to integrate the application of well proven Software
Engineering techniques with the KADS key idea of separating the problem
solving method, that definnes the reasoning process, from the domain model,
that describes the domain knowledge. jCOLIBRI is an evolution of the COLIBRI
architecture, that consisted of a library of problem solving methods (PSMs)
for solving the tasks of a knowledge-intensive CBR system along with an ontol-
ogy, CBROnto, with common CBR terminology.
COLIBRI was prototyped in LISP using LOOM as knowledge representation technology. This prototype served as proof of concept but was far from being usable outside of our own
research group. jCOLIBRI is a technological evolution of COLIBRI that incorpo-
rate a distributed architecture, GUI clients for assembling a CBR system from reusable components and an object-oriented framework in Java.
CBROnto
Every CBR system makes use of CBR terminology, the type of entities that the CBR processes manage. A CBR ontology elaborates and organizes the terminology found in, ideally, any CBR system to provide a domain independent basis for new CBR systems. On this way, our CBR Ontology (CBROnto) elaborates an extensive ontology over CBR terminology. The idea beyond this ontology is to have a common language to define the elements that compose a CBR system and to be able to build generic CBR methods.
In jCOLIBRI the CBR ontology is not only represented as a separate resource in a knowledge representation formalism such as OWL, RACER or LOOM. There is a correspondence that allows that most of the CBR concepts, such as Case, CaseBase, CaseDescription, CaseSolution, SimilarityFunction, GlobalSimilarityFunction, LocalSimilarityFunction, Query, CBRMethod, or CBRTask, are mapped into Java abstract classes or interfaces of the framework. The is-a relations in the ontology are mapped into inheritance relations between classes and the part-of relations are mapped into composition of classes. This way, the classes representing concepts in the CBR ontology serve two purposes:
- they provide an abstract interface for the CBR methods and tasks that can be developed independently from the actual CBR building blocks (case structure, case base organization, similarity functions, etc.), and
- they serve as hooks where new types of CBR building blocks can be added.
The CBR ontology is already populated in the framework with a number of pre-packaged realizations of the CBR abstract entities that can be extended for particular applications.
|