A component has an subpart if the subpart is given by a unary function, called a subpart-slot, that is defined for that component. The value of a subpart slots on a component is a subcomponent-of the component. There may still be other subcomponents that aren't identified by a named subpart slot. Every slot that is the value of has-subpart-slot of a component must have a value for that component.
(=> (Has-Subpart-Slot ?Component ?Subpart-Slot) (And (Value-Cardinality ?Component ?Subpart-Slot 1) (Forall (?X) (=> (Instance-Of ?X ?Component) (Subcomponent-Of (Value ?Subpart-Slot ?X) ?Component)))))