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.
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.