Saturday, December 30, 2006

Resolutions for the New Year

Its time of the year when we take a stock of what we had planned for the previous year viz a viz what we achieved. What we left on the way and where we gave up. But while on one hand we talk about what happened in the past we also make resolutions for the new year. While the new year eve celebrations are just under 48 hrs away we already have list of things TODO in the new year. While I was looking at what I am planning to achieve in the world of Semantics Database I can see that in the coming year I need to:
- Work on Finding the best way to represent the dynamic data.
- How to get over the problem of merging two different Taxonomies and Ontologies.
- How to represent the Knowledge (we gather over a period of time) and subsequently build a Knowledge Base.
- How to Import the Knowledge from an existing Knowledge Base.
- What logic we need to apply to process the data which is not represented in linear form like we get from a SQL based RDBMS.
- How do we ensure that the Process Result are kind of understood by the computer.
- How do we manage the interaction between two or more agents and define a Trust Relationship among them.

There are lots of things which I am planning at this moment to do.

Recently I was contacted by a someone from other part of the world and he suggested me to have a post on Semantic Approaches from an Industry Vertical Perspective. Same in the line of what ACCORD does. This is one more task I am adding to my list of TODO for the year 2007.

I am not sure how the list will appear one year from now when I am doing the stocktake once again. But I am sure of one thing that the list will not be the same as it is today. There will be few new items added, few removed of become obsolete. But yah the New Year is bringing lots of promises with it and I expect to have a busy year like It was in the year gone by.

Have a Wonderful and Prosperous Year Ahead...

Until Next Time..:)

Saturday, December 23, 2006

Holiday Wishes

Wishing Everyone a Merry Christmas and Happy and Prosperous New Year Ahead.

While this year is about to come to an End. I look back and retrospect what I learnt during this year. While there were ups and downs, rights and wrongs, successes and setbacks. But at the end it was one of those years of my life which brought lots of opportunities to learn something. The new year eve which as per calendar was around 51 weeks ago seems like something which happened yesterday. The Antarctica Flight trip was one of the most memorable experience I had this year. Added to that meeting few wonderful people on this planet. I am not going to put their names here :).

As far as Semantic Database is concerned. Last week I got a new concept of building a Database which supports Semantics rather than making it a business logic of an application. I had an initial discussion about that with few friends and they seemed to have liked it. It is just a concept which I am penning down. If you are interested in knowing what I am talking and also want to be part of that, mail me your gmail id and I will invite you to collaborate on the document.

Until Next Time.. :)

Tuesday, December 19, 2006

Why Semantics?

I was asked once by a friend of mine as what is Semantics? I gave a very short explanation as what I am trying to achieve. But then the flow of question started as:
- Why we need such a thing?
- Why we need semantics?
- Are current technology not good enough?
- Is this going to be just another jargon?

To understand this lets go back to where we started. We refers to human beings. Going few hundred yrs back in time if we look back at where we were. Human beings were living in a closed society, We were not interacting with other culture, countries much like we do today. Only few peoples were able to travel to different places meet different people etc.

The same thing happened to computers as well. When the first computer was invented it was mere a device to perform calculation. Over a period of time it was transformed into a Stand-Alone system. Then came network, followed by internet and world-wide-web. This changed the way computers work, they interact, they collaborate.

Today Human beings are traveling to different places, interacting with different cultures, learning / adapting different environments. We are able to communicate with other cultures, peoples without any boundary or restriction. In a nutshell human intelligence has increased.

Then the question which we need to ask here is what does computers do? They perform our day-to-day tasks. They perform tasks on our behalf.

So for them to keep doing what they were designed for (i.e. performing tasks on behalf of human being), their intelligence level has to be increased. This is not an option anymore. It has to be done otherwise computers will not be able to meet their primary objectives.

The human intelligence has increased, computers intelligence has to be increased. Computer need to understand the human way of interpreting the data, understanding the data. Unless we put this sort of intelligence in computes they will not be able to perform the job on our behalf.

Linking back to one of my earlier post about Semantics, Its the study that relates to signs of things in this world. This is the way we human beings operate. If we make the computers understand the way we do, they can definitely perform the kind of tasks we do.

At the end in my opinion, Semantics is not just another buzzword. It is the way the computers are going to understand the things in future. It is more to do with philosophy than the computer science itself.

Until Next Time...:)

Monday, December 11, 2006

Is World Ready for AI?

Last week I was discussing Artificial Intelligence and the Semantic Web (W3C roadmap) with few friends of mine. Every body started to describe the kind of work they are doing and how they see the whole thing will flow in future.

In the middle of this discussion It just strike in my mind, Is the world ready for that kind of sophisticated technology. We are talking about data being located on internet and one can get complete information about where he/she is located on his/her palmtop.

There were few things which came out during the discussion:

1. There is a need of such a technology which can make use of the data stored on array of servers dispersed geographically.

2. There is a requirement for such an agent who can read those data, especially the sensitive data about an individual.

3. There is a requirement of an authentication mechanism where an individual can gain access to his data and provide controlled access to others. It is desirable to have the customization feature based on an individual user or a group of users (boss, friends etc).

4. There is a requirement of an uniform way to represent the data. Here I see XML as a potential solution. Refer to my earlier post Representing Knowledge Using XML where I've put forward a case to use XML as one of the way to represent knowledge (data).

5. There is a requirement of allowing the agents (Agent of user who requests and Agent of user who processes the request) to choose the best possible algorithm for producing the output. But at the same time the room for human intervention should also be there.

The list goes on and on. But at the end when I ask a question is the world today ready for such a sophisticated computing mechanism? Unfortunately the answer I get is we are not there yet. We might have to wait for few more years before we can start seeing these (listed above) being part of normal human being.

Until Next Time... :)

Wednesday, December 06, 2006

Representing Knowledge using XML

Yesterday I was reading a book on XML and structure of a XML document and then suddenly it striked me that, it can be used for representing any kind of data.

1. XML is a metalanguage that allows user to define markup of their document using tags. User can define their own tags and are not bound by the number of pre-defined tags / keywords as in HTML.

2. Nesting of Tags introduces structures. The structure of documents can be controlled using DTDs or Schemas. This can help in verifying the data before it goes for processing.

3. XML separates content and structure from formatting. XML is meant to carry data only and leaves lots of rooms for programs to present it in a different way. Using appropriate XSLs we can generate from an input XML a PDF, CSV, HTML and many other outputs.

4. XML is the de facto standard for the representation of the structured information on the web and supports machine processing information.

5. XML supports the exchange of structured information across different applications through markup, structure and transformations.

6. XML documents can be queried using XML Query language.


While XML has lots of advantages it also has few drawbacks as described below:

1. Nesting of tags does not have standard meaning. They don't always represent the correct structure.

2. The semantics of XML documents is not accessible to machine, to humans only. Machines just parse the XML documents as Child Nodes or Attributes etc. They do not carry any special meaning for machines to understand.

3. Collaboration and exchange are supported if there is an underlying shared understanding of the vocabulary. XML is well-suited for closed collaboration, where domain or community-based vocabularies are used. It is not so well-suited for global communication. As long as the participating organizations use the same schema they can share the XML document or interpret them. There is no such thing as global representation etc.


While the number of benefits appear to be outweighing the drawbacks. I guess still there is lots of work which needs to be done in order to use XML as a way of representing data in a way which can be understood by machines.

A common semantics or grammar is required to do so. What is your opinion?

Until Next Time :)

Tuesday, December 05, 2006

Today's World-Wide Web

The World-Wide Web (or World-Wide Wait) has changed the way we communicate with other human beings and the way business transactions take place in this today's world. While this has changed the way we see the world. It has also changed our perception towards computers.

When computer was invented first it was mere a computing device used for numerical calculation. But since then they've evolved over a period of time and today they are not limited to numerical calculation. Today they are primarily used for information processing, databases, text processing, games, scientific calculations to name a few.

Coming back to WWW, in its current form it contains informations which can be consumed only by human being. No matter whether we look at a static HTML page or a dynamic web page where the information is retrieved from database, they are presented in a form which can be understood only by human beings. They have no significance for machines or computers.

The typical application of today's web includes surfing and browsing for information, making purchases online, connecting to other peoples etc. But if we look at these processes the main thing which comes out of it is, they are all driven by human although there is a software which supports all these activities. But they are limited to things like saving and retrieving data, establishing connections, routing to different webservers, establishing communication with other servers around the globe etc.

But these all have their own limitations and the biggest limitation is they have the pre-defined set of instruction as and how to do. The highly-sophisticated machines cannot decide their own course of action. They cannot process the information on their own.

In next in the series we will discuss what are the problems faced by the Current Web architecture.

Until Next Time.. :)

Tuesday, November 21, 2006

The Joy of Being a Developer

Being in this profession for almost 11 years now, Sometimes this question runs through my mind as who are we? As it appears or as the world thinks of us, We (Developers) are a bunch of very very analytical and logical thinking guys. We try to analyze all the problems in the world in a logical manner. But nobody cares or gives a thought about the creative side of ours.

As a part of the developer community, I often think why we develop? There are thousands of reasons for many developers around the world. For a big chunk this is to earn for living. For few of them they develop to earn extra cash which can give them a rich lifestyle. I develop because I like to do it. Its not something which I was forced to do rather I love sitting in front of the comp and writing code.

But for most of us we are missing the fun of being a developer. The real fun of being in this profession is the creativity. I am sure we all must have jumped with joy when our first Program (Hello World) worked properly. But then on I personally experienced the satisfaction when a C-code of 4 line could restart the old DOS PC and we cried our heart out (with anger) when we found that the program which is crashing is because of the poor code written by the Tool Developer itself (which we relied on). Because those lazy programmers just wanted to get the job done.

More often than not we don't realize the amount of satisfaction we(developers) could get out of our profession by changing the way we look at our job functions little bit. Why not take the new task as a challenge for doing it better way than just doing it. The challenge could be anything, writing a code with fewer key-stroke, writing an optimized code etc. While this generates the excitement while doing the regular work, it also increases our Knowledge-Base.

All it calls for is some sort of out of box approach towards our regular job. The Joy of Being a Developer :)

Until Next Time.. :)

Wednesday, November 15, 2006

Sun OpenSources Java

These days almost all developer sites have only one News on their front page. Sun Open-Sources Java. I am sure as a reader you must have also heard / read this by now.

Available today are the first pieces of source code for Sun's implementation of Java Platform Standard Edition (Java SE) and a build-able implementation of Java Platform Micro Edition (Java ME).

Details are available at: at http://www.sun.com/opensource/java.

In addition, Sun is adding the GPLv2 license to Java Platform Enterprise Edition (Java EE), which has been available for over a year under the Common Development and Distribution License (CDDL) through Project GlassFish(TM).

Sun is expected to release a buildable JDK in the first quarter of 2007, following established free software community practices for licensing virtual machines and their associated libraries.

What does this mean to the developer community? Now we as a Java developer will have chance to participate in evolution of Java platform. This was a much awaited move from Sun and the talks were on for quite sometime now.

Until Next Time...:)

Monday, November 13, 2006

Human Brain and Quantum Physics

A while ago in office I was having a discussion related to Quantum Physics and modeling the human brain. It was a good discussion where Brian was explaining his experiences with modeling and representing realities in terms of partial differential equations.

Human brain is a collection of nerves tissues and they have a very unique way of storing information and retrieving it. Considering the fact that the number of such tissues are in order of billions and there is a mesh kind of structure they form. But then again as we study more about humans and the way human brain work. Few questions pop up immediately:
1. How does human brain stores information?
2. What is the format in which the information is stored in the brain?
3. How does it relate one information to Other?
4. Why do we remember something which happened long back but forgot something which happened recently?
5. Why it is easy for us to work with images and pictorial impression and difficult to do lengthy calculations?

There are many such questions which can be asked about it. But one of the question which I am very interested (personally) in knowing is how does it relate one form of information to another?

While studying books on Knowledge representation I did come across few pointers which tell me how the informations can be inter-related. At this moment I am not in a position where I can comment more on that. But as I progress further on this topic I will keep posting what I learn.

There are many such questions I am coming across these days. As I am getting more into the world of Semantics and ways to interlink informations with each other too many HOWs and WHATs are popping into my mind.

Until next time :)

Thursday, November 09, 2006

Knowledge and Its Representation

It was a while ago when Someone asked me whether I know about something (related to the topic we were discussing at that time). It immediately triggered a question in my mind as:
- What do we mean by Knowledge?
- How can I say I Know something?
- Is Knowledge something we can relate to in Real-World?
- How do we represent a Knowledge?
- Is there any standard way to represent Knowledge?
- How will computers represent Knowledge?
- Can Knowledge ever become obsolete? If so then can we still call it Knowledge?

What I understand is that Knowledge:
- Is not a Physical Object
- Is an abstract product of the human consensus
- Cannot be measured
- Never becomes obsolete, even though we don't use it. The Knowledge about not using a Knowledge is again a Knowledge
- Can have different representations in different language

Many people talk different thing about representing knowledge. But in a nutshell it is a medium of human expression, medium of effective computation.

What I feel is there has to be a universal way to represent knowledge. Sign language (Semiotics) have managed to achieve this upto an extent but still lots of work needs to be done in this area.

Until Next Time...:)

Friday, November 03, 2006

Back To Brisi

Back online after 2 weeks vacation in India. Had a good but hectic holiday back home. Was home after 5 years for Diwali celebration with family :).

Will Start posting again soon. So keep watching for this space.

Until Next Time ... :)

Wednesday, October 11, 2006

Definition of an Entity

Quite often I run into a situation where I ask myself:
- Why I need to define a particular object?
- What I neet to add to the object to make it complete?
- What will make it complete?
- What is mandatory for an object to have?
- What can be treated as optional?
- How do I classify what is mandatory and what is optional for the object?

My approach towards solving these question is what is the bare minimum requirement for the entity to exist. Like for a person to exist in this world we need First Name and Last Name. Rest other details attached to the person is based on where we need them. But name is something which is unique to the person in the system.

But then again it is also driven by where the entity is used. A person's date of birth and Joining Date is mandatory if the person is part of an organization. But they are optional if the person is being treated as Supplier or Customer.

I am still exploring on this topic and hoping to find an answer soon.

Until Next Time :)

Monday, October 09, 2006

Application of Mathematical Logic

In my last post I left with two topics one of them is Application of Mathematical Logic. As I understand it leaves many people wonder what is the Mathematical Logic and how is it related to Computers and for that matter Semantics?

Application of Mathematical Logic = Applying Mathematical Logic or Usage of Mathematical Logic. In order to understand what it means it is better to understand the Mathematical Logic First.

Mathematical Logic is a specialized sub-field of mathematics where we deal with Formal Systems in relation to the mathematical concepts like Sets, Numbers and computations etc. It has an important role to play in the Study of Foundation of Mathematics. It is not much of of the Logic of Mathematics rather instead it is Mathematics of Logic. It deals with those parts of the logic which can be modeled and studied mathematically and also includes area of pure mathematics like Model Theory and Recursion Theory.

It was a while ago when I was discussing the same topic with Nathan and there we were trying to find one common language which is being understood by both human and the machines. While Humans can understand different languages the computers can understand Machine language well. Things we humans find cumbersome to do like Calculating large numbers, analyzing large volume of data etc are cakewalk for computers but things what we find easy like Face recognition, Voice Recognition are pretty difficult and at times nearly impossible for computers to perform.

So where does it leaves us. If we go back and have a look at the Applied Science everything revolves around mathematics. All the complex calculations have their mathematical into it. A while ago I was watching Matrix and the idea of representing human structure as Matrix really hit me hard. I started to think is it really possible to represent a complex structure like human in terms of Matrix? Well nothing seems to be impossible and if that is the case then Mathematics is the language which can bridge the gap between Humans and computers.

Going back to what Semantics "is the formal science of the conditions of the truth of representations" Which also can be related to mathematical equations. I have a strong feeling that mathematics is one of the ideal mechanism to represent the truth. Which will also mean that It can be used to bridge the gap between human and computer's interpretation of the Logic.

I am still in the process of exploring how the mathematics can be used for writting applications which makes human language understandable to computers.

Until Next Time... :)

Thursday, September 28, 2006

So What's big Deal about Semantics

More often than not I have to face this question from my friends as what I am doing these days and what kind of project I am working on. It use to be a joke among our friend circle in India as "What is the Similarity between a Beggar and a Software Professional? Whenever they meet they ask only one Question Which Platform?". I guess more or less we Software professionals are like that, especially those who fall under one special category called GEEKS :)

But the next moment I am faced with another set of questions. I tell them that I am working on Semantic Database. This starts a new set of questions. Its a new area of computer science and is not known to many IT Professionals still. Few of them even went to ask me which company's product is Semantic Database as they were confused with normal database and also why did I not try oracle database than going for Semantic Database. This reminded me of early days (1996) of my career when I started working on Delphi and whenever I told my friends that I am working on Delphi the first question they asked then was "Is it a Database?"

In my Last Post I left with a Question "What is Semantics?"

As per Wiki "Semantics refers to the aspects of Meaning that are expressed in Language, Code or other form of representation". Semantics is the study that relates signs to things in the world and patterns of signs to corresponding patterns that occur among the things the signs refer to.

Then the Question comes is What am I doing with Semantics. How is Semantics related to Computer Science. In computer science, Semantics is considered in part as an application of mathematical logic. Semantics reflects the meaning of programs.

Here We come across few new Terms like
- Application of Mathematical Logic
- Meaning


We will deal with these in Subsequent posts.

Until Next Time...:)

Monday, September 25, 2006

Role of Primitives in Semantic Language

Its Monday evening and I am back to my books. After a weekend away from technical reading I am back to normal reading now and also discussing online with my mate Nathan about Semantics and the philosophical concept of Semantics.

In search of finding the root of semantics or what is required to make something semantic. I was digging into books and articles and in one of the articles from one of the famous author so far (John F Sowa), I came across something which is so good to be true. He explained what it is required for a Natural language or First order language to be semantic.

Every Natural languge or the First order logic deals with five primitives. They are called semantic primitives because they go beyond syntactic relations between signs to semantic relations between signs and the world. Any notation that is capable of expressing these five primitives in all possible combinations must include all of FOL as a subset. As an example, the WHERE clause of the SQL query language can express each of these primitives and combine them in all possible ways; therefore, first-order logic is a subset of SQL. Different languages may use different notations for representing the five primitives:

1. Existence.
In most natural languages, existence is implied by mentioning something. For emphasis, languages also provide an explicit existential quantifier such as the word some. In the algebraic notation for logic, existence may be expressed by an explicit symbol, such as $. In SQL, existence is stated implicitly by mentioning something or explicitly by using the keyword EXISTS. A real World Example could be something like "There is a Person". This statements emphasizes on existence of the person.

2. Coreference. To say that two different signs refer to the same thing, natural languages use a variety of methods, both explicit and implicit: pronouns, determiners, inflections, and forms of the verb be. Most linear notations for logic use variables and the equal sign, and graphic notations use connecting lines or ligatures. Like other linear notations, SQL uses variables and the equal sign. In real-world we can equate to something like "He is my Friend". Here we are referring to someone as a Friend.

3. Relation. Content words in natural languages express some information about at least one entity, known as the referent of the word, but they may also relate or imply other entities as well. The verb give, for example, refers to an act of giving, but it also implies a giver, a gift, and a recipient. In SQL, relations are called tables. A Statement like "Michael Schumacher Drives Ferrari". Here the relation between Michael Schumacher and Ferrari is being established.

4. Conjunction. In both natural and artificial languages, conjunction may be expressed implicitly by making one statement after another or explicitly by a word like and or a symbol like Ù. SQL uses the keyword AND. Like Samir Lives in Australia and Possesses Indian Citizenship.

5. Negation. All natural languages and most versions of logic provide words, inflections, or symbols to express negation. The biggest variations from one language to another are in the methods for distinguishing the context or scope of what is negated from what is not negated. SQL uses the keyword NOT with parentheses to show scope. e.g. He is not Working.

In our day to day life we make use of these primitives numerous times. And they have become part of ours. This poses a very legitimate question is "What is Semantics?"

It is coming in next post..

Tuesday, September 19, 2006

So What's the big deal about Atomicity

Often I have to face this question as why do we cry so much about atomicity? What does atomicity has to do with Software Engineering? When I started to find out more about "Atomic Theory", I came across a term called Atomism in philosophy. According to Wikipedia (http://en.wikipedia.org/wiki/Atomism), The Atomism is defined as "all the objects in the universe are composed of very small, indestructible elements - atoms. Or, stated in other words, all of reality is made of indivisible basic building blocks. The word atomism derives from the ancient Greek word atomos which means "that which cannot be cut into smaller pieces".

Now the question comes back to how it can be related to Software Engineering. To answer this question lets look at a Software System. A Software System comprises of many small - small independent functional modules. Each module performs a specific task.

While designing a Software System if we break a big system into smaller and independently managed modules who can work in isolation our task becomes simpler. The whole system can then be developed easily and tested in its own right.

Atomic theory also implies that a system is whole of its parts. It means the systems behaviour is the combined behaviour of all its parts or sub-systems.

Until Next Time...

Monday, September 18, 2006

Semiotics and Semantics

I was reading an article from John F Sowa on Semiotics and Semantics and there is somethign I found very interesting in that article. It goes back to what semiotics and semantics is all about.

The study of signs, called semiotics, was independently developed by the logician and philosopher Charles Sanders Peirce and the linguist Ferdinand de Saussure. The term comes from the Greek sêma (sign); Peirce originally called it semeiotic, and Saussure called it semiology, but semiotics is the most common term today. As Saussure (1916) defined it, semiology is a field that includes all of linguistics as a special case. But Peirce (CP 2.229) had an even broader view of that includes every aspect of language and logic within the three branches of semiotics:

1. Syntax. "The first is called by Duns Scotus grammatica speculativa. We may term it pure grammar." Syntax is the study that relates signs to one another.

2. Semantics. "The second is logic proper," which "is the formal science of the conditions of the truth of representations." Semantics is the study that relates signs to things in the world and patterns of signs to corresponding patterns that occur among the things the signs refer to.

3. Pragmatics. "The third is... pure rhetoric. Its task is to ascertain the laws by which in every scientific intelligence one sign gives birth to another, and especially one thought brings forth another." Pragmatics is the study that relates signs to the agents who use them to refer to things in the world and to communicate their intentions about those things to other agents who may have similar or different intentions concerning the same or different things.

What I found is Semantics is all about how we represent real-world into the world of computers. It is all about how the smallest piece of information is represented in the whole universe of data and how it fits in the context of the big picture.

Thursday, September 14, 2006

Why RDBMS is not suitable for Semantic DB

Since the day I started working on Semantic DB, I found that there is a need for a database which is very flexible and not rigid like RDBMS. I know many people will argue why I say RDBMS is rigid. Here is why I see RDBMS not working for me when it comes to store objects in semantic way.

1. It has a very fixed Structure. Define once and let all the objects fit into the structure.

2. The data is stored in a contiguous block in the database.

3. The chances of duplication is higher. I mean to say that a value cannot be uniquely identified in the system.

I guess I am looking at the wrong technology to solve my problem.