Main Page | See live article | Alphabetical index


Cyc is an artificial intelligence project which attempts to assemble a comprehensive ontology and database of everyday common-sense knowledge, with the goal of enabling AI applications to perform human-like reasoning.

The project was started in 1984 by Doug Lenat. The name "Cyc" (from "encyclopedia", pronounced like psych) is a registered trademark owned by Cycorp, Inc in Austin, Texas, a company run by Lenat and devoted to the development of Cyc. The original project is proprietary, but a smaller version of the database has been released as OpenCyc under an open source license.

Typical pieces of knowledge represented in the database are "Every tree is a plant" and "Plants die eventually". When asked whether trees die, the inference engine can draw the obvious conclusion and answers the question correctly. The Knowledge Base (KB) contains over a million human-defined assertions, rules or common sense ideas. These are formulated in the language CycL, which is based on predicate calculus and has a syntax similar to the Lisp programming language.

Much of the current work on the Cyc project continues to be Knowledge Engineering, representing facts about the world by hand, and implementing efficient inference mechanisms on that knowledge. Increasingly, however, the thrust of work at Cycorp involves giving the Cyc system the ability to communicate with end users in natural language, and to assist with the Knowledge Formation process.

Table of contents
1 Description of the database, Terminology
2 OpenCyc
3 See also:
4 External Links

Description of the database, Terminology

The concept names in Cyc are known as constants. Constants start with "#$" and are case-sensitive. There are constants for:

The most important predicates are #$isa and #$genls. The first one describes that one item is an instance of some collection, the second one that one collection is a subcollection of another one. Facts about concepts are asserted using certain CycL sentences. Predicates are written before their arguments, in parentheses:
 (#$isa #$BillClinton #$UnitedStatesPresident)
"Bill Clinton belongs to the collection of U.S. presidents" and
 (#$genls #$Tree-ThePlant #$Plant)
"All trees are plants".
 (#$capitalCity #$France #$Paris)
"Paris is the capital of France."

Sentences can also contain variables, strings starting with "?". One important rule asserted about the #$isa predicate reads

     (#$isa ?OBJ ?SUBSET)
     (#$genls ?SUBSET ?SUPERSET))
   (#$isa ?OBJ ?SUPERSET))
with the interpretation "if OBJ is an instance of the collection SUBSET and SUBSET is a subcollection of SUPERSET, then OBJ is an instance of the collection SUPERSET". Another typical example is
 (#$relationAllExists #$biologicalMother #$ChordataPhylum #$FemaleAnimal)
which means that for every instance of the collection #$ChordataPhylum (i.e. for every
chordate), there exists a female animal (instance of #$FemaleAnimal) which is its mother (described by the predicate #$biologicalMother).

The knowledge base is divided into microtheories (Mt), collections of concepts and facts typically pertaining to one particular realm of knowledge. Unlike the knowledge base as a whole, each microtheory is required to be free from contradictions. Each microtheory has a name which is a regular constant; microtheory constants contain the string "Mt" by convention. An example is #$MathMt, the microtheory containing mathematical knowledge. The microtheories can inherit from each other and are organized in a hierarchy: one specialization of #$MathMt is #$GeometryGMt, the microtheory about geometry.


The first version of OpenCyc was released in May 2001. The knowledge base contains about 6,000 concepts and 60,000 facts, has been combined with WordNet, is released under LGPL, and can be browsed online. The program which allows to browse and edit the database as well as to draw inferences is released for free, but only as a binary, without source code. It runs on Linux and Windows.

See also:

External Links