CycL in
computer science
Computer science is the study of computation, information, and automation. Computer science spans Theoretical computer science, theoretical disciplines (such as algorithms, theory of computation, and information theory) to Applied science, ...
and
artificial intelligence
Artificial intelligence (AI) is the capability of computer, computational systems to perform tasks typically associated with human intelligence, such as learning, reasoning, problem-solving, perception, and decision-making. It is a field of re ...
, is an
ontology language used by
Douglas Lenat
Douglas Bruce Lenat (September 13, 1950 – August 31, 2023) was an American computer scientist and researcher in artificial intelligence who was the founder and CEO of Cycorp, Inc. in Austin, Texas.
Lenat was awarded the biannual IJCAI Comp ...
's
Cyc
Cyc (pronounced ) is a long-term artificial intelligence (AI) 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 ...
artificial intelligence project.
Ramanathan V. Guha was instrumental in designing early versions of the language. A close CycL variant exists named ''MELD''.
The original version of CycL was a
frame language, 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 app ...
based on classical
first-order logic
First-order logic, also called predicate logic, predicate calculus, or quantificational logic, is a collection of formal systems used in mathematics, philosophy, linguistics, and computer science. First-order logic uses quantified variables over ...
, with extensions for
modal logic
Modal logic is a kind of logic used to represent statements about Modality (natural language), necessity and possibility. In philosophy and related fields
it is used as a tool for understanding concepts such as knowledge, obligation, and causality ...
operators and
higher-order logic
In mathematics and logic, a higher-order logic (abbreviated HOL) is a form of logic that is distinguished from first-order logic by additional quantifiers and, sometimes, stronger semantics. Higher-order logics with their standard semantics are m ...
quantification.
CycL is used to represent the knowledge stored in the Cyc Knowledge Base, available from
Cycorp. The
source code
In computing, source code, or simply code or source, is a plain text computer program written in a programming language. A programmer writes the human readable source code to control the behavior of a computer.
Since a computer, at base, only ...
written in CycL released with the
OpenCyc system is licensed as
free and open-source software
Free and open-source software (FOSS) is software available under a license that grants users the right to use, modify, and distribute the software modified or not to everyone free of charge. FOSS is an inclusive umbrella term encompassing free ...
, to increase its usefulness in supporting the
semantic web
The Semantic Web, sometimes known as Web 3.0, is an extension of the World Wide Web through standards set by the World Wide Web Consortium (W3C). The goal of the Semantic Web is to make Internet data machine-readable.
To enable the encoding o ...
.
Basic ideas
The basic ideas of CycL include:
* 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 logical 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 distinct ...
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. A simpler example is equ ...
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 (#$, #$, 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 #$ and #$. The first one (#$isa) describes that one item is an instance of some collection (i.e., specialization), the second one (#$) 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 #$ #$ChordataPhylum #$FemaleAnimal)
which means that for every instance of the collection #$ChordataPhylum (i.e., for every
chordate
A chordate ( ) is a bilaterian animal belonging to the phylum Chordata ( ). All chordates possess, at some point during their larval or adult stages, five distinctive physical characteristics ( synapomorphies) that distinguish them from ot ...
), there exists a female animal (instance of #$FemaleAnimal) which is its mother (described by the predicate #$).
(Or in looser English, if a given animal has a backbone, then there will be a link from that 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
Ontology languages
References
{{Automated reasoning
Knowledge representation languages
Logic programming languages
Declarative programming languages
Ontology languages