HOME

TheInfoList



OR:

CycL in
computer science Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to Applied science, practical discipli ...
and
artificial intelligence Artificial intelligence (AI) is intelligence—perceiving, synthesizing, and inferring information—demonstrated by machines, as opposed to intelligence displayed by animals and humans. Example tasks in which this is done include speech re ...
is an
ontology language In computer science and artificial intelligence, ontology languages are formal languages used to construct ontologies. They allow the encoding of knowledge about specific domains and often include reasoning rules that support the processing of th ...
used by Doug Lenat's
Cyc Cyc (pronounced ) is a long-term artificial intelligence project that aims to assemble a comprehensive ontology and knowledge base that spans the basic concepts and rules about how the world works. Hoping to capture common sense knowledge, Cyc f ...
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 Frames are an artificial intelligence data structure used to divide knowledge into substructures by representing " stereotyped situations". They were proposed by Marvin Minsky in his 1974 article "A Framework for Representing Knowledge". Frames are ...
, but the modern version is not. Rather, it is a
declarative language In computer science, declarative programming is a programming paradigm—a style of building the structure and elements of computer programs—that expresses the logic of a computation without describing its control flow. Many languages that a ...
based on classical
first-order logic First-order logic—also known as predicate logic, quantificational logic, and first-order predicate calculus—is a collection of formal systems used in mathematics, philosophy, linguistics, and computer science. First-order logic uses quantifie ...
, 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 Cyc (pronounced ) is a long-term artificial intelligence project that aims to assemble a comprehensive ontology and knowledge base that spans the basic concepts and rules about how the world works. Hoping to capture common sense knowledge, Cyc f ...
. The source code written in CycL released with the
OpenCyc Cyc (pronounced ) is a long-term artificial intelligence project that aims to assemble a comprehensive ontology and knowledge base that spans the basic concepts and rules about how the world works. Hoping to capture common sense knowledge, Cyc f ...
system is licensed as open source, to increase its usefulness in supporting the semantic web.


Basic ideas

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 Inferences are steps in reasoning, moving from premises to logical consequences; etymologically, the word '' infer'' means to "carry forward". Inference is theoretically traditionally divided into deduction and induction, a distinction that in ...
about the concepts. * The truth or falsity of a CycL sentence is context-relative; these contexts are represented in CycL as Microtheories.


Constants

The concept names in Cyc are known as ''constants''. Constants start with "#$" and are case-sensitive. There are constants for: * Individual items known as ''individuals'', such as #$BillClinton or #$France. * ''Collections'', such as #$Tree-ThePlant (containing all trees) or #$EquivalenceRelation (containing all
equivalence relation In mathematics, an equivalence relation is a binary relation that is reflexive, symmetric and transitive. The equipollence relation between line segments in geometry is a common example of an equivalence relation. Each equivalence relation ...
s). A member of a collection is called an ''instance'' of that collection. * ''Truth Functions'' which can be applied to one or more other concepts and return either true or false. For example, #$siblings is the sibling relationship, true if the two arguments are siblings. By convention, truth function constants start with a lower-case letter. Truth functions may be broken down into logical connectives (such as #$and, #$or, #$not, #$implies), quantifiers (#$forAll, #$thereExists, etc.) and predicates. * ''Functions'', which produce new terms from given ones. For example, #$FruitFn, when provided with an argument describing a type (or collection) of plants, will return the collection of its fruits. By convention, function constants start with an upper-case letter and end with the string "Fn".


Specialization and generalization

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) \; "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."


Rules

Sentences can also contain variables, strings starting with "?". One important rule asserted about the #$isa predicate reads (#$implies (#$and (#$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 more complicated example is one that expresses a rule about a group or category rather than any particular individual, is: (#$relationAllExists #$biologicalMother #$ChordataPhylum #$FemaleAnimal) which means that for every instance of the collection #$ChordataPhylum (i.e. for every
chordate A chordate () is an animal of the phylum Chordata (). All chordates possess, at some point during their larval or adult stages, five synapomorphies, or primary physical characteristics, that distinguish them from all the other taxa. These fiv ...
), there exists a female animal (instance of #$FemaleAnimal) which is its mother (described by the predicate #$biologicalMother). (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.)


Microtheories

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.


See also

* List of constructed languages#Knowledge representation


References

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


Notes

{{reflist Knowledge representation languages Logic programming languages Declarative programming languages Ontology languages