One of the first approaches to a generic hypertext implementation model was the Hypertext Abstract Machine (HAM), "a general purpose, transaction-based, multi-user server for a hypertext storage system." [Campbell & Goodman, 1988]. HAM's emphasis was on developing an appropriate storage model. It provided a general and flexible model that could be used in several, different hypertext applications. The Hypertext System Architecture based on HAM contains the following layers (See Figure 6.1):
The HAM storage model consists of five major objects: graphs (networks of nodes and links containing one or more contexts), contexts (partitions of data within a graph), nodes, links, and attributes carrying semantics. The following operations could be performed on HAM objects: create, delete, destroy, change, get, filter, and special. The HAM architecture provided version control, filtering and data security. The HAM storage model has been successfully tested against systems such as Guide, Intermedia, and NoteCards.