OpenCog consists of: • A
graph database, dubbed the AtomSpace, that holds "atoms" (that is,
terms,
atomic formulas,
sentences and
relationships) together with their "values" (
valuations or
interpretations, which can be thought of as per-atom
key-value databases). An example of a value would be a
truth value. Atoms are globally unique, immutable and are indexed (searchable); values are fleeting and changeable. • A collection of pre-defined atoms, termed Atomese, used for generic
knowledge representation, such as
conceptual graphs and
semantic networks, as well as to represent and store the rules (in the sense of
term rewriting) needed to manipulate such graphs. • A collection of pre-defined atoms that encode a
type subsystem, including
type constructors and
function types. These are used to specify the types of variables, terms and expressions, and are used to specify the structure of generic graphs containing variables. • A collection of pre-defined atoms that encode both
functional and
imperative programming styles. These include the
lambda abstraction for binding
free variables into
bound variables, as well as for performing
beta reduction. • A collection of pre-defined atoms that encode a
satisfiability modulo theories solver, built in as a part of a generic graph query engine, for performing graph and hypergraph pattern matching (
isomorphic subgraph discovery). This generalizes the idea of a structured query language (
SQL) to the domain of generic graphical queries; it is an extended form of a graph
query language. • A generic
rule engine, including a
forward chainer and a
backward chainer, that is able to chain together rules. The rules are exactly the graph queries of the graph query subsystem, and so the rule engine vaguely resembles a
query planner. It is designed so as to allow different kinds of
inference engines and
reasoning systems to be implemented, such as
Bayesian inference or
fuzzy logic, or practical tasks, such as
constraint solvers or
motion planners. • An attention allocation subsystem based on economic theory, termed ECAN. This subsystem is used to control the combinatorial explosion of search possibilities that are met during inference and chaining. • An implementation of a probabilistic
reasoning engine based on probabilistic logic networks. The current implementation uses the rule engine to chain together specific rules of
logical inference (such as
modus ponens), together with some very specific mathematical formulas assigning a probability and a confidence to each deduction. This subsystem can be thought of as a certain kind of
proof assistant that works with a modified form of Bayesian inference. • A probabilistic
genetic program evolver called Meta-Optimizing Semantic Evolutionary Search, or MOSES. This is used to discover collections of short Atomese programs that accomplish tasks; these can be thought of as performing a kind of
decision tree learning, resulting in a kind of
decision forest, or rather, a generalization thereof. • A natural language input system consisting of
Link Grammar, and partly inspired by both
Meaning-Text Theory as well as Dick Hudson's
Word Grammar, which encodes semantic and syntactic relations in Atomese. • A natural language generation system. • An implementation of
Psi-Theory for handling
emotional states, drives and urges, dubbed OpenPsi. • Interfaces to
Hanson Robotics robots, including emotion modelling via OpenPsi. This includes the
Loving AI project, used to demonstrate meditation techniques. == Organization and funding ==