AtomSpace
From OpenCog
The AtomSpace is an interface for the manipulation and storage of hypergraphs, and is the central knowledge representation system provided by the OpenCog Framework. The AtomSpace provides a generic interface for manipulating Atoms (the superclass for Nodes and Links), and represents a layer of abstraction above specific atom storage implementations such as the AtomTable.
Conceptually, knowledge in OpenCog is stored and manipulated within large [weighted, labeled] hypergraphs with nodes and links linked together to represent knowledge on two levels, information primitives symbolized in individual or small sets of nodes/links, and patterns of relationships or activity found in [potentially] overlapping and nesting networks of nodes and links. (OCP tutorial log #2). Subtle reasons exist for each of the AtomSpace's design aspects; at the top of this list is the creation of an efficient substrate for Self-Modifying Evolving Probabilistic Hypergraphs.
Nodes and Links
There is a class for Node and another for Link as well as a common superclass Atom. So we refer to the AtomSpace as the set of nodes and links which represents the knowledge stored in an OpenCog database. Nodes are representation of entities in general, while Links are representation of some relationship among two or more Atoms (Links may link Nodes to Nodes, Nodes to Links or Links to Links).
Handles and the TLB
Atoms are uniquely identified by a Handle. Pointers to Atoms should never be kept in any data structure other than the AtomTable. All references to atoms should proceed through handles.
The purpose of the translation mechanism is to allow Atoms to be stored on disk, or even another machine, rather than always kept in RAM. Thus, an Atom is fetched into local memory only when it is actually needed. See opencog/atomspace/BackingStore.h for details, and opencog/persist/README for a persistence implementation.
Translation is implemented by the TLB interface.
class TLB {
public:
static inline Atom* getAtom(Handle handle);
static inline Handle getHandle(Atom* atom);
};
The getAtom() and getHandle() methods may be used to convert Handles to Atoms and vice-versa.

