Monday, April 12, 2010

Organon introduction: Data model (Part 1)

The data model is core component of any information system, Data model describes how data are represented and accessed by defining data elements and relationships among data elements. Most of modern system use OO language as front end to reflect data model stored in back end store like RDBMS. As history shows the development of different techniques to store different data model approaches to persistence store like RDBMS, beginning with applying any pattern to abstract the database access layer from objects layer and ending with ORM library to manage mapping objects to persistence store like Hibernate or JPA.

Most of existing ORM libraries focus on mapping OO classes to RDBMS database and provide set of flexible configuration/API to give the developer more control on the mapping in order to speedup development and deployment of the application, also, some of those libraries provide extension query language to eliminate the redundant declaration of the relation between objects like OQL, HQL and JQL.

Now you can easy declare class Person and transparently persist it and query the available persons, but the question still alive, is that all i can do? the answer properly is No. We still far away from the Yes answer, but why:

  • The person data model is not cross platform/language, you can't use it out side your system.
  • The logic inside the person data model is known only by the class itself.
  • Some of person relations is not descriptive for example, Person has age (Integer) represented in native datatype or immutable object, there is no enough information for the system to answer some question, so the answer of query "Give me all objects where their age more than 3" would be "Excuse me, What is the age?"
  • There is no inheritance between subsets (Boolean expressions), for example, Man is subset of Person where gender equals 'Male', you should be able to extend Man as a class.
  • The relation cardinality is not considered constraints (One to many relationship), do you ever heard about person has 100 child?
  • There is no support for multi-parent inheritance (interface inheritance)
  • In most existing ORM libraries there is no clean API to access and query the metadata of the managed data model.

There is a lot of effort in many projects to solve the above problems you may check out Jena, RDF syntax and OWL. In the next post i will talk about Organon way to solve the above problems.

Sunday, April 11, 2010

Welcome to Pushing forward!

This is my first blog on Pushing forward!

Lets see how far i can manage Pushing forward! is about Organon, ORM, RDF, Semantic Technology and more .. I'll be mainly writing on my own area of interests.

 Cheers