A UsageConstraintSpecification is intended to describe the allowed usage of the constrainedParts.
A UsageConstraintSpecification is a container for various UsageConstraints each representing a single constraint. The sequencing of the UsageConstraints specifies the priority: a general denial may be relativized by a following UsageConstraint and vice-versa. In other words, the ordering of the UsageConstraintSpecification.partUsageConstraints collection has a semantic and is highly relevant. UsageConstraints further back in the collection have a higher priority than UsageConstraints further ahead. Successive UsageConstraints of the same type shall be interpreted as concatenation, whereas successive UsageConstraints of different types shall be interpreted as exceptions to the preceding statement.
The relationships UsageConstraint.usageNode and UsageConstraint.project make it possible to specify at which UsageNodes respectively in which Projects the usage of the constrained PartVersions is allowed/denied.