Skip to content

Techinical Overview

Nick Pope edited this page Jun 22, 2013 · 9 revisions

The core of DSB (Dynamic Structure-Base) is made up of a vast and distributed collection of dynamic hyperarcs that together form a hypergraph(1)(2). The hyperarcs are dynamic as they are defined by a hyperpath through the hypergraph of which they form a part.

Communication between hyperarcs and between external agents and the hypergraph is performed entirely by message events. Events are generated to observe and modify the hypergraph, as well as for path navigation and dependency maintenance.

Hyperarcs

A DSB hyperarc has a tail of cardinality 2; in other words each hyperarc is identified by and consists of two source connections which together point to a single head connection. All kinds of concept and relationship in DSB map to this 2-to-1 relation.

Simple Hyperarc

Each hyperarc is defined by a hyperpath through the same hypergraph that the hyperarc belongs to. It would be problematic, however, if a hyperarcs hyperpath definition referred to the hyperarc being defined by it as that would, in effect, result in an infinite loop that continually tries to navigate the hyperpath.

Hyperarc with Hyperpath

In DSB each connection point (i.e. both tails and the head) are identified by Node IDs (NIDs). Therefore, a single hyperarc consists of 3 NIDs, two for the tail and one for the head. In addition, there is the hyperpath definition which is itself a structure contained within the hypergraph and can itself be referred to with a NID. So, a hyperarc has two tail NIDs, a definition NID and a (virtual) head NID that is calculated from the hyperpath and cached.

Hyperpaths

A hyperpath consists of a set of starting points which, when combined, describe a route through the hypergraph that must finish at a single point. The single result then becomes the head of the hyperarc defined by the hyperpath.

In DSB a hyperpath definition is described and implemented as a sequential imperative script (running in a special virtual machine). The script, using conditionals and loops, chooses and navigates a path to determine a result. These hyperpath scripts cannot, unlike normal imperative programs, have any side-effects beyond the value they return. Whilst a static hyperpath could be given as a definition, it is easier, more flexible and potentially more efficient if the hyperpath is dynamically generated by a script.

Hypergraph Fabric

Hyperarc Events

Agents

Clone this wiki locally