What is an association?

An association is a relationship between this semel and zero or more other semels (the "target" semel(s)).

Each association is one-way, from this semel to the target semel(s).

Each association has a name.

Each association has a role.
The role captures the reason why these two semels are related.
The role can be thought of as the "role" played by the target semel(s) with respect to this semel.

Example:

A "expression / operator / binary" has an association with a "expression" that plays the role of "operand 0" of this "expression / operator / binary".
A "expression / operator / binary" has an association with a "expression" that plays the role of "operand 1" of this "expression / operator / binary".

End of example.

Each association has a type (which is the name of the target semel(s)).

Each association has a multiplicity.
Multiplicity answers the question, "This semel is related to how many target semel(s)?".
Multiplicity is one of:

Each association is one of the following relationships:

Each semel has 0 or more associations.

A semel inherits all of the associations of all of its base semels (just as a class inherits all of the associations of all of its base classes).