Peer Databases

A peer-to-peer (P2P) network has a constantly evolving architecture involving a very large amount of nodes that share resources, data, and services. A P2P system works in a distributed fashion with virtually no global administrative control of the shared resources. P2P computing is increasingly attracting media and public attention, encouraged by the enormous popularity of file sharing applications such as Napster, Gnutella, and Kazaa. Moreover, the number of further real-life applications and business opportunities envisioned by the P2P paradigm has resulted in a strong academic and industrial interest. Numerous projects have been initiated by leading information technology powerhouses such as Sun, Intel, and Microsoft. However, much of the relevant research in this area is carried out with interest in establishing a P2P-based infrastructure for building distributed systems.

My Database Lab, formed in March 2003, is interested in studying the impact of the P2P paradigm on database technology and building P2P-based adaptive information systems. Its main goal is to build a data management framework whose architecture consists of a large collection of peer data management systems (PDBMSs) located at the nodes of the P2P network. Such PDBMSs can establish, maintain, or abolish acquaintances with each other, thus building communities of interest centered on dedicated businesses. We study both the theoretical and practical issues related to this endeavor: data models, query languages, transaction management, heterogeneity and autonomy management, active rules for data coordination, metadata management, adaptive information systems, etc. These research activities are a joint work with the Knowledge Management Systems Lab and the Database Lab at the University of Toronto.

My research is funded by grants from NSERC, Bell University Labs, and CITO. Several graduate students are involved and there is room for more interested graduate students.

Logic in Databases and Artificial Intelligence

Logic arguably stands as a very important cornerstone of computer science. One of the most important roles of logic in Computer Science is to serve as a tool for laying down formal foundations of various areas of our discipline. Two areas that have particularly benefited from the use of logic are databases and Knowledge representation. In Databases, fragments of (mostly) first-order logic are use to establish formal foundations for such activities as query processing, updates and design of data models. On one hand, several, now classical bodies of work have found their way into database text books, due mainly to the work of Codd, Reiter, Abiteboul and Vianu, etc. The sub-area of Artificial Intelligence called Knowledge Representation, on the other hand, has been almost exclusively made of logical frameworks. One of these logical frameworks, the situation calculus, was invented 4 decades ago by John McCarthy and revived in the nineties by Ray Reiter, Hector Levesque, and their collaborators.

We are interested in studying the use of the situation calculus to capture various phenomena in databases such as transactions, active rules, modelling languages, etc, in order to understand their intimate properties and reason abouth them. Doing so, we bridge a gap between the fields of Artificial Intelligence and Databases. We are also interested in studying the use of the situation calculus in model-checking system designs.

Robotics is a well-known and fascinating research area in Artificial Intelligence. A robotics system usually comprises both hardware and software components. Hardware components are taken care of by computer engineers. From the Computer Science point of view, research in robotics deals with two main set of tasks. The first one amounts to designing algorithms for the so-called low-level tasks of robot motion, obstacle avoidance, path planing, etc. The second set of tasks takes care of high-level issues that generally involve achieving a goal (e.g. delivering mails to all people in an office environment, cleaning a surface, winning a soccer game, ...). Usually, low-level tasks are better programmed in fourth-generation languages like C, C++, and high-level tasks are better programmed in fifth-generation programming languages such as Prolog or Lisp. A common problem that arises is therefore that of bridging the gap between high-level modules programmed for instance in Prolog, and low-level modules programmed in, let's say, C.

We are interested in building agents in general, and robotics agents in particular, in a special-purpose Prolog-like language called GOLOG, whose semantics is based on the situation calculus.