This package holds the Hierarchical Graph (henceforth abbreviated H-Graph) data structure. It has within Palcom been used to accommodate for primarily the inspectability experimentability qualities, but also to a certain extent others. The Palcom Open Architecture sports a pervasive use of it as a dynamic runtime data structure. The primary benefit and novelty of this comes not as much from the datastructure itself, more than it is a consequence of its use. As such, the use contains several perspectives. Firstly, the H-Graph is used for structuring and accessing/inspecting most non-transient elements of any process in a runtime environment. That is, both ontological functional entities as well as their data. Secondly, the H-Graph facilitates a simple message-passing and handling mechanism for inter-node messaging. Thirdly, the H-Graph act as a reflective mechanism facilitating, amongst others, inspection.

Package Specification

In general the intention is for H-Graphs to be used instead of inventing ad-hoc data structures. It is, as stated, a dynamic graph-esque runtime data structure. The ontology of H-Graphs is an extension of the ontology of standard object graphs used in object-oriented programs. It consists of the following elements: The notion of H-Graphs is historically tied to, the within Palcom previously used, concept of H-Maps (an abbreviation for Hirarchical Maps). Inspired by the Plan 9 OS from Bell Labs and the Linux /proc file system, the previously used Corundum framework uses a hierarchical map to support the implementation of palpable components, services and devices. In particular, the use of the externally accessible hierarchical map supports construction/deconstruction of assemblies of services, and visibility and introspection of services and applications. Although their historical relation, H-Graphs differ from H-Maps in several senses. Mainly, given their sibling reference concept and therefrom their secondary graph-like nature, the H-Graphs are not strictly hirarchical like H-Maps. Instead, they can be seen as hirerchically ordered graphs with a primary child-parent relationship and a secondary sibling relationship.