From OpenCog
Jump to: navigation, search

A Section is a Link type that serves as a base class for things that can be "connected together". It is a base class for ScopeLink, and thus for LambdaLink; functions can be "connected together" by composing them.

See Connectors and Sections for details and examples.

Formal definition

A Section is of the form

   <entry (possibly lexical)>
          <optional link name>
          <link type (possibly lexical)>
          <link properties (polarity, other constraints)>

The use of the ConnectorSeq is sometime optional; it is usually a convenience. If it is not used, the Connectors may appear interspersed with other Atom types. There are several counter-examples:

  • The PrenexLink is a kind of Section, it provides extensive machinery to bring all Connectors to the top, so that the Section is in prenex normal form. Many of the commonly-used link types want to be in prenex form.
  • The ArrowLink is a kind of ConnectorSeq. It cannot be dissolved away, as it explicitly indicates function input and output types.

See Connectors and Sections for details and examples.

See the PDF's in the sheaf documentation directory for a detailed theoretical presentation and analysis of the overall concept.


The entry of the section is sometimes called the "germ". This is by analogy to the same word as used in sheaf theory. This is appropriate, as Sections can be seen to obey the axioms of a (pre-)sheaf.

The ConnectorSeq is sometimes called a disjunct. This name comes from the usage in Link Grammar, where multiple ConnectorSeq's are disjoined with one-another (that is, a Link Grammar linkage selects one disjunct out of a set.)


The CrossSection provide a mechanism for viewing a Section from the viewpoint of one of it's connectors. That is, it selects a connector, and elevates it to the germ position. CrossSections are useful for computing the similarity of two germs. For example, given a germ, the set of all sections on that germ can be thought of as a vector. There are many ways of computing the similarity between two vectors. By also elevating the individual connectors to germs, the accuracy of the similarity metrics can be improved.