Create operations create new HAM objects. A create operation takes object-dependent data and returns a unique object identifier (oid) and a version time, which is the time of creation.
Delete operations mark objects as deleted but retain historical information. A delete operation takes an oid and a version time and returns a new version time, the time at which the object was deleted.
Destroy operations free all space occupied by an object. A destroy operation takes an oid and a version time and returns a new version time, the time at which the object was destroyed. All history information (up to the specified version time) is destroyed along with the object.
Change operations modify data associated with an existing object. A change operation takes an oid, a version time and object-dependent data and returns a version time, the time the object was modified.
Get operations retrieve data from existing objects. A get operation takes an oid and a version time, and returns the data that existed at the specified time.
Filter operations selectively retrieve information from a graph. A filter operation takes a predicate, a version time, and a list of attributes. These operations return a list of objects that satisfy the predicate and a list of requested attributes attached to each object. The version time specifies that the filter must operate on versions of the objects that existed at that time. Each filter operation may have additional parameters.
Special operations are those that do not fit into any of the other categories. They include functions such as searching for strings in node contents, merging contexts, and managing transactions.
Note that the strict versioning mechanism with time stamps makes the operations easier to implement in a multi-user transaction environment. Since you can only retrieve information that existed at a specific time (such as right now) there is no conflict with ongoing transactions, as they are creating versions with a later time stamp, hence not the versions being retrieved. Although many of the features of the HAM have been implemented in modern hypertext systems, the versioning mechanism is still lacking in most systems.