ave you ever been frustrated by the lack of sophistication in some of today's search applications? I certainly have been. For example, I was recently evaluating a tool, called Green Pepper, for automating testable requirements; when I googled the phrase "Green Pepper," I received a bunch of results that were unrelated to the type of information I was looking for. I was interested in the Green Pepper software tool, not the vegetable. Wouldn't it be nice if the search engine could understand the meaning of my query or, if not, at least assist me in disambiguating the possible interpretations to provide more meaningful results?
At a very rough level, this clarification is the goal of the Semantic Web initiative. The Semantic Web aims to extend the information on the web in a form that can be consumed more usefully by people and computer programs. This approach generally involves extending today's web of unstructured data with a more meaningful representation of knowledge. Going back to my previous example, Green Pepper is a vegetable and a software product. If the computer program I was using to search the Internet was aware of these relationships, it might have been able to give me more precise search results. And, if the program was really snazzy, it might have been able to infer my context (software) from my question, from my previous searches, or through some sort of interaction with me.
|Figure 1. The Sommelier: This sommelier application recommends a selection of wines based on body, flavor, and color.|
This task may seem daunting, and indeed it is. Although there are many smart people and companies working toward this vision, they still face many challenges and we are years away from seeing this vision realized. In the meantime, people have found creative ways to integrate semantic technology into their programs. In this article, you will explore some of the building blocks of semantic technology and build a simple application to exercise these components.
Application Example: White or Red?
Throughout this article, I will show you how to put together a simple wine recommendation application. Haven't you always wanted to have your own personal sommelier
? This sommelier will be pretty basic; it will recommend particular wines based only on body, flavor, and color (see Figure 1
The data the sommelier will use is the wine ontology published by the W3C as an example. Now, you may ask, what is an ontology? But, before diving in, I'd like to warn you that this is fairly cerebral stuff. The next two sections will introduce ontologieswhat they are and the motivations behind them. I will keep these introductions as simple as possible but will also try to make them complete enough for you to have the conceptual background necessary to understand the application example.