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 interface definitions describing an object model of an abstract ontology.
SOFA Reference Implementation
The classes implementing the interfaces of the object model and providing inference tasks.
SOFA Storage Model API
The interface definitions of a underlying ontology storage model plus their implementation for the default in-memory storage.
The set of packages provides a number of implementations of serializing and deserializing the SOFA ontology model with a textual format using various ontology representation languages.
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:
An ontology is a formal representation of knowledge about area of interest. In SOFA, an ontology is considered as a set of individuals (Things) which encapsulate sequences of axioms and facts. Ontology is intended to be a knowledge repository that responsible for Things creation, retrieving and removing. Also it provides an uniform namespace for all Things belonging to the ontology.
A logical meaning ontology member that encapsulates a knowledge about specific individual within an area of interest. A Thing can be considered as a set of statements which declare the relationships between a given Thing and other Things, or hold the data (literal) values. Each Thing has an identifier which is unique within a scope of a host ontology. In combination with an ontology namespace, an identifier forms a qualified URI of a given Thing for adressing it outside the ontology.
Concept (or Class, in OWL terminology)
A special type of Things providing hierarchical classification (taxonomy) of other Things. A specific Concept defines a group of Things that belong together because they share some common relations. A Thing belonging to a specific Concept is called an instance of this Concept.
Relation (or Property, in OWL terminology)
A special type of Things providing specification of relationship between the Things or from the Things to the actual data values.
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.
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 220.127.116.11 2005/02/14 07:58:00 alexeya Exp $