Sunday, January 21, 2007

Atomicity and Knowledge Representation

In my previous post on Atomicity I asked few questions about the atomicity as a concept itself and how does it relate to the Software Engineering. Also in my previous post on Knowledge Representation I discussed 5 fundamental things about Knowledge Representation.

It was last week when I was talking with a friend whom I happen to meet first time and it was a planned meeting which was scheduled for just 30 mins but then as it normally happens with me an interesting discussion last longer then anticipated. The meeting went on for about 1.5 hrs :). I know I am terrible in managing time especially when it comes to technical discussion.

While we were discussing about atomicity, there are few points that came out during that and one of them was how the smallest possible piece of knowledge can be applied to the big picture.

The Atomic Structure:
If we look at the structure of an atom (Except Hydrogen). It has a Nucleus which determines the Atomic Number and Atomic Weight for the element. Then it has a Electron(s) circling around in the pre-defined orbit.

Using the same concept in Semantics if we look at the object (for that matter any object) which exists in this world. We will find that it has two different kind of attributes (i)Key or Principal Attributes and (ii)Helper or Supporting Attibutes.
  1. Key Attribute(s) Determine how the object can be represented in the world. The attributes for an object which fall in this category are its Name(Value), the Type(family) of object. What it means to define an object in its basic form or the basic object contains what family it belongs to and what is its value.

  2. Supporting Attribute(s) help object being part of another object or how it can help object being part of Some Transaction or Process. Like for a Product in a Retail System its Unit Price is the supporting attribute which adds a whole new meaning to it and is being used when we put that product on an invoice, order or quote.

  3. Optional Attribute(s) are another kind of attributes we find for an object which if added adds more meaning to it but its absence does not hurt either. A Slideshow or Thumbnail image, Video, a GI information about the product could be classified as as optional attribute. Which when present adds more detail to the Product but if they are not present the product object can still be used. They also do not participate in any transaction etc, they just give a more clear picture about the product.
But then the question comes is it is okay for the individual objects (entities) but how do they fit in the big picture? Lets visit any Database and check out how it relates to the concept we just discussed. In a DataBase we have a DB Schema which has Tables, Procedures, Triggers, Indexes etc. The Tables are the essential part of a DB Schema, Procedures and Triggers are the supporting elements of the DB Schema and Indexes form the optional elements of the Database.

During the discussion we also realized that if we find the best way the smallest Object(Entity) can be represented in the System, then we can then use the same philosophy to represent the Bigger Entities (Database Schema) and then using multiple Schemas we can represent the System and Since we build the System on a common principle we can have the computer systems talking to each other without any human intervention.

The idea on paper looks good and as simple as ABC but in order to make this a reality we need to go through Dimension Shift (Higher than Paradigm Shift). This calls us to change the way we look at things, the way we analyze the events, things etc around us, the way we channelize our thoughts.

Until Next Time...:)