GAIA - Group for Artificial Intelligence Applications



[Overview] [Architecture] [Documentation] [Code_Examples] [On-line_demo] [Contributions]
jCOLIBRI CBR Framework

[Home] [Versions] [People] [Download] [Academic_Papers]

[Overview] [Architecture] [Documentation] [Tutorials]

jCOLIBRI1::Documentation

jCOLIBRI 1 Theoretical Foundations

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.

UML Diagrams
[Home] [People] [Projects] [Publications] [Software]
This file last modified Wednesday September 10, 2008