The Garlic Project
The Garlic Project

An Ad Agency Example An Ad Agency Example:

To see more concretely what is needed, let's look at an example. Suppose a young advertising executive wants to find a very successful ad campaign her agency did a few years back. Unfortunately, she's forgotten the name of the company and the product, and she just vaguely remembers the layout, which she thinks would be perfect for the campaign she's working on now. How can she find it? Her agency keeps stills from each campaign on-line in one system, financial reports in a document management system, and basic information about each campaign in a relational database. She will have to look through a lot of pictures to find those that might be right, then look up each of their image ids in the relational database to get the associated report name, and finally look at the financial report in the document manager to see if this is the campaign that made all the money. A system like QBIC for querying images will make the first part do-able, but won't help find the names of products or whether a particular campaign was successful or not.

The Garlic Approach The Garlic Approach:

Enter Garlic. Garlic will provide a way to link together heterogeneous, multimedia systems so that problems like that of our advertising executive are easy to solve. This picture shows the basic ideas. At the bottom are the independent storage systems. These can be of any type and any number (though as the number gets large, issues of scale will need to be addressed). Above each of these repositories is a `wrapper' which serves as the plug for connecting the repository to Garlic. The wrapper describes the contents and capabilities of the repository in the Garlic Data Model (the wrapper schema) and translates queries against that schema into whatever language or API the repository understands. Above the wrapper is the heart of Garlic, a middleware query processor which provides the user with a unified object view of all the data within the system. It can take object-oriented queries against this global Garlic schema and break them into pieces to be executed by the various repositories involved. Finally, there are two ways to access the Garlic system: through a C++ API, or using a Query/Browse tool specifically designed for Garlic.

How It Works How It Works:

Let's see how Garlic would help our advertising exec with her problem. At the bottom, we have our 3 repositories. We'll represent images by squares, documents by triangles, and our 2 kinds of tuples by an arc and a rectangle. Different colors or shapes of objects represent differences in their values. The wrapper level defines a `schema' for the objects in the different repositories. This may be a simple re-statement of the object's properties (as with the image & document wrappers) or it may involve some combination, manipulation and even elaboration, as in the relational wrapper. At the Garlic schema level, the separate wrapper schemas can be combined and unified. Given a Garlic schema, the user can submit queries against it. In this case, the exec can ask for the pieces of the campaign that she needs (campaign and company names), where those campaigns have images and financial reports with particular properties, and were developed in a certain time period (yellow rectangle=date predicate). The Garlic middleware chops this query into several smaller queries, sends the queries to the wrappers (which in turn translate them and execute them against the repositories), gets the answers back, and glues them together to create the desired response. Since the Garlic schema, the wrapper schemas, and the actual schemas for the data in the repositories can be very different, this is a highly non-trivial proposition!


Of course, an average advertising exec (or doctor, or interior designer) will not normally want to write queries. For these types of users, Garlic will provide a powerful and easy-to-use Query/Browse application. In the screen below, our ad exec has been browsing through Campaigns, a collection of objects described in the Garlic schema.


She brought up the associated financial report by clicking on the Report field, and the first of the set of associated images by clicking on the Stills field. She can now flip through the images belonging to her campaign by clicking on the Next button of the Stills window, or she can move on to other campaigns by clicking Next on the Campaign window. This would automatically change the contents of the Report and Stills windows to match the new Campaign. However, in this screen, our exec has indicated that she wishes to ask a query, by clicking on the 'Q' query button on the Campaigns window.

Do It

In the screen below, the executive is in the process of entering her query. The 'Q' buttons are blue, indicating that a query is active. Our exec has indicated that she doesn't know the name of the campaign or the company for which the campaign was developed but she does know that the campaign was developed after 1989, and according to the financial report, it earned over $250,000. She has just clicked on the Q in the Stills window, indicating that she wants to put a restriction on that aspect of Campaigns. Since Stills are images, a window has popped up asking what type of image query she would like. Our exec chose `Scene' query. There is a `DO IT' button waiting to be pressed whenever she is done composing the query.

In the screen below, our exec completes her query using a powerful image GUI to specify the image predicate (akin to QBIC).

Do It

Then she selects the `DO IT' button. The screen below shows the result: a set of campaigns meeting the given conditions. Now the exec can scroll through them using the Next and Previous buttons until she finds the one she wanted.

Do It

[ IBM Almaden Computer Science | IBM Almaden | IBM Research ]
[ IBM home page | Order | Search | Contact IBM | Help | (C) | (TM) ]