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.