Sunday, December 23, 2007

The Issue of Annotation

A while ago I was doing searches on Google Scholar, ACM and IEEE databases to find some good references on Web Service Annotation. To my surprise I could find only few papers which had some emphasis on annotation. It made me think whether the issue of annotation is really an issue or not. I could find lots and lots of work on WS Composition, Automated Discovery, Workflow etc but annotation was something left behind by many researchers around the world. To me annotation is a research problem because:
  1. With the growing popularity of Web services, there arise issues of finding relevant services, especially with the possibility of the existence of thousands of Web services.
  2. Web Services are typically used as part of larger Web processes that result from Web services composition. Current Web Service standards have focused on operational and syntactic details for implementation and execution of Web services. This limits the search mechanism for Web services to keyword-based searches.
  3. With the growing number of Web Services the current search mechanism (keyword-search) is not going to be feasible way to find Web Services. As the keyword search will return virtually every service which has the keyword mentioned as part of the description. The user will then have large number of services to filter from (most of them will be irrelevant though).
  4. Semantically described services will enable better service discovery and allow easier inter-operation and composition of Web Services.
Considering the role annotation is going to play in the problem space it is a need of the hour to find a suitable annotation mechanism that will be solve or eliminate the problem to an extent. I would love to know what you think about the annotation and its role in Semantic Web Services. In future posts I will discuss about different annotation models.

To every visitor of my blog. Wish you Merry Christmas and a Happy New Year.

Until Next Time....:)

Friday, October 26, 2007

Evolving Knowledge

In one of my earlier post this year I discussed about atomicity of knowledge in itself. Then in subsequent posts I had an attempt made to relate the knowledge representation to stars. Also had the types of knowledge discussed a while ago. But they are just the bits and pieces of the knowledge is and what we call knowledge. In this post I am going to discuss about the evolving nature of knowledge.

"Change is the only constant thing in this world", Most of us have heard and read this line at different texts, blogs, literatures etc sometime or other in our life. But what do we mean by change here. Are we talking about something totally different than original or an evolution of what was originally available. The evolution at times could be n folds and the next evolved outcome may look like a different thing altogether. But as a species of this planet we have been evolving for billions of years now.

The evolution of life on this planet required billions of years for its first steps (primitive cells, DNA), and then progress accelerated. During the Cambrian explosion, major paradigm shifts took only tens of millions of years. Later, humanoids developed over a period of millions of years, and Homo sapiens over a period of only hundreds of thousands of years. With the advent of a technology-creating species the exponential pace became too fast for evolution through DNA-guided protein synthesis, and evolution moved on to human-created technology. This does not imply that biological (genetic) evolution is not continuing, just that it is no longer leading the pace in terms of improving order (or of the effectiveness and efficiency of computation). This is how we evolved from a primitive cell to the fully functioning (well almost) human being.

When we talk about knowledge. It takes a considerable amount of time to build the first bit of knowledge as that lays the foundation for future developments. One of the requirement of the knowledge is it should be evolving continuously with what is available. One similar example which relates to this nature is Fractals, to be precise Probabilistic Fractals. The Probabilistic Fractals the probability of each generator element being applied is less than 1. in this way, the resulting designs have a more organic appearance. So going back to use this theory in context of knowledge evolution the new piece of knowledge will appear more intelligent than the original piece which created it. The principle of Probabilistic fractal is already in use by computer chip makers. The computers are used to design the next generation chip which is faster and better than the chip which is used to design the new chip.

So the question which arises at this point in time is:
  1. What is the best way to represent this tiny bit of knowledge which can sustain growth at any scale?
  2. What are the other factors we must consider while designing this first bit of knowledge?
  3. Is there a way we can predict the growth path or evolution of knowledge and can influence its direction?
  4. What are the best practices we can or must follow to avoid and reduce chances of errors?
The problem is out there in front of research community. So I assume that there are few people who know the answers as well or at least have made some progress to find the answer. Any thoughts here?

Until Next Time... :)

Saturday, October 20, 2007

Semantic Web and MVC

A while ago I was going through a discussion on Semantic Web and then came across a good post on Web evolution and Model View Controller (MVC) paradigm.

Web 1.0: Only the View is available, the Model is completely missing. The computer can't interpret anything. The computer does what it is asked to do be right or wrong. No wonder the computers were called dumb terminals in the beginning.

Web 2.0: APIs are coming, Controllers give partial accesses to the Model. The computer starts to enjoy. We have the ability to participate in interactive discussion. Facebook, Orkut, Blooger etc are few to implement this. We have been given limited write access on Web. We have started to appreciate this and success of Wikipedia is an example of how much community has appreciated this concept. We are both producer and consumer. The traditional methodology of one producer many consumer does not hold good anymore. Everyone participates equally in the evolution and development of a concept (wikipedia), work (open source) or a process.

Web 3.0: The Model is largely opened, we are finally able to read and write the World Wide Database. The computer can't wait! We are given full access to write based on the access level we have. We are part of a big universe but still manage to keep our own little universe isolated and whenever we want we become part of the big picture. Its an intelligent me part of the We.

Check out my earlier post if you want to know what after Web 3.0

Until Next Time ... :)

Monday, October 01, 2007

Why we need a Common Ontology

In my previous post I started the discussion whether we really need a common ontology? To go into detail of this first we need to find out how ontology is helpful in Semantic Web. To understand it better lets take a business case.

There is a Business A, Who deals with Selling Laptop and their Warranty. Business A sells buys the laptop from Business B and Extended Warranty from another Business C. Now lets consider a Customer D places an order for a laptop with extended warranty. In this case Business A needs to do the following:
  1. Check with B whether they have particular laptop model in available in Stock.
  2. Check with C if they offer Extended warranty for the laptop model (selected from B).
  3. Combine the prices for both the services, Add its own markup to the price and generate final quote for the customer.

Now lets assume that the customer has decided to go ahead with the quote and place the order. In such case A has to place an order with B and also an order with C. The payment will be made to A by the customer which in turn will be routed to B and C as per their quote. When the parts arrive at A, it has to be bundled together and shipped to the customer.

This might look like a simple business case but behind the scene there are lots of activities which take place and most of them are too complex to handle. Also there are non-functional requirements like Data Integrity, Security etc come into picture which the users (customer) is not aware of many a times.

Also there are different document formats, types etc come into picture. Each vendor have their own format to accept the messages and the response is also sent back in a pre-defined format as set by the service provider.

Coming back to the topic how the Ontology is going to be helpful in such a scenario. The Ontology can apply to both the Document Type and Semantics.

Documents Types
here refer to the structure of the business data that are communicated between the trading partners. Documents Type refers to Concepts, Attributes of concepts and relationship between concepts that are ideally managed by and represented within ontologies. Ontologies can in a very precise manner define as well as manage concepts, attributes and relationships between concepts.

The Semantics here refers to the correct population of attributes with correct domain values. Not every value that an attribute can contain is semantically correct. Like the model number attached to Laptop in the business scenario discussed must belong to a laptop. If a desktop model number is used instead that will be correct as far as syntax is concerned but it will not make any sense in context of laptop.

The Ontology Server can be used to store and access the domain and application concepts, like product name, country where it is available, warranty applicable etc, represented in form of ontologies. Since all these different attributes together must belong to an entity which is not only syntactically correct but also each attribute has some sort of relevance to other attribute (as discussed earlier). For this to happen in reality, they all must have knowledge about each other (at least what matters to them) and the cross-verification must be achievable.

A common ontology server comes handy in such cases as all entities and their attributes belong to one common hierarchy and they can seamlessly integrate and refer to each other.

Note to the readers: I would like to hear from you as what you think about it. If you want to discuss this offline, do not hesitate to drop me an email and I will be happy to discuss it with you.

Until Next Time.. :)

Wednesday, September 12, 2007

Web 4.0

In one of my earlier post about What is beyond Web 3.0, I did mention that after Web 3.0 it is going to be Web 4.0? I also mentioned there that Web 4.0 will be about man-machine communication. There have been few discussions since then as what is the meaning of man-machine communication and how different it is going to be in future.

Before we discuss this lets take a look at what is been done so far.
  • Web 1.0 Theme was You. You produce content, You manage the server, You are the producer and I am the consumer.
  • Web 2.0 Theme is We. Lets discuss, Lets interact, Lets build our network. In this both the parties actively participate.
  • Web 3.0 Theme is Me. Its all about ME, my Environment(s), my personal space, people who can see me etc. We are talking about personalizing the Web (and Internet) to suit our individual needs.
So the question arises here is what is left for Web 4.0 to achieve. Well as I mentioned earlier it is all about Intuitive Man-Machine communication. The communication is not just via the command mode, but its based on the thought process generated within us. Sounds like a Science-Fiction isn't it? Well to your surprise many pieces of this puzzle are already in place. Its just that we need to start putting them together and tweaking them to suit each others need. How are we going to change human? We don't have to, thats the best part of this.

The Sigularity Institute is working on similar research projects for advancement in Artificial Intelligence. But that's not the whole point here. That just solves one side of the problem i.e. making machine understand the language. But we humans must have a way to translate our thoughts into that form.

I am sure many of us must have heard or gone through ECG test sometime in our life. We all know what it does. My thought of building such a communication channel starts from ECG sensors fitted to human body when Wearable Computer becomes a common man thing. Using those sensors we can capture the signals generated by human. The generated signals then will be converted to Bluetooth signal by attaching a small device to the computer we wear. We can pair the human bluetooth device with the computer (machine) and establish a communication channel between them.

Of course there will be requirements to build interpreters which will translate the ECG signals to appropriate software code and vice versa. Did I say vice-versa? Yes I mean it. Recent studies in medical sciences have proven that if we generate the similar impulse in our brain we get the same muscles stimulated as though it is happening in front of our eyes. Watch the movie "What the Bleep Do We Know" and you will understand what I am talking here.

Sounds like a whole new channel opening. Well this is going to be the future of communication. I am going to come back with some more thoughts on this and other related technologies.

Until Next Time... :)

Wednesday, September 05, 2007

The Need of a Common Ontology

With lots of talks around about Semantic Web, one thing that stands out among all the terminologies used is Ontology. In my earlier post, What is Ontology, I touched upon the basics of Ontology and discussed only the basics of it. Towards the end of the post I proposed to build a common Ontology Server.

While reading Guizzardi and Guarino and after understanding about ontology in bit detail. I went back to read Knowledge Representation (John F Sowa) Chapter 2. But in this process what come out is a belief that if the Semantic Web is to become a reality and ubiquitous then we must have a common way to represent the entities. Which brings back to the need of a Common Ontology Server.

Going via the definition of Ontology given by the philosopher Willard Van Orman Quine the fundamental question of Ontology is "What is There?" and the answer which came back is "Everything". Now if something has to accommodate everything then it has to be be designed to keep every other interpretation of entities in this world.

Then the question arises is: Do we Really Need a Common Ontology?
Before we answer this question, we must ask what we will be loosing if we don't have a common ontology? In absence of a common ontology we might not be able to represent an entity in an uniform way. Uniform way here means by following a common structure and pattern. The rule layer (as part of Semantic Web stack) will not be able to operate properly. This in-turn will make other processing complex and tedious.

In search of solution I came across the paper "Discovering Semantic Web services with and without a Common Ontology Commitment. Jorge Cardoso. Proceedings of the IEEE Services Computing Workshops (SCW'06), 2006". This paper talked about the discovery of semantic web services without having a common ontology to represent them. But then there are few limitations of this methodology as well and it is not suitable for the original vision of Semantic Web.

I will keep working on it and see what I come across next. If you have any thoughts on this drop me a line and I will be happy to hear from you on this.

Until Next Time...:)

Saturday, August 18, 2007

Normalization Where to Stop?

One of the most important thing we learn in our DBMS subject is Normalization. Whether you are a data modeler, DBA, or SQL developer, normalization is one of those topics we all learn. We learn this either at work or during our formal IT degree. We are taught that there are 5 different normal forms and what goes in where etc etc. But how much do we use them?

Take a look at most production databases. The best you will find that the database has been implemented using Third normal form (3NF). Very few databases reflect higher normal forms, such as Boyce-Codd normal form (BCNF), the Fourth normal form (4NF), and the Fifth normal form (5NF). So, why don't most database designers go beyond the 3NF?

I am not going deep into the normalization and their definition. A google search will bring out all those definitions so I opted to keep the definition out of this post.

How far should you go with normalization?
To be sure, each progressive step may impact upon overall performance. I have seen normalization taken to absurd lengths. In one of the recent discussion one person came out with the idea of different financial document types. As though the world of accounting is going to change. I had to remind him that Accounting is just the recording of historical events :)

A while ago I was reading an article and there the author mentioned about the normalization. Over a period of time I learnt to ask few questions before I decide how much normalization is required.
  1. What is the nature of the system. Is it an OLTP or OLAP system?
  2. What is the nature of DB Query. Are they mostly Insert or Retrieve?
  3. For Part of DB where the inserts are more, its better to have the Data in 3rd normal form.
  4. For system where Retrieve operation is more than Inserts, 2nd Normal form is the best.
Where you draw the line in the sand is ultimately up to you, but you will be better equipped to draw it with a sound understanding of the various normal forms and the risks of not going far enough. And not to forget the business requirement, after all its "Not Your Software" its the users who will be using it not the developers who write it.

Why most designers don't go beyond the 3NF?
There are few factors which affect the level of normalization we choose for the database. Most of my decision to design the database in past were based on the answers I got back after asking these questions:
  1. What is the insert/retrieve ratio?
  2. What is the database used for Transaction Recording/Processing or Decision making?
  3. What is the response time we are looking for in case of Insert, Update, Delete and Retrieve?
  4. What is the estimated peak transaction load on the database also the off-peak hour transaction load.
  5. What is the database deployment strategy Centralized or Distributed?
  6. What is the transaction control strategy. Whether it is Single-Phase commit or Multi-Phase commit?
  7. Is there a temporary Cache implemented or required?
  8. Do we need to maintain the user session or user interaction with business layer is stateless?
Asking these questions does give an overview of how the system will look and to suit the need bes the appropriate strategy can be formed.

Sometime in coming days I will write a post on how to optimize database and what are the common mistakes database designer make. Keep watching this space for the post.

Until Next Time... :)

Thursday, August 16, 2007

Mandatory and Essential

Last night when I logged onto yahoo messenger, I saw this message as one of my friends status message "What is the difference between Mandatory and Essential". At first I thought what's big deal? Are they different? Are they not same? At one point I went to an extreme thinking that his Phd course has taken its toll and he is about to get into second phase of PhD degree where one becomes grumpy, tired and insane :) But the more I started to think on this the more it became evident that Mandatory and Essential are NOT the same thing. They are two very-very different words when it comes to their real meaning.

I remember doing a post earlier this year on Atomicity and Knowledge Representation, I discussed about Mandatory, Additional and Optional Attributes of an object. While I am not going to go deep into philosophical aspect of it, I would rather stay in context of Software Engineering and Semantic Web.

Mandatory:
Mandatory Attributes signifies the bare minimum required for existence. It is the basic definition of any thing(object) in this world. In reference to my earlier post on Atomicity it is the Mandatory Attributes of an object. The bare minimum requirement for any object which exists in any space is Type and a unique attribute (most of the time it is Name) which distinguishes the object from others of its kind in the same space or for any other space where the object is likely to be found.

Essential:
Essential attributes of an entity (object) is the must have attributes for an object in any context or where it has to be used or play an important role. More often than not it is also the mandatory attribute of the object. Referring back to the post I did earlier this year, I see Essential Attributes are nothing else but the Additional Attributes of an object which is required for an object to participate in certain activity or to be used in a context.

In context of Knowledge Representation we can always rely on Mandatory Attributes to be present where Essential Attributes are (due to their contextual nature) guaranteed to be available only if we are considering object in a given context.

Would love to hear your thoughts on this as what you think the Mandatory and Additional attributes are. Whether you see them being same or different, if yes then why?

Until Next Time... :)

Tuesday, August 07, 2007

What is beyond Web 3.0

Recently there have been talks about what the Web 3.0 should be and what it will do etc. Go to facebook, myspace, orkut or any other site where techies come together and most of them you will find talking about Web 2.0 or Web 3.0. But among them there was one gentleman who said that Web 3.0 is going to be about Relationship Economics. It is the user who will drive the next generation of advancement. Lets see

Web 1.0 and 2.0 has been predominantly technology oriented. Starting from a command line browser to pull texts of a server by passing the URL to building websites to facilitate social interaction the journey is been quite long (almost 17 yrs) and in this journey we discovered many technologies and we left many of them. Some of them we still keep with us even after years and some we left along the way.

Web 3.0 is about deep and meaningful relationship, effective networking. If Web 2.0 is about breadth i.e. adding more and more feature and technology advancement, Web 3.0 is about depth i.e. creating an understanding as why and how we can leverage upon them.

Most significantly, Web 3.0 is the turning point where the 100 year cycle of transaction economics is superseded by the next great cycle, usually described as relationship economics. Web 3.0 transcends and includes both 1.0 and 2.0 to provide the platform that provides lift off for this great shift in economic, organisational, social and cultural structures. Web 3.0 is likely to be born out of a major crisis affecting current structures. If you are part of Web 3.0 you will be carried by a great wave. If you're not, you may find it difficult to survive.

But then then thought came to me what is going to be after Web 3.0? Well how about Web 4.0? Seems like a light bulb glowing :) but yes what advancement we will seek in Web 4.0. The way I see is Web 4.0 will go one level further and take the man-machine relationship to the next level. The machines will be able to understand human language and the there will be a change in our behaviors towards machines and vice-versa.

If we call Web 3.0 a paradigm shift then Web 4.0 is going to be the Dimension Shift. I would love to hear your thoughts on this.

Until Next Time... :)

Friday, August 03, 2007

WWW - Past, Present and Future

Lately there have been lots of talks going around about World Wide Web. Some people are giving their best shot to describe what the web is today and where it is going in future.

When I started to look at where the web started back in early 1990s and where it is today and how it evolved. I found the whole phenomenon quite interesting and the trend with which it is developing is quite interesting too. In this article its my attempt to capture the Past, Present and Future of World Wide Web. The special emphasis is put on the future trends of Web and how I see it evolving.


Past
It was back in 1991 when Sir Tim Berner Lee along with his colleague Robert Cailliau and Necola Pellow developed the first web browser. This was a command line interface which could read the content from a given location (Servers). But that was just the beginning of a whole new era for the humanity. These browsers were capable of pulling out content (text only) from a server.

It wasn't until 1993 when Marc Andreessen and Eric Bina invented the "" tag for HTML which revolutionized the way web pages look and allowed developers and artist to unleash the creativity. In the same year MIT developed the technology to index and count the web servers which took the architecture of Web to next level.


Present
Today when we talk about Web we talk about many things like Dynamic Web Sites, Blogs, Animations, Social Networking etc. In a nutshell we have everything we need to suffice our requirements. If we have to summarize the Web today we can describe following characteristics for the Web today.

Portability: Today we are not just limited to browse web through our desktops. Instead we access web from our mobile devices, hand-held devices, TV, Digital Camera. Also the choice for input device is not limited to keyboard and mouse. We also use Stylus, voice recognition etc to interact with web.

Diversity: When first started web pages were available in only English. But today we have many languages in which there are web pages available. Google Search Engine is available in 100+ languages and its increasing. Though the percentage of pages in English is still more compared to other languages but, other language web pages are increasing their share of pages on Web.

Distributed Technologies: Web is becoming distributed now. We have technologies like Web Services which allow the user to share the applications over Internet (not Web). We can not build a new application by using services which is already out there available.

Collaborative: In today's web if we have to name one technology which is been evolutionary it is collaboration. Wikipedia is the largest online encyclopedia available today and contains information about almost everything. The wiki is the best example of what collaboration can produce.

Social Networking: Today we have websites which facilitate social networking and allow users to interact with other users of the site. MySpace, Orkut, Facebook are few in this list who have got a larger share of this market. There are other sites like LinkedIn where one can create their professional network. So in a nutshell the web is not just publish and read.

Consumer and Producer: Today the user is not just the consumer of the information published on the web. The user is also the publisher and consumer at the same time. A web user can publish his thoughts / ideas etc in form of a blog which may include some of the texts which is been published at some other site or contains a link to an external site.


Future
With so many technology choices available today, one might as well start to think what new we need on web? We have the tools and technologies which are pretty much sufficient for our requirement. The current buzzword in Industry is Web 2.0 (which is the technologies available today) and Web 3.0.

The evolution of Web 2.0 will lead us into Web 3.0. It has enabled the users to start thinking in a new paradigm (which is really an old paradigm) collaboration. This was the original idea why World Wide Web was created in the first place. Web 3.0 (aka The Semantic Web) - is really just an extension of the original collaborative concepts which was the main driving factor for the World Wide Web. But it makes the data connected in a sense that is more relevant to the user i.e. based on Contextual.

With the advent of Web 2.0 we have seen the rise of user generated Taxonomies, Folksonomies, and other related Information Architectural Methodologies. However they are still limited as in 2.0. The classic example is the taxonomy of one source does not equal to the taxonomy of another source. Though with the growing usage of open API's we are starting to see the taxonomies shared on a collaborative level between systems. In the Web 3.0 conceptualization we will see the data is shared not through API's, but through the structure of the data, i.e. through the meaning and context of the data.

In the Semantic Web the data (entities) will be linked to each other at a deeper level which is most likely to be in their raw form. The linking among the data is not going to be pre-defined rather it will be based on the few aspects like Context (in which they exist), the meaning, any other similar behavior they might exhibit. According to few I had discussion with in past they feel that there will be some kinds of standard emerging to link the data. But as we have witnessed in past the standards are not always the best approach either. More often than not those standards are heavily influenced by vendors and their proprietary technologies.

But then the question arises is how will this work out? and how will be able to achieve the Semantic Web? Whether we ever be able to achieve it or not. One of my friend (Nathan McCosker ) with whom I regularly discuss on Semantic Web thinks that it is going to be an iterative and evolving process. Initially there will be few groups coming together to form a standard what we may like to call Web 3.0 but then there will be further corrections and the standard will evolve and we may as well end up versioning them as 3.1, 3.2, 3.x etc.

But this is not where it ends. Current research works have no (or very less) emphasis on what the user experience is going to be with Semantic Web. The research is useful and accepted by masses only when it is done for the masses. The research labs around the world have started to throw different technologies like RDF, RDFS, OWL, RUL, RVL etc in the basket but they have not touched the nerve i.e. the problem they are trying to address or the pain they are trying to relieve. The technology is not the bottleneck here. Today or tomorrow the experts will find the technology solution to make the things happen, but the biggest hurdle is why? As in "The Matrix" Movie they always talked about the reason/purpose for anything to happen we need to apply the similar logic here and find out why we need the Semantic Web and when (not if) that is defined it will not be a theoretical discussion at all.


Suggested Reading

Those who are interested in knowing more about Web 3.0 and beyond would like to read through the following links.

http://www.iht.com/articles/2006/05/23/business/web.php
http://www.pcmag.com/article2/0,1895,2102852,00.asp
http://www.androidtech.com/knowledge-blog/2006/11/web-30-you-aint-seen-nothing-yet.html
http://www.roughtype.com/archives/2006/11/welcome_web_30.php
http://www.alistapart.com/articles/web3point0

Conclusion
Semantic Web is becoming next buzzword in the industry and without knowing what it is in detail many people have started to claim their product being suitable for Semantic Web etc. So far it is been purely theoretical in approach and those who are claiming that their product is based on Semantic Web technologies are still on the way. They are not there yet.

Until Next Time.. :).

Tuesday, July 17, 2007

Interoperabiility

Interoperability is one of the buzzword that with the Advent of web 2.0 is become famous day by day. Every now and then some company announces that their product is fully-interoperable etc. Slowly it is becoming one of the most abused terms as well, like many other terms associated with Semantic Web like Ontology, Taxonomy etc.

According to Wiki the term interoperability with respect to software is defined as, the capability of different programs to exchange data via a common set of business procedures, and to read and write the same file formats and use the same protocols. (The ability to execute the same binary code on different processor platforms is 'not' assumed to be part of the interoperability definition!)

In a simple sense the term interoperability can be defined as Ability to work with each other, Without knowing the details of how it works. But it is easier said than done. We do have some standards like Web Services(WS) which can very well be useful to achieve interoperability but at what cost? If we use WS then we are tied to the input and output message structure and given the case sensitive nature of XML it becomes a nightmare at times (at-least to debug).

But at the same time if we can achieve the persistent publish and read mechanism for the systems then it should not be a problem as I see. What is required here is:
  1. A common structure at least in theory which could be understood by an application at runtime. What I mean here is we should have the data and data structure (metadata) also persisted somewhere. So that application can pickup metadata and parse it to understand the data. Upto an extent XML, XSD or RDF and RDFS can solve this issue. The XML (along with its subsidiary technologies) is the best bet here though there are numerous overheads associated with it.
  2. URI (URL) based access of data. So that one application can save the data to a location which is picked up by another application. Also the consideration must be made to ensure that it accidentally does not erase data written by another application if the space is shared by many applications.
  3. Some way to notify application that data is persisted so that another application can read the data. Alternatively the message for recipient can be written in a common pool which the recipient inquires periodically to see if it has an incoming message. A Message Queue implementation (JMS, MSMQ) will be handy here.
  4. A parser at both Sender and Receiver end to parse the metadat and then interpret the data. For reasoning the metadata and data both OWL-S can be used. Not sure how much helpful it will be to use Description Logic here though.
I guess this is just the beginning and I am going to collect all these bits and pieces sometime to bring them together.

Until Next Time.... :)

Tuesday, July 10, 2007

Graph Theory and Semantics

Last Weekend I spent most of my time revisiting Graph Theory which I studied first in 2001 during my MCA course and since then had forgotten quite a lot of it. At that time I did not find this topic that interesting and studied just for the sake of clearing exam. But last week I was going through some links on Wikipedia and it struck to me if I can use Graphs to show the relationships among objects in a system where the objects are attached to each other based on some sort or relation.

Going back to what John F Sowa described in one of his book Knowledge Representation about concepts and relations. In my opinion there lies the potential of using Graph Theory to list the relationships among different concepts existing in the same space.

Each Vertex of the graph could be the concepts as defined by Sowa and the Edges of graphs could be the relationships between the two concepts. The Edges can be uni-directional or bi-directional depending on what kind of relationship the two concepts share. The immediate benefit of this as I see is, it will facilitate the visualization of the system where each of the object exist in isolation.

While this is the thing that came to my mind when I had a read through the Graph Theory last week, I can see it being applicable to more areas as far as semantics is concerned. I am expecting by this weekend I will have a good amount of information as whether and how much graph theory can help in semantic space.

If you have similar thoughts would love to hear your views on this as well.

Until Next Time... :)

Monday, July 09, 2007

Off Topic - A Mysterious Visitor

Hello to all the readers and visitors of this blog. I thank you for the time you spend reading through the thoughts I put in here.

However recently while looking through my visitors log I found that there is a Mysterious Visitor to the blog who is located in LA, California and (s)he loves the blog so much that he makes it a point to visit at least 4-5 times a day at times. I am yet to get the complete detail of this visitor and just wanted to let him know that I am very close to know who you are. But before I do that it will be good if you can let me know little bit about yourself. I will be happy to exchange thoughts with you.

My email id is located on top left of the blog page and last time I checked it worked fine so that should not be a problem either.

Little busy these days reading graph theory and its application(s). I am trying to find a possibility to represent a semantic relation using graph theory. I will be back with regular content in couple of days again.

Until Next time.. :)

Wednesday, July 04, 2007

Intelligent Reasoning - Demystified

Often in the texts of AI, I come across this term called Intelligent Reasoning. Different texts give their own definition of this term. More often than not the questions related to Intelligent Reasoning comes back to me.
  • What is Intelligent Reasoning?
  • How to define Intelligent Reasoning?
  • What is the requirement for a reasoning to qualify as an Intelligent Reasoning?
In quest to find answer to my questions, I first looked at different sources for the definition of meaning hoping that adding intelligence to the process of reasoning is the right answer. But after reading tons of text I understood reasoning as :
A way or process to base our beliefs, actions, philosophies, concepts etc. This is in layman's term what I understood about the intelligent reasoning. There are resources available who had more complex definitions than I can understand.

Now that I understand what the reasoning is, the questions about the Intelligent Reasoning again popped up. I looked back at the questions once again and here is the answer I came up with. This is related in context of Artificial Intelligence and applies to machines only :)
  1. What is Intelligent Reasoning? A process to establish a statement, a theory, belief or action in a way as it is performed by human beings.
  2. How to define Intelligent Reasoning? We have various ways of looking at things, 1) the way they appear or 2) the way they function. While the first approach focuses on Why and What, the second concentrates more on How?. Using these as a mechanism to based a concept could be closely defined as an Intelligent Reasoning Mechanism.
  3. What is the requirement for a reasoning to qualify as an Intelligent Reasoning? Any reasoning mechanism which is built on the top of existing facts and which co-relates statements, facts to deduce another fact/statement which is not obvious from the fact could be classified as intelligent reasoning. Say for example given the statements like
    • A is Brother of B
    • C is Sister of B then we conclude that
    • C is Sister of A
Here in this example above the third fact is derived on the basis of first two facts. The mechanism to reach to the conclusion (3) is classified as intelligent reasoning.

AI being a relatively new field of study, the intelligent reasoning derives its meaning from various other streams like Mathematics, Psychology, Biology, Statistics and Economics who have contributed a lot towards distinguishable notions of what constitutes intelligent reasoning.

The thought of learning in depth of Intelligent Reasoning came to mind while I was working on Ontology server and its architecture for one of the ambitious projects of mine which is receiving great feedbacks from whoever has heard about it. The idea is maturing as I am digging it more and all the bits and pieces like AI, Intelligent Reasoning, Ontology, KR, Semantic Web Services are coming together like different pieces of same puzzle. I will keep putting my ideas and thoughts here as I always do but if you want to be part of this, pls feel free to contact me. I am always reachable for discussion :)

Until Next Time... :)

Friday, June 22, 2007

What is an Ontology?

While reading about Semantic Web we come across one common term always, The Ontology. What I found that every site and author gives a different definition of ontology. The best of that I liked was what was given by Tom Gruber "An ontology is a specification of a conceptualization".

I tried to find the answer at few more places as what the ontology is all about. There were few interesting answers I got:

Webster Dictionary
1 : a branch of metaphysics concerned with the nature and relations of being
2 : a particular theory about the nature of being or the kinds of things that have existence

David Koepsell, Center for Commercial Ontology:

Ontology is the very first science. Ontology involves discovering categories and fitting objects into them in ways that make sense. When we make a list of things to do, or of records and books we most want to buy, or videos we intend to rent, we are categorizing-we are engaging in rudimentary ontology. By prioritizing items in a list, we are assigning relationships among various things. Ontology can be relatively simple, or it can be quite complex.

Ontology becomes more complex, and even daunting, when we begin to grapple with large domains of objects with complex relationships among them. For instance, anyone who has attempted to outline the processes and components of even a relatively small enterprise has experienced the brain-cramps that can come with complex ontology.

Wordnet from Princeton University defines ontology as
1. (computer science) a rigorous and exhaustive organization of some knowledge domain that is usually hierarchical and contains all the relevant entities and their relations
2. the metaphysical study of the nature of being and existence

There are many more definitions available on net and one is bound to get confused when he/she comes across so many different kinds of definitions of the same word. But what actually the Ontology is? The question still remains unanswered or not convincingly answered.

From my study about ontology I found that It is explanation about the things as they exist in the real world. I am not after another definition here but just making an attempt to simplify for my understanding. But at the same time one of my associates think that Ontology is a Reasoning mechanism and it is representation of the logic.

What I am looking to work out is a generalized way to define the ontology which is universal in nature. I am sure many out there will disagree with me on this point that there could be a Universal Ontology. But my question to those people is why it can't be? What is so difficult about ontology which is stopping it from being represented in a general form.

In one of my earlier post on Knowledge Representation I mentioned that Knowledge Representation makes and ontological Commitment. If that is the case then each object in this world is part of one or more ontology. And if an object can exist in more than one ontology then there has to be some sort of similarity between two of them. Just thinking on those lines I guess it is possible to have a set of general ontology defined for all kinds of objects in existence today.

For those who are reading, I would love to know your view on this.

Until next time... :)

Thursday, June 14, 2007

Dynamic Composition using Semantic Web Services

As per Wikipedia the workflow is defined as: Workflow at its simplest is the movement of information and/or tasks through a work process. More specifically, workflow is the operational aspect of a work procedure: how tasks are structured, who performs them, what their relative order is, how they are synchronized, how information flows to support the tasks (wordflow) and how tasks are being tracked. As the dimension of time is considered in workflow, workflow considers "throughput" as a distinct measure. Workflow problems can be modeled and analyzed using graph-based formalisms like Petri nets.

Workflow is an intergral part of today's business applications. Where we perform a chain of activities like Order fulfillment, Payment Processing, New Recruit etc. Today SOA, BPM and many others are trying to address the same problem domain.

With Semantic Web Services in place creating a Workflow dynamically seems to be a possible task. Here are few reasons why I see that a possibility:
  1. Ontology Based: Every Service makes an Ontology Commitment. i.e. it finds its place in the Ontology Structure.
  2. No Fixed Messaging Structure: This means each service is capable of using a common understood format for input and output messages.
  3. Meaning Based: Each publisher will publish details along with the Service which conveys meaning of it. This makes the Discovery process more accurate. The only problem will arise if two or more services are published with the same Semantic description. In that case another parameter like region, cost or any other such parameters will be required to make the choice.
Considering these I am in the opinion that dynamic composition is a possibility using Semantic Web Services. In future posts I will elaborate more on this and also the way I see it all coming together.

I am right now in the process of working on a model for Ontology Server. I would love to hear from you this. If you have any thoughts / ideas on Ontology Server I would like to hear from you.

Until Next Time ... :)

Wednesday, June 06, 2007

Introduction to Semantic Web Services

In one of my earlier post I talked in brief about the Semantic Web Services (SWS). Today I was reading another Conference paper on Semantic Web Services titled "Approaches to Semantic Web Services" and there I came across few interesting facts about the same.

Semantic descriptions of Web Services are necessary in order to enable their automatic discovery, composition and execution across heterogeneous users and domains. Current technologies for Web Services provide description at the syntactic level. This makes it difficult for the requesters and providers to interpret or represent non-trivial statements such as the meaning of input and output parameters or any constraints that apply to them.

By applying a rich set of semantic notations that augment the service description we can relax this limitation described earlier. A Semantic Web Service is defined through a service ontology, which enables machine to interpret the capability of the service as well as makes it easy to understand the domain in which the Service is applied to.

Semantic Web Service infrastructures can be characterized along three orthogonal dimensions viz usage activities, architecture and service ontology. These dimensions relate to the requirements for SWS at business, conceptual and physical level.
  1. Usage Activities define the functional requirements which a framework for SWS is ought to support.
  2. The Architecture of SWS defines the components needed for accomplishing these activities.
  3. The Service Ontology aggregates all concept models related to the description of a SWS and constitutes the Knowledge-Level model of the information describing and supporting the usage of the service.
The activities required for running an application using SWS includes : publishing, discovery, selection, composition, invocation, deployment and ontology management. In future posts we will discuss each of them in detail.

Until Next Time...:)

Sunday, May 13, 2007

Relationship of Semantic Web Services

Today I was reading a paper on Semantic Web Services titled "Semantic Web Services Composition Using AI planning of Description Logic" by Lirong Qiu, Fen Lin, Changlin Wan and Zhongzhi Shi. This paper explained in detail as how a Semantic Web Service works and also their composition using First Order Logic language. Below is some of the useful thing I found in that paper.

Relationship of Semantic Web Services:
There exists relationships between different Web Services when considered Service Composition. The Assumption is being made that Si and Sj is the sub-service of Services S. Both Si and Sj provide different kind of services. In light of that the relationship between Si and Sj can be identified as:

  1. Independent Relationship: Si + Sj = Sj + Si which means each sub-service is independent of other and the order of execution of these two sub-services do not affect composition services.
  2. Identical Relationship: Si = Sj, which means the two services seems to be doing the same thing but they have few differences in terms of their attributes.
  3. Conditionally Identical Service: Si =~ Sj, this means Si can provide the same function as Sj in Some situations.
  4. Substitute Relationship: Si (less than sign) Sj, which means Si and Sj can be substituted for each other or they can swap their roles anytime without affecting the overall functionality.
  5. Conditionally Substitute Relationship: Si <= Sj, Which means Si and Sj can be substituted upon fulfilling some conditions.
  6. Overlapping Relationship: Si (X) Sj, which means there is some commonality between the two services. While composing this overlapping or common part must be excluded.
  7. Pre-Requisite Relationship: Si -> Sj, which means that one service has to finish before the other starts or in other words, the execution of Sj depends on successful completion of Si.
I am still working on how to make the Semantic Web Services automatic discoverable, while it is not easy but I guess it is not impossible too. With the advent of OWL-S it should be easy. I am yet to dig deep into it though.

Until Next Time.... :)

Saturday, May 12, 2007

How To Be a Programmer

These days I started to use a new tool which integrates well with my Mozilla Firefox brower. It is called Stumble Upon. This tool helps me looking for sites based on the interest (I need to define them first after I sign up with Stumble Upon). While browsing through programming Category yesterday I came across a very good site which says How to be a Programmer. Well it might sound like one of those cheap trick sites, but it is not. Its a lengthy article to read and takes about an hr to read and understand.

There are two major skills identified for the programmer (or developer)
  1. Personal Skill
  2. Team Skill
Each of them are then further divided into sub sections. While the first skill deals with what the person must have in terms of skills required like Technical, Aptitude etc. The second skill focuses more on what it takes to be part of the successful team ie correct estimation, managing self time etc.

In a nutshell its a good read for all those who aspire to build their career in Software Industry and want to grow. It is recommended to read for those who are in Software Industry as well. So that they can identify their gaps and make sincere effort to fill them.

Until Next Time..:)

Thursday, May 10, 2007

Service Hierarchy

It was during my regular read from home to work when I came across this idea of Service Hierarchy in an Enterprise Application (for that matter any application). I was reading the book "Extending Web Services Technologies - The Use of Multi-Agent Appproaches" published by Springer.

While in general sense the Services (Web-Services) are classified as Simple and Composite, but in reality there are many sub-classifications possible. On top level there are only two types but the nature of complexity varies in Composite services.


In the diagram above I tried to represent how the services (functionalities) build on the top of simple ones in an Enterprise Information System. The simple services like Create, Save, Update and Delete are at the bottom of the hierarchy. The layer 2 services use the basic ones to meet their functional requirement. Layer 3 builds on the top of layer 2 and so on.

While simple services are piece of software which performs a smaller task. A composite service is the one which is build by assembling and accessing multiple services (possibly from multiple service providers).

This draws our attention to next issue which is Service Composition and Service Oriented Computing (SOC). In the next post will discuss in detail about the Service Oriented Computing.

Until Next Time....:)

Saturday, April 28, 2007

Relating Stars to Human Knowledge

Last night I was out for a workshop and there post dinner we all were interacting and sharing our ideas and thoughts what interests us. After some time for some reason I separated myself out of the crowd and was back into the thought process which I like to get into. I was looking at the sky and then all I could see was stars. Some bright and some not so bright. This triggered a thought as do they also represent the way knowledge is stored in human brain? This post relates back to the previous post where I put my thoughts about a Self Learning Systems. In this post we will discuss about how the knowledge can be accumulated over a period of time.

The accessibility of any piece of information in our brain has a factor of when it happened or when in past we came across the incident. Like the stars in the sky, there are few bright ones and few not so bright ones. Each star appears to us with a different intensity and brightness. The one which appears brightest among them are the ones who are closer to us. The classic example is Sun. Same way the things which we remember easily and better are the events which happened in recent past and as they day passess by our memories of the same also starts to fade.

Another similarity of Knowledge and Stars is their lifecycle. The stars are born, they grow to their peak capacity and then they die and become a dwarf star or black hole. The similar things happen to our knowledge and learning as well. We Learn and the knowledge stays with us for a while and after sometime it fades away (if we don't use it) and vanishes. But as it happens with stars they get transformed into a dwarf or black hole, the knowledge we accumulate moves to a non-accessible or not so easily accessible location in our brain. But it never vanishes. It remains there.

The advantage of using a computer system here is that we have access to all those details uniformly no matter how old they are and when they were used last. In the last post of mine when I talked about the Self Learning System, I mentioned about the able to learn from user input. The system must ensure that the knowledge, data, query result etc are accessible with a reference to when was that acquired and when was it used last (with an option to view the log as how many times the same piece of knowledge was used).

How can this be made possible? This is the million dollar question one will ask? Well to answer that we need the following:
  1. A computer program to capture the User input Query.
  2. A Service to query and retrieve all the different possible ways to solve the problem from available vendors or service providers.
  3. A mechanism to store the query criteria, output and the reasoning used to arrive at the result for future purposes.
  4. A mechanism to log the actions in the system and show them to the user when the need arises.
In next few posts I will attempt to draw an architecture of how this kind of system may look like.

Until Next Time... :)

Thursday, April 19, 2007

Self Learning Systems

It was yesterday around lunch time when I went out to buy myself lunch I got this thought. Been working in Software Development for more than 11 years now, I sometime get this feel that computers are nothing more than a dumb orderly. I still remember when someone (don't remember the name) explained me the Expansion of COMPUTER (Completely Obedient Machine Provided User Types Everything Right) first time. Not sure how correct this expansion is but it sounds very much correct in context of computers.

Coming back to the idea what I had. I was thinking if we can put in a place a mechanism to store the last user response to a certain user query; I am sure we turn this dumb machine to something more intelligent. Say for example I query for Pizza Order for Morningside, Brisbane with delivery option available after 10pm. There are different pizza shops in the same suburb. They will publish their services in regard to which suburb they can deliver, if they have a time limit for delivery etc. First time my computer does not know about which vendor to choose. But say I select a pizza vendor I know is good and place next request to get the menu from the vendor. After selecting the Pizza from the menu I place the order and pay by my visa card. Next time if I place the same request it should be able to query the vendor and get the menu in front of me from the vendor. At this point the computer the intelligent system will be able to tell me that last time I ordered the Chicken Pizza and paid by my visa card. Whether I would like to continue with the same or want a different pizza or want to pay by cash or some other card.

Where I am coming from is. The system in this context is not just able to obey my order but is also able to suggest me based on the previous decision I made. So next time on the system is exhibiting the intelligence and knows my preference as well.

In order to build such a system we need:
  1. Client Agent which will store the user query and also the results along with a validity (if applicable).
  2. Server Agent with whom the client will be interacting and passing on the query for which the client agent does not have the answer.
  3. Global Service Database where every vendor's services are listed.
  4. Query Server to perform query based on the parameters supplied. Also queries should be based on the meaning. Not just the attributes. eg. If I am after the pizza shop in Brisbane, Australia it should not bring back the results for Brisbane, California.
  5. The queries should be based on Ontology so that more meaning can be added to the Search criteria.
  6. The services published also have some sort of Ontological Commitment so that it can be retrieved by the Query server.
If we have similar kind of infrastructure in place. I am sure we can achieve an intelligent computer (and a computer network in-turn) and realize the vision of Semantic Web.

Until Next Time...:)

Tuesday, April 17, 2007

Developing Intelligent Applications on Web

I was reading a book on Creating meaning on Web and sharing information on Semantic Web. While going thru pages I came across one good extract from an article from Fensel and Brodie, 2003. They mentioned a 3 level solution to the problem of developing intelligent applications on the web.

Information Extraction:
In order to provide access to information resources, information extraction techniques have to be applied providing wrapping technology for a uniform access to information.

This directly corresponds to different approaches which is taken to access the information and interpret them.

Processable Semantics: Formal languages have to be developed that are able to capture information structures as well as meta-information about the nature of information and the conceptual structure underlying an information source.

This here refers to the recently developed specifications like XML, RDF, OWL in conjunction with Syntactical and structural approaches.

Ontologies: The information sources have to be enriched with semantic information using the language mentioned in step above. This semantic information has to be on a vocabulary that reflects a consensual and formal specification to the conceptualization of the domain, also called an ontology.

This directly corresponds to the recent efforts made by scientific community to enrich the Semantic Web in terms of Meta Annotation and Term Definitions.

While much has been talked about the later two. The first element i.e. the information extraction is still a puzzle for many people in the scientific community. This is due to the heterogeneous nature of the web. Where the heterogeneous not only in terms of data, but also in terms of the logic to interpret the data and the context in which the data element is being used.

To retrieve the information semantically we need to build the data in semantic way. Unless we adopt to a standard which is sufficient enough to describe the smallest entity in the system and can be scaled to the largest entity using the same mechanism, the achieving true semantic is almost next to impossible. In one of my earlier post about Atomicity I had explained how the principle of atomicity can be scaled from an atom to a large scale enterprise database. May be we can leverage on the same concept and build something which is good enough for the Semantic Web.

Until Next Time...:)

Sunday, April 15, 2007

Information System Design

Lately I've been busy acquiring in-depth knowledge of Web Services and why do we need them. In this journey I came across few good things and few not so good things. My primary concern was always the design issues which forces one to use Web Services and on the top of that the architectural concerns, constraints etc. Not to forget the Business Requirement which adds to the constraints we already have to deal with.

In this process I came across a very good which described about the Basics of an Information System design. Lets first get our head around what an Information System consists of. In a Typical information system we have:
  1. Client Layer: The front-face of the application as seen by the client. This is typically a HTML page rendered by the web browser.
  2. Presentation Layer: The logic which is used to render the data and build the presentation for the client. The best example of this is XSL rendering which is being used in eBay web pages.
  3. Business Logic Layer: Set of programs which process data entered by user as per the business rules defined in the system and then pass on to data access for storing. When retrieved the raw data from the data access layer these programs are responsible for converting them into a format which is meaningful to the user.
  4. The Data Access Layer: The data access layer manages the way data is stored in the system. It exercises the Normalization / De-Normalization principle, Establishes relationship among data elements before persisting them into the data store. This understands the format in which the data is being stored.
  5. The Resource Layer: This is the core of an information system. The data which is stored in Database, File Systems, Active Directory etc form this layer of the information system.
Having known the different parts of an information system we then go for designing how the information will flow and how the different parts of the system will interact with each other. There are few different approaches which is put into practice by architects and designers around the world.

Top Down Approach:
This is the most common approach which is followed by the architects and designers around the world. In this methodology the Functionality or the Business Requirement drive the system design and their components (abstraction) etc. Here client is the center of focus always. The system is designed to keep client in mind, how will they interact with the system etc. The name Top-Down approach comes from the way the design of the system evolves. The designer first sees how the client is going to use the system ie Presenation Layer, then they design the Business Logic or Application Logic components of the same and then at the end the resources (data store) is finalized.

The steps involved in Top Down approach is:
  1. Define access channels and client platforms
  2. Define presentation formats and protocols for the selected clients and protocols
  3. Define the functionality necessary to deliver the contents and formats needed at the presentation layer.
  4. Define the data sources and data organization needed to implement the application logic.
This approach of design has few advantages like it emphasizes the final goal of the system, and at any point in time it can cater to changes in both functional and non-functional needs of the system. But on the other side it can be applied to only the system which is developed from the scratch.

Bottoms Up Approach:
The Bottoms Up approach of system design is not a preferred choice of the designer to start with. It occurs out of necessity than the choice. There are systems which exists in this world serving their original purpose with great accuracy and the organizations rely heavily onto it for their day to day business function. But these systems have become legacy system as they are not able to cater the needs of requirements than they are originally designed for. These systems have a fixed set of functionality defined and the development effort to make changes in the system to cater the new requirements are not viable option for the organization. Under such circumstances the Bottoms Up approach is used.

The Steps involved in Bottoms Up approach is:
  1. Client Defines access channel and Client Platforms.
  2. Examine legacy system and any other resources and the functionality they offer.
  3. Build a wrapper around the existing resources and also build an adapter to provide a consistent interface to the outside world.
  4. Build adapters around the application logic so that it can be used by any client and access channels and protocols.
As stated earlier this design approach is not by choice. Rather it is dedicated by the need to integrate the services provided by legacy systems. This is one area where much of spending in today's world is happening. Most of the buzzwords today like Web Services, SOA, EAI all are primarily targeting in this area.

Until Next Time...:)

Monday, March 26, 2007

My Wishlist for Delphi Compiler

Today I was discussing at work about the problems we are facing with Delphi as an IDE, Language, Development tool. One of the problems I see with Delphi relates to the way it handles Abstract methods. This forced to think what I would like to have in Delphi Compiler.
  1. Enable me have annotations in the classes instead of keywords to override methods.
  2. There should be a way to declare a class abstract like in Java. The user program should not be able to instantiate the abstract classes.
  3. A class with minimum one abstract methods should be forced to declare as abstract.
  4. Like DotNet we should be able to make a Class / method final. So that nobody can extend it and in-turn override the behavior of the method.
  5. There should be some way to warn user that an overridden method has empty implementation. May be an optimizer feature but this will be really helpful.
There are few more features (related to IDE) which would be nice to have:
  1. Keyboard shortcut to see all the open files in one popup etc like eclipse.
  2. Keyboard shortcut to go to method or class declaration. Just like F3 key in eclipse.
  3. A Javadoc kind of feature where the user can attach some sort of documentation with the method and that can be picked up by the Code-Insight. So that we know what this method is doing. The current mouse hover does not give sufficient details as we cannot write documentation for the method to be picked up by any other class.
  4. Also a scrapbook kind of feature in Delphi IDE will be cool to have where we can write couple of lines of code and then just test it. Something similar to what WSAD has in it. This will save time to test few lines of code we want to try in our code.
I am not sure if any of the reader has a contact with Delphi Team but it would be desirable to have these features in Delphi which one time was my favorite language which Borland team managed to destroy over a period of time.

Disclaimer: This post has nothing to do with the Semantic Database or Semantic Web Services as such.

Until Next Time...:)

Thursday, March 22, 2007

Problems With Web Services

In previous posts I'd been talking about why Web Services are not for Web and how Semantic Web Services promise to solve the problem etc etc. While I was reading about WS and listing down what are the problems we have with the technology, I came up with a list of issues which needs to be addressed any technology which claims to be superior to Web Services.

Web Services are one of the best means to share applications in today's world. It frees one from worries of Applications, Infrastructure, Platform, Language, Upgradation etc. But while they are great for ordinary use. They do have few issues which need to be resolved to enable them serve their purpose.
  1. Web Services today have problems like Automated Discovery, Choreography and Composition. Not to mention the security aspect this is not even thought about.
  2. Currently web services use the infrastructure provided by the World Wide Web (WWW) but they do not actually operate on web. The World Wide Web is built on the top of the Infrastructure provided by Internet. Web Services operated on Internet infrastructure but do not work on the core principles of World-Wide-Web.
  3. Web services also lack the capability of asynchronous communication or callback functionality.
  4. Web services are very rigid in terms of messaging syntax. They have a fixed format for input and output messages.
  5. There is no way to determine at execution time as which web services to pick up and which one serves the purpose. As web services do not work on Semantic structure (meaning) and they work on Syntactic structure. What this means is, they are very much discovered early or have a static binding. There is no dynamic discovery in Web Services
  6. Web services also lack the capability of asynchronous communication or callback functionality.
  7. Due to the Black-Box nature of Web-Services we often don’t know what is happening inside. By looking at a Web Service Description we can get information about the input parameters (message format) and Output Result (output message format) but we do not get any information about how it is doing what it is doing. In a nutshell the transparency is not there at all.
  8. While using Web Services we assume that the output we are getting as result is correct. Since we don’t know (rather most of the time we don’t care) about the internals we cannot really verify the steps (logics) used to derive the final result from the input parameters passed to it. So verifiability is another concern we have in regards to Web Services. That affects the reliability on the Web Services as well.
I guess I'd been very negative about Web Services here. But then it is a great way to take our existing system functionality to a next level. Next post on will start touching on what is required to have a Semantic Web Services.

Until Next Time... :)

Wednesday, March 14, 2007

Introducing Semantic Web Services

In last few posts I was concentrating mostly on Web Services and what they are not. Last night I was reading and Article Approximate Reasoning and Semantic Web Services and there I happen to read about what it takes to create a Semantic Web Services. According to one of many definitions the Web Services can be described as systems with a number of features:
  1. They are identified by a Uniform Resource Identifiers (URI)
  2. Their public interfaces and bindings are defined and described using XML;
  3. Their definitions can be discovered by other software systems;
  4. Other systems may interact with the Web Services in a manner prescribed by their definitions using XML-based messages conveyed by Internet protocols.
The proposed definition of the new concept Semantic Web Services has few changes and enhancements when compared with the definition of the Web Services. Semantic Web Services are system that:
  1. Are identified by a URI.
  2. Whose public interfaces, bindings, some behaviour and various other features are defined and described using Semantic Web language. The Semantic Web Language here refers to OWL, DAML-S etc.
  3. Their definitions and other descriptions can be discovered by other systems.
  4. Other systems may then reason about and interact with the semantic web services in a manner guided by their definitions using xml-based messages conveyed by internet protocols.
In the light of those definitions, it can he stated that the biggest advantage of the Semantic Web Services is their flexibility. The interacting system do not have to know everything about each other before they start interaction. They "learn" about their specifics and behaviour at the time they interact. The concept of Ontology and its application to represent information ahout data and services give such capabilities. Each service in the fiamework of the Semantic Web Services is represented by:
  1. Profile ontology, called ServiceProfile, is a description of a service.
  2. Model ontology, ServiceModel, is a description of a process itself and its composition.
  3. Grounding ontology, called just Grounding, describes mapping of service elements to WDSL messages.
This is the first of the many posts yet to come related to Semantic Web Services. Keep watching this space for more on this topic in days / weeks / months to come.

Until Next Time...:)

Monday, March 12, 2007

Global E-Business

There was a time when Business used to take place in person. ie people used to discuss among themselves and finalize the deal. While this was the best way for doing the business, it had few drawbacks as well. It was time consuming and one was limited by the time and resources available.

The times have changed and we moved to E-Business now. The transaction which used to take place over phone or in person started to happen on internet. While this enabled us to do transaction with any other business located in any part of the world, it introduced quite a few complexity in the whole process. But this is not what the main theme of this post is.

The Vision of E-Commerce
The original vision of E-Commerce was to enable anybody to do trade and negotiate with anybody else. But is that really possible in current scenario? Lets see what it takes to have such a system in this world:
  1. A Machine Interpretable format or A system must be in place which can deal with numerous and heterogeneous data formats and numerous and heterogeneous Business Logics. A Strong decoupling is required for various applications/components which realizes the E-Commerce application.
  2. Some sort of semantics is needed in this heterogeneous environment which will allow mediation at the conceptual level. i.e. a Strong mediation service is required which allows a system to communicate with another system. Here we are talking about machines to communicate with each other without human intervention.
Is Current Technology Sufficient?
In todays world we have Technologies like Multi-Tier and Distributed computing, Web Services, Web based shopping carts etc. These tools and technologies help people to do business over web. We call this E-Commerce. But they are nowhere close to realizing the vision of E-Commerce. These technologies while they work great with known systems, they fail to mediate between two different systems. Also the systems today are not able to handle the hetrogenity in terms of data and business logic.

Web Services as a technology has made lots of promises to the businesses worldwide. It had what it takes to become the most acceptable solution for E-Commerce. But since its advent it failed to realize the vision. I will discuss about this in one of my future post. In my previous post about Are Web Services Really Web Services, I had pointed out what is missing in today's Web Services.

What is the Solution?
Semantic Web as a technology has lots of promises to the world. Semantic web promises to make the content of world-wide-web Machine Readable and Machine Processable. Semantic Web involves Ontologies which is one of the most abused term (from its original meaning). Researchers around the world are working day and night to make the web contents machine readable and machine processable by developing Ontologies. At the same time Web Services community also worked on to improve the Web Services Standards. But so far not much of work is been done to combine the best of two and come up with a powerful solution.

Semantic Web Service is one such solution which promises to enable E-Commerce in its original form and realize the vision of E-Business.

In my upcoming posts I will discuss about Semantic Web Services in detail. Starting from conceptual level to the more detailed level architecture and implementation.

Until Next Time.... :)

Sunday, March 11, 2007

Are Web Services really Web Services?

In my previous post regarding Web Services I mentioned why besides their name Web Services have nothing to do with the Web. In this post we will discuss them in detail as why it makes me and everybody else who researches Web Services to come to this conclusion. While Web Services as a technology is been great for ordinary users there are several disadvantages which becomes obvious when the researchers look at it.

Current Web Services Technology
Current Web service technology is based on tightly coupled message exchange. The sender and receiver has to be online during the whole communication period. It will fail if one of them is offline. This situation is similar to the situation faced by scientist community in the pre-Web age, where one had to send an e-mail message to a scientific colleague, asking for a specific paper or piece of information. With the introduction of web it became simpler. In the current Web as an infrastructure for humans, this pattern of communication has widely been replaced by persistent publication and asynchronous retrieval. We no longer request the biggest share of information in lengthy, synchronous communication cycles with the originators, but fetch it from persistent sources, e.g. the scientist’s personal Web page. We don't have to be online all the time to ensure that whoever wants our page can get it. We can just publish the article on a web page and let others download it from there. We argue that this has significantly contributed to the success and scalability of the Web, since it freed the sender from the need to handle individual requests, and it made resources identifiable and thus referable.

Imagine what will happen if Web was not there today. In such a situation one will have to handle individual requests from all your scholarly colleagues who visit your Web site. You might soon become the main bottleneck for the dissemination of your own ideas. The shift from information dissemination based on message exchange not only made the Web scale tremendously, it has also sped up the dissemination process.

On the contrary when we compare Web services with this important principle of the Web it becomes very obvious that Web services are not following the core idea of the Web. It is true that Web services use the Internet infrastructure as the transport medium. However, that is more or less all they have in common with the Web. The idea of publishing data and accessing it asynchronously is lacking. Web services failed to work in asynchronous mode. Instead of publishing the information based on a global and persistent URI, Web services establish (1) stateful conversations based on the (2) hidden content of messages.

The negative effect of such distributed applications that communicate via message exchange is that they require a strong coupling in terms of reference and time. This means that traditional Web services require that the sender and receiver of data:
  1. maintain a connection at the very same time, that they
  2. agree on the data format, and
  3. know each other and share a common representation.
Therefore, the communication has to be directed to a particular service and is synchronous as long as neither party implements asynchronous communication (and jointly agree on the specific way this mechanism is implemented).

The two major criticisms around Web services today are about the improper usage of URIs and the violation of the stateless architecture of the Web. It is one of the basic design principles of the Web and REST architecture to not provide stateful protocols and resources.

In real-world(where we live in) this means that when sending and/or receiving SOAP messages, the content of the information is hidden in the body and not addressed as an explicit Web resource with its own URI. Therefore, most Web functionality dealing with caching or security checks is disabled, since using it would require parsing and understanding all possible XML schemas that can be used to write a SOAP message. Thus, when a stateful conversation is required, this should be explicitly modelled by different URIs. Moreover, referring to the content transmitted via an explicit URI in an HTTP-request would allow the content of a message to be treated like any other Web resource.

Summary:
In this post we discussed how Web-Services failed to realize the Web part of its name. What is missing ie stateless architecture and using URIs to refer to the resources. In next post we will discuss what is Semantic Web Services and how they are better than the Traditional (syntactic) Web Services.

Until Next Time....:)

Saturday, March 10, 2007

Web Services are NOT for Web

Yes this is right Web Services are NOT at all for Web. Last few days/weeks I spent reading through different journals, conference papers and articles to understand what Web Services are all about. At the end when I was writing down my concluding notes on what I read and what I understood. I came up with the conclusion that Web Services miss the Web part and are better of called as Internet Services.

Internet and Web
The first question that comes to anybody's mind is that are they two different thing? I mean Web and Internet aren't they same thing? To a novice reader there is no difference between Web and Internet. Web today is the major means of publishing and accessing information. Starting as a closed network to exchange emails and share files for scientific reasons, today it has become a global media used for information dissemination and information access within little over a decade.

Internet is the infrastructure and the TCP/IP stack we are talking here. It is the backbone of the World-Wide-Web. It handles all the communication and the data transfer. Web is just an application of the Internet. There are other applications like File Transfer, Voice and Data transfer etc. All of them use the infrastructure provided by Internet.

Where is the missing?
Web Services technologies today are far from being in a state where the automated and seamless integration is possibility. There are known problems in the Web Services arena and researchers around the world are working on to overcome those problems.

Web services are mainly based on transient message exchange and not on persistent publication of data. As a matter of fact, Web services are far from using the Web as means for information publication and access. Instead of following the ’persistently publish and read’ paradigm of the Web, traditional Web services using WSDL and SOAP establish a tightly coupled communication cycle, most frequently using a synchronous HTTP transaction to transmit data. URIs, which are meant as unique and persistent identifiers for resources are used only for the identification of the participant, whereas the information exchanged is hidden in the SOAP message.

In next posting I will discuss how the Web Services as a Technology do not fit the specifications of the web. There will also mention why apart from name Web is not there in Web Services at all.

Until Next Time ...:)