A CONNECTION is an COMPONENT that represents a connection relationships between two other components. It is a reification of connected-components. That means that whereever the connected-components relation holds between two components, there exists a connection component. This is logical existence; this connection object may not be present in the memory of a representation system. Conversely, if a representation system has allocated a data structure for a connection object, it doesn't mean that it must explicitly represent the implied connected-components relationship. The practical reason for reifying a relationship is to be able to attached other information about it. For example, one might want to say that a particular connection is associated with some shared parameters, or that it is of a particular type.
Connection objects are components and can therefore be subcomponents of other components. However, to provide for modular regularity in component systems, this ontology prohibits one from connecting connection components.
For each pair of components related by connected-components, there exists at least one connection object. However, that object may not be unique, and the same connection object may be associated with several pairs of connected components.
(=> (Connected-Components ?A ?B) (And (Not (Connection ?A)) (Not (Connection ?B)))) (<=> (Connection ?X) (And (Component ?X) (Exists (?A ?B) (And (Component ?A) (Component ?B) (Connects-Components ?X ?A) (Connects-Components ?X ?B) (Connected-Components ?A ?B)))))