Marvin Minsky identified one of the primary problems of expert systems todaywhile they include a large mass of knowledge about a particular domain, they lack commonsense [Minsky 1992]. Consider the example of an expert system and a chess-playing program. Both are reasonably intelligent within the tiny domain for which they exist, but the expert system knows nothing about chess, and the chess-playing program is unable to reason about anything but selecting a chess move. In other words, these intelligent programs are useless outside of their particular expertise. Perhaps if these systems were endowed with some kind of commonsense, they could communicate with each other and perhaps even cooperate?
One of the most visible commonsense reasoning projects today is the CYC project at Cycorp. This project is led by Doug Lenat (we'll see this name again in the domain of scientific discovery). The original goal of CYC was to develop a knowledge base containing a massive amount of commonsense knowledge. In addition to simple facts, the knowledge base also includes assertions (rules) that relate facts. CYC includes "microtheories" that bundle assertions together for a particular domain of knowledge to support and optimize the inference process. The inference engine supports reasoning about the facts in the knowledge base.
Cycorp has recently released OpenCyc, which is an open source version of the CYC technology. This includes a knowledge base (6,000 concepts with 60,000 assertions), the CYC inference engine and a number of language bindings and APIs to support software development with the knowledge base.