SOFA (Simple                   Ontology Framework API)


SOFA (Simple Ontology Framework API) is a Java API representing an object model of abstract, language-independent specification of knowledge, known as an Ontology. It is intended for using by developers of the Semantic Web, Information Retrieval, Knowledge Bases applications and other ontology-driven software engineering. SOFA provides a simplified and highly abstract model of ontology which is independent of a specific ontology representation language and operates with ontologies on a conceptual, rather than syntactic level. It allows for SOFA-based applications to operate with ontologies described in diverse language forms and gives significant advantages in simplicity of software development.

Structure of API

The SOFA API includes the following main packages:

The Ontology conceptual model

The Ontology Model in SOFA is conceptually consistent with semantics of W3C OWL ontology. The basic concepts of the SOFA model are:

These four basic concepts are represented by the Java interfaces and their implementation classes. Concept and Relation interfaces are the subinterfaces of Thing. As the design of API succesfully hides the implementation details, developers deal with the interfaces only, not with their implementation classes.

The interface of Thing provides basic functionality of an ontology individual, including setting and getting the relations with other ontology individuals and actual data values. The interfaces of Concept and Relation extend that functionality for specific tasks related to these types of individuals (e.g. subclassing).

The ontology model implementation is based on the same model. The elements of a conceptual model are defined as the members of the built-in system ontology which serves as a meta-model for all custom ontologies.

Inferencing mechanism

The SOFA ontology model is not a simple passive data storage model. It uses sets of initial facts set explicitly on the Things for inferencing the implied facts. It is possible due to symmetry, transitivity and inversion attributes of ontology relations. An inferencing mechanism is a part of the SOFA interfaces implementation.

Java objects as the ontology members

SOFA transparently binds together the data objects with the ontologies. An object of virtually any Java class can be treated as an ontology datatype (“literal”) node. It reveals another promising way of using SOFA as an application storage framework for complex data models, including advanced classification, search and metadata capabilities.

Separate ontology storage layer

The SOFA model is independent of a specific storage type. Many of the physical storage implementations can be used as a back-end for storing the SOFA ontology models. A storage utility is a separate implementation layer and it can be changed independently from the SOFA interfaces and their implementation. The default in-memory storage and experimental JDBC-based RDBMS storage are currently implemented.

Relations with ontology languages

SOFA includes a serialization/deserialization mechanism allowing to represent the ontology object model with various ontology languages. W3C OWL, DAML+OIL and RDF-Schema languages are currently supported.

$Id: overview.html,v 2005/02/14 07:58:00 alexeya Exp $