Embryo Systems

HBDS

The Hypergraph-Based Data Structure: six abstract data types, a hypergraph to hold them, and a whole system built on top.

Origin

HBDS was designed by François Bouillé between 1975 and 1977 at the Université Pierre et Marie Curie. Its purpose: represent real-world phenomena, however complex, and store them in a very large database hidden from the user, who sees everything as if it were in core memory. The model is recursive and self-extensible: the structure describing the data is itself described in HBDS.

It came out of Bouillé’s thesis, Un modèle universel de banque de données, simultanément partageable, portable et répartie, was presented at database and cartography conferences through the 1980s, and was taught at the L.I.S.T. until at least the mid-1990s.

The abstract data types

The 1995 polycopié defines six. Three describe the schema, three describe the data that populates it:

Class
A set of objects sharing the same attributes and links.
Class attribute
A property declared on a class.
Link
A relation declared between two classes, or from a class to itself.
Object
A member of a class.
Object attribute
The value an object carries for one of its class's attributes.
Object link
An instance of a link, between two objects of the linked classes.

Later summaries collapse this to four (class, object, attribute, link) by folding each object-level type into its class-level one. For scale, the polycopié notes that a GIS structure generally comprises between 300 and 500 classes, depending on the geographical theme.

Two extensions

The polycopié then extends the six basic types twice.

Hyperclass, hyperattribute, hyperlink
A class of classes, its attributes, and the links between hyperclasses. Hence the hypergraph: a graph relates objects, a hypergraph relates sets of them.
Embryo, prototype, structure
Templates, then the real thing. An embryo is a class, link or class attribute as a template; a prototype composes embryos and prototypes; a structure is a prototype made real, where objects live. The embryo is what this site is named after.
HBDShDhaDhEHcAaA1aA2oacBaBcCaCLRol
The HBDS notation, after figures 6 and 7 of the polycopié: classes and their objects, attributes, links, two hyperclasses and a hyperlink.

The system around it

EXEL
Jacques Arsac's algorithmic language (1974), in which the algorithms are written.
ADT'81
A very high level language for abstract data types: full HBDS processing, inference expressions, scientific computation.
DSS
Data System Strings: the hidden storage format, machine-independent, so a base moves between 8- to 64-bit computers and can be distributed over a network.
SES
The Structured Expert System. A structure carries its own rules; components behave like processes; HBDS has its own inference engine.
Q-graph
The structuring tool for the dialog between system and user.

Bouillé’s published applications are cartography and geodata: catalogues of map-theme structures of some 150 classes, 1000 attributes and 600 links, and in 1986 an HBDS structure as the on-board intelligence of a surveying robot.

The system in 1995

The polycopié is the brief for the 1995-96 software engineering project: team projects numbered 0 to 20, one per layer, in this order, with the papers each layer rests on.

Coordination of the teams
Project 0: specifications, interfaces, error codes, documentation and schedule across every team. "Ungrateful and fascinating."
C2
The base tool: engines M0 to M5.
ADT'81 compiler
Projects 1, 2, 3 and 11: the language's simplified BNF, its modules, the A-CODE it generates and the tables of that code.
Optimiser
Projects 4 and 5.
Decompiler
Projects 6 and 7.
Executor kernel
Projects 8, 9, 10 and 12: the six basic types and their extensions, the multilayer system, prototypes and structures.
SFSI-ZE
Project 13: the indexed-sequential file system and its exchange zone. The storage layer.
List and functor engines
Projects 14 and 15: HBDS functors, multifunctors and the functorial engine.
Expert system engines
Project 16: forward chaining, CHAV and HYPOCHAV.
Discrete simulation engine
Project 17.
Neural engine
Project 18: from reflexes to neurons, "a part of the heart of the HBDS kernel".
Dialog engine
Project 19: the Q-graph, and a dialog for building dialogs.
NINJAS
Project 20: protection against, and culture of, object-oriented viruses.
Further subjects
Fuzzy types, complex numbers and quaternions, a constraint engine, ADTmin precompilers to C, Ada, Pascal and Fortran 8X.