From Wikipedia, the free encyclopedia
  (Redirected from CycL language)
Jump to navigation Jump to search

CycL in computer science and artificial intelligence is an ontology language used by Doug Lenat's Cyc artificial intelligence project. Ramanathan V. Guha was instrumental in the design of early versions of the language. There is a close variant of CycL known as MELD.

The original version of CycL was a frame language, but the modern version is not. Rather, it is a declarative language based on classical first-order logic, with extensions for modal operators and higher order quantification.

CycL is used to represent the knowledge stored in the Cyc Knowledge Base, available from Cycorp. The source code written in CycL released with the OpenCyc system is licensed as open source, to increase its usefulness in supporting the semantic web.

Basic ideas[edit]

CycL has some basic ideas:

  • Naming the constants used to refer to information for represented concepts.
  • Grouping the constants together in a generalization/specialization hierarchy (usually called categorization).
  • Stating general rules that support inference about the concepts.
  • The truth or falsity of a CycL sentence is context-relative; these contexts are represented in CycL as Microtheories.


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


Specialization and generalization[edit]

The most important predicates are #$isa and #$genls. The first one (#$isa) describes that one item is an instance of some collection (i.e.: specialization), the second one (#$genls) that one collection is a subcollection of another one (i.e.: generalization). Facts about concepts are asserted using certain CycL sentences. Predicates are written before their arguments, in parentheses:

For example:

(#$isa #$BillClinton #$UnitedStatesPresident) \;


(#$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))


Another more complicated example is one that expresses a rule about a group or category rather than any particular individual, is:



(or in looser English, if you have a particular animal that has a backbone, then there will be a link from that particular animal expressing the concept of that animal's "biological Mother". The thing that "fills in the blank" for the biological Mother must also be able to be categorized as a Female Animal.)




See also[edit]


  • R.V. Guha; Douglas B. Lenat. «CYC: A Mid-Term Report». AI Magazine, Fall 1990, 11 (3): 32–59.

External links[edit]