Starion Group

Generated with uml4net version 6.3.2.0 on 2026-02-07 23:40:37

Name: SysML
URI: https://www.omg.org/spec/SysML/20250201

1. Enumeration Types

FeatureDirectionKind [Enumeration]

Features

Name Description
Fully Qualified Name KerML::Core::Types::FeatureDirectionKind
Definition FeatureDirectionKind enumerates the possible kinds of direction that a Feature may be given as a member of a Type.

Enumeration Literals

Name Description
in Values of the Feature on each instance of its domain are determined externally to that instance and used internally.
inout Values of the Feature on each instance are determined either as in or out directions, or both.
out Values of the Feature on each instance of its domain are determined internally to that instance and used externally.

PortionKind [Enumeration]

Features

Name Description
Fully Qualified Name SysML::Systems::Occurrences::PortionKind
Definition PortionKind is an enumeration of the specific kinds of Occurrence portions that can be represented by an OccurrenceUsage.

Enumeration Literals

Name Description
timeslice A time slice of an Occurrence (a portion over time).
snapshot A snapshot of an Occurrence (a time slice with zero duration).

RequirementConstraintKind [Enumeration]

Features

Name Description
Fully Qualified Name SysML::Systems::Requirements::RequirementConstraintKind
Definition A RequirementConstraintKind indicates whether a ConstraintUsage is an assumption or a requirement in a RequirementDefinition or RequirementUsage.

Enumeration Literals

Name Description
assumption Indicates that a member ConstraintUsage of a RequirementDefinition or RequirementUsage represents an assumption.
requirement Indicates that a member ConstraintUsage of a RequirementDefinition or RequirementUsagerepresents an requirement.

StateSubactionKind [Enumeration]

Features

Name Description
Fully Qualified Name SysML::Systems::States::StateSubactionKind
Definition A StateSubactionKind indicates whether the action of a StateSubactionMembership is an entry, do or exit action.

Enumeration Literals

Name Description
entry Indicates that the action of a StateSubactionMembership is an entryAction.
do Indicates that the action of a StateSubactionMembership is a doAction.
exit Indicates that the action of a StateSubactionMembership is an exitAction.

TransitionFeatureKind [Enumeration]

Features

Name Description
Fully Qualified Name SysML::Systems::States::TransitionFeatureKind
Definition A TransitionActionKind indicates whether the transitionFeature of a TransitionFeatureMembership is a trigger, guard or effect.

Enumeration Literals

Name Description
trigger Indicates that the transitionFeature of a TransitionFeatureMembership is a triggerAction.
guard Indicates that the transitionFeature of a TransitionFeatureMembership is a guardExpression.
effect Indicates that the transitionFeature of a TransitionFeatureMembership is an effectAction.

TriggerKind [Enumeration]

Features

Name Description
Fully Qualified Name SysML::Systems::Actions::TriggerKind
Definition TriggerKind enumerates the kinds of triggers that can be represented by a TriggerInvocationExpression.

Enumeration Literals

Name Description
when Indicates a change trigger, corresponding to the TriggerWhen Function from the Triggers model in the Kernel Semantic Library.
at Indicates an absolute time trigger, corresponding to the TriggerAt Function from the Triggers model in the Kernel Semantic Library.
after Indicates a relative time trigger, corresponding to the TriggerAfter Function from the Triggers model in the Kernel Semantic Library.

VisibilityKind [Enumeration]

Features

Name Description
Fully Qualified Name KerML::Root::Namespaces::VisibilityKind
Definition VisibilityKind is an enumeration whose literals specify the visibility of a Membership of an Element in a Namespace outside of that Namespace. Note that "visibility" specifically restricts whether an Element in a Namespace may be referenced by name from outside the Namespace and only otherwise restricts access to an Element as provided by specific constraints in the abstract syntax (e.g., preventing the import or inheritance of private Elements).

Enumeration Literals

Name Description
private Indicates a Membership is not visible outside its owning Namespace.
protected An intermediate level of visibility between public and private. By default, it is equivalent to private for the purposes of normal access to and import of Elements from a Namespace. However, other Relationships may be specified to include Memberships with protected visibility in the list of memberships for a Namespace (e.g., Specialization).
public Indicates that a Membership is publicly visible outside its owning Namespace.

2. Primitive Types

Boolean [PrimitiveType]

Features

Name Description
Fully Qualified Name PrimitiveTypes::Boolean
Definition Boolean is used for logical expressions, consisting of the predefined values true and false.

Integer [PrimitiveType]

Features

Name Description
Fully Qualified Name PrimitiveTypes::Integer
Definition Integer is a primitive type representing integer values.

Real [PrimitiveType]

Features

Name Description
Fully Qualified Name PrimitiveTypes::Real
Definition Real is a primitive type representing the mathematical concept of real.

String [PrimitiveType]

Features

Name Description
Fully Qualified Name PrimitiveTypes::String
Definition String is a sequence of characters in some suitable character set used to display information about the model. Character sets may include non-Roman alphabets and characters.

UnlimitedNatural [PrimitiveType]

Features

Name Description
Fully Qualified Name PrimitiveTypes::UnlimitedNatural
Definition UnlimitedNatural is a primitive type representing unlimited natural values.

3. Data Types

No Data Types (other than Enumerations and Primitive Types) have been found in the UML model

4. Classes

AcceptActionUsage [Class]

Features

Name Description
Fully Qualified Name SysML::Systems::Actions::AcceptActionUsage
Visibility Public
Definition An AcceptActionUsage is an ActionUsage that specifies the acceptance of an incomingTransfer from the Occurrence given by the result of its receiverArgument Expression. (If no receiverArgument is provided, the default is the this context of the AcceptActionUsage.) The payload of the accepted Transfer is output on its payloadParameter. Which Transfers may be accepted is determined by conformance to the typing and (potentially) binding of the payloadParameter.
Is Abstract FALSE
Generalizations ActionUsage
Specializations
Containers

Rules

Name Visibilty Description Specification Owner
checkAcceptActionUsageReceiverBindingConnector Public If the payloadArgument of an AcceptActionUsage is a TriggerInvocationExpression, then the AcceptActionusage must have an ownedFeature that is a BindingConnector between its receiver parameter and the receiver parameter of the TriggerInvocationExpression. OCL2.0: payloadArgument <> null and payloadArgument.oclIsKindOf(TriggerInvocationExpression) implies let invocation : Expression = payloadArgument.oclAsType(Expression) in parameter->size() >= 2 and invocation.parameter->size() >= 2 and ownedFeature->selectByKind(BindingConnector)->exists(b | b.relatedFeatures->includes(parameter->at(2)) and b.relatedFeatures->includes(invocation.parameter->at(2))) AcceptActionUsage
checkAcceptActionUsageSpecialization Public An AcceptActionUsage that is not the triggerAction of a TransitionUsage must directly or indirectly specialize the ActionUsage Actions::acceptActions from the Systems Model Library. OCL2.0: not isTriggerAction() implies specializesFromLibrary('Actions::acceptActions') AcceptActionUsage
checkAcceptActionUsageSubactionSpecialization Public A composite AcceptActionUsage that is a subaction usage, but is not the triggerAction of a TransitionUsage, must directly or indirectly specialize the ActionUsage Actions::Action::acceptSubactions from the Systems Model Library. OCL2.0: isSubactionUsage() and not isTriggerAction() implies specializesFromLibrary('Actions::Action::acceptSubactions') AcceptActionUsage
checkAcceptActionUsageTriggerActionSpecialization Public An AcceptActionUsage that is the triggerAction of TransitionUsage must directly or indirectly specialize the ActionUsage Actions::TransitionAction::accepter from the Systems Model Library. OCL2.0: isTriggerAction() implies specializesFromLibrary('Actions::TransitionAction::accepter') AcceptActionUsage
checkActionUsageOwnedActionSpecialization Public A composite ActionUsage whose owningType is PartDefinition or PartUsage must directly or indirectly specialize the ActionUsage Parts::Part::ownedActions from the Systems Model Library. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(PartDefinition) or owningType.oclIsKindOf(PartUsage)) implies specializesFromLibrary('Parts::Part::ownedActions') ActionUsage
checkActionUsageSpecialization Public An ActionUsage must directly or indirectly specialize the ActionUsage Actions::actions from the Systems Model Library. OCL2.0: specializesFromLibrary('Actions::actions') ActionUsage
checkActionUsageStateActionRedefinition Public An ActionUsage that is the entry, do, or exit Action of a StateDefinition or StateUsage must redefine the entryAction, doAction, or exitAction feature, respectively, of the StateDefinition States::StateAction from the Systems Model Library. OCL2.0: owningFeatureMembership <> null and owningFeatureMembership.oclIsKindOf(StateSubactionMembership) implies let kind : StateSubactionKind = owningFeatureMembership.oclAsType(StateSubactionMembership).kind in if kind = StateSubactionKind::entry then redefinesFromLibrary('States::StateAction::entryAction') else if kind = StateSubactionKind::do then redefinesFromLibrary('States::StateAction::doAction') else redefinesFromLibrary('States::StateAction::exitAction') endif endif ActionUsage
checkActionUsageSubactionSpecialization Public A composite ActionUsage that is a subaction usage must directly or indirectly specialize the ActionUsage Actions::Action::subactions from the Systems Model Library. OCL2.0: isSubactionUsage() implies specializesFromLibrary('Actions::Action::subactions') ActionUsage
checkFeatureCrossingSpecialization Public If this Feature has isEnd = true and ownedCrossFeature returns a non-null value, then the crossFeature of the Feature must be the Feature returned from ownedCrossFeature (which implies that this Feature has an appropriate ownedCrossSubsetting to realize this). OCL2.0: ownedCrossFeature() <> null implies crossFeature = ownedCrossFeature() Feature
checkFeatureDataValueSpecialization Public If a Feature has an ownedTyping relationship to a DataType, then it must directly or indirectly specialize Base::dataValues from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(DataType)) implies specializesFromLibrary('Base::dataValues') Feature
checkFeatureEndRedefinition Public If a Feature has isEnd = true and an owningType that is not empty, then, for each direct supertype of its owningType, it must redefine the endFeature at the same position, if any. OCL2.0: isEnd and owningType <> null implies let i : Integer = owningType.ownedEndFeature->indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | supertype.endFeature->size() >= i implies redefines(supertype.endFeature->at(i)) Feature
checkFeatureEndSpecialization Public If a Feature has isEnd = true and an owningType that is an Association or a Connector, then it must directly or indirectly specialize Links::Link::participant from the Kernel Semantic Library. OCL2.0: isEnd and owningType <> null and (owningType.oclIsKindOf(Association) or owningType.oclIsKindOf(Connector)) implies specializesFromLibrary('Links::Link::participant') Feature
checkFeatureFeatureMembershipTypeFeaturing Public If a Feature is owned via a FeatureMembership, then it must have a featuringType for which the operation isFeaturingType returns true. OCL2.0: owningFeatureMembership <> null implies featuringTypes->exists(t | isFeaturingType(t)) Feature
checkFeatureFlowFeatureRedefinition Public If a Feature is the first ownedFeature of a first or second FlowEnd, then it must directly or indirectly specialize either Transfers::Transfer::source::sourceOutput or Transfers::Transfer::target::targetInput, respectively, from the Kernel Semantic Library. OCL2.0: owningType <> null and owningType.oclIsKindOf(FlowEnd) and owningType.ownedFeature->at(1) = self implies let flowType : Type = owningType.owningType in flowType <> null implies let i : Integer = flowType.ownedFeature.indexOf(owningType) in (i = 1 implies redefinesFromLibrary('Transfers::Transfer::source::sourceOutput')) and (i = 2 implies redefinesFromLibrary('Transfers::Transfer::source::targetInput')) Feature
checkFeatureObjectSpecialization Public If a Feature has an ownedTyping relationship to a Structure, then it must directly or indirectly specialize Objects::objects from the Kernel Semantics Library. OCL2.0: ownedTyping.type->exists(selectByKind(Structure)) implies specializesFromLibary('Objects::objects') Feature
checkFeatureOccurrenceSpecialization Public If a Feature has an ownedTyping relationship to a Class, then it must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(Class)) implies specializesFromLibrary('Occurrences::occurrences') Feature
checkFeatureOwnedCrossFeatureRedefinitionSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then, for any end Feature that is redefined by the owning end Feature of this Feature, this Feature must subset the crossFeature of the redefined end Feature, if this exists. OCL2.0: isOwnedCrossFeature() implies ownedSubsetting.subsettedFeature->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature <> null).crossFeature) Feature
checkFeatureOwnedCrossFeatureSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then it must directly or indirectly specialize the types of its owning end Feature. OCL2.0: isOwnedCrossFeature() implies owner.oclAsType(Feature).type->forAll(t | self.specializes(t)) Feature
checkFeatureOwnedCrossFeatureTypeFeaturing Public If this Feature is the ownedCrossFeature of an end Feature, then it must have featuringTypes consistent with the crossing from other end Features of the owningType of its end Feature. OCL2.0: isOwnedCrossFeature() implies let otherEnds : OrderedSet(Feature) = owner.oclAsType(Feature).owningType.endFeature->excluding(self) in if (otherEnds->size() = 1) then featuringType = otherEnds->first().type else featuringType->size() = 1 and featuringType->first().isCartesianProduct() and featuringType->first().asCartesianProduct() = otherEnds.type and featuringType->first().allSupertypes()->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature() <> null).crossFeature().featuringType) endif Feature
checkFeatureParameterRedefinition Public If a Feature is a parameter of an owningType that is a Behavior or Step, but not
  • A result parameter
  • A parameter of an InvocationExpression, with at least one non-implied ownedRedefinition
then, for each direct supertype of its owningType that is also a Behavior or Step, it must redefine the parameter at the same position, if any.
OCL2.0: owningType <> null and not owningFeatureMembership. oclIsKindOf(ReturnParameterMembership) and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step) and (owningType.oclIsKindOf(InvocationExpression) implies not ownedRedefinition->exists(not isImplied)) implies let i : Integer = owningType.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership))-> indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | let ownedParameters : Sequence(Feature) = supertype.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership)) in ownedParameters->size() >= i implies redefines(ownedParameters->at(i)) Feature
checkFeaturePortionSpecialization Public If a Feature has isPortion = true, an ownedTyping relationship to a Class, and an owningType that is a Class or another Feature typed by a Class, then it must directly or indirectly specialize Occurrences::Occurrence::portions from the Kernel Semantic Library. OCL2.0: isPortion and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::portions') Feature
checkFeatureResultRedefinition Public If a Feature is a result parameter of an owningType that is a Function or Expression, then, for each direct supertype of its owningType that is also a Function or Expression, it must redefine the result parameter. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Function) and self = owningType.oclAsType(Function).result or owningType.oclIsKindOf(Expression) and self = owningType.oclAsType(Expression).result) implies owningType.ownedSpecialization.general-> select(oclIsKindOf(Function) or oclIsKindOf(Expression))-> forAll(supertype | redefines( if superType.oclIsKindOf(Function) then superType.oclAsType(Function).result else superType.oclAsType(Expression).result endif) Feature
checkFeatureSpecialization Public A Feature must directly or indirectly specialize Base::things from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::things') Feature
checkFeatureSubobjectSpecialization Public A composite Feature typed by a Structure, and whose ownedType is a Structure or another Feature typed by a Structure must directly or indirectly specialize Objects::Object::subobjects. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Structure)) and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.type->includes(oclIsKindOf(Structure))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureSuboccurrenceSpecialization Public A composite Feature that has an ownedTyping relationship to a Class, and whose ownedType is a Class or another Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureValuationSpecialization Public If a Feature has a FeatureValue, no ownedSpecializations that are not implied, and is not directed, then it must specialize the result of the value Expression of the FeatureValue. OCL2.0: direction = null and ownedSpecializations->forAll(isImplied) implies ownedMembership-> selectByKind(FeatureValue)-> forAll(fv | specializes(fv.value.result)) Feature
checkOccurrenceUsageSnapshotSpecialization Public If an OccurrenceUsage has portionKind = snapshot, then it must directly or indirectly specialize Occurrences::Occurrence::snapshots from the Kernel Semantic Library. OCL2.0: portionKind = PortionKind::snapshot implies specializesFromLibrary('Occurrences::Occurrence::snapshots') OccurrenceUsage
checkOccurrenceUsageSpecialization Public An OccurrenceUsage must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Occurrences::occurrences') OccurrenceUsage
checkOccurrenceUsageSuboccurrenceSpecialization Public A composite OccurrenceUsage, whose ownedType is a Class, another OccurrenceUsage, or any kind of Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(OccurrenceUsage) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKind(Class))) implies specializesFromLibrary('Occurrences::Occurrence::suboccurrences') OccurrenceUsage
checkOccurrenceUsageTimeSliceSpecialization Public If an OccurrenceUsage has portionKind = timeslice, then it must directly or indirectly specialize Occurrences::Occurrence::timeSlices from the Kernel Semantic Library. OCL2.0: portionKind = PortionKind::timeslice implies specializesFromLibrary('Occurrences::Occurrence::timeSlices') OccurrenceUsage
checkStepEnclosedPerformanceSpecialization Public AStep whose owningType is a Behavior or another Step must directly or indirectly specialize the Step Performances::Performance::enclosedPerformance. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step)) implies specializesFromLibrary('Performances::Performance::enclosedPerformance') Step
checkStepOwnedPerformanceSpecialization Public A composite Step whose owningType is a Structure or a Feature typed by a Structure must directly or indirectly specialize the Step Objects::Object::ownedPerformance. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Structure)) implies specializesFromLibrary('Objects::Object::ownedPerformance') Step
checkStepSpecialization Public A Step must directly or indirectly specialize the base Step Performances::performances from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::performances') Step
checkStepSubperformanceSpecialization Public AStep whose owningType is a Behavior or another Step, and which is composite, must directly or indirectly specialize the Step Performances::Performance::subperformance. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step)) and self.isComposite implies specializesFromLibrary('Performances::Performance::subperformance') Step
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
checkUsageVariationDefinitionSpecialization Public If a Usage has an owningVariationDefinition, then it must directly or indirectly specialize that Definition. OCL2.0: owningVariationDefinition <> null implies specializes(owningVariationDefinition) Usage
checkUsageVariationUsageSpecialization Public If a Usage has an owningVariationUsage, then it must directly or indirectly specialize that Usage. OCL2.0: owningVariationUsage <> null implies specializes(owningVariationUsage) Usage
checkUsageVariationUsageTypeFeaturing Public If a Usage has an owningVariationUsage, then it must have the same featuringTypes as that Usage. OCL2.0: owningVariationUsage <> null implies featuringType->asSet() = owningVariationUsage.featuringType->asSet() Usage
deriveAcceptActionUsagePayloadArgument Public The payloadArgument of an AcceptUsageAction is its first argument Expression. OCL2.0: payloadArgument = argument(1) AcceptActionUsage
deriveAcceptActionUsagePayloadParameter Public The payloadParameter of an AcceptActionUsage is its first parameter. OCL2.0: payloadParameter = if parameter->isEmpty() then null else parameter->first() endif AcceptActionUsage
deriveAcceptActionUsageReceiverArgument Public The receiverArgument of an AcceptUsageAction is its second argument Expression. OCL2.0: receiverArgument = argument(2) AcceptActionUsage
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveFeatureChainingFeature Public The chainingFeatures of a Feature are the chainingFeatures of its ownedFeatureChainings. OCL2.0: chainingFeature = ownedFeatureChaining.chainingFeature Feature
deriveFeatureCrossFeature Public The crossFeature of a Feature is the second chainingFeature of the crossedFeature of the ownedCrossSubsetting of the Feature, if any. OCL2.0: crossFeature = if ownedCrossSubsetting = null then null else let chainingFeatures: Sequence(Feature) = ownedCrossSubsetting.crossedFeature.chainingFeature in if chainingFeatures->size() < 2 then null else chainingFeatures->at(2) endif Feature
deriveFeatureFeatureTarget Public If a Feature has no chainingFeatures, then its featureTarget is the Feature itself, otherwise the featureTarget is the last of the chainingFeatures. OCL2.0: featureTarget = if chainingFeature->isEmpty() then self else chainingFeature->last() endif Feature
deriveFeatureFeaturingType Public The featuringTypes of a Feature include the featuringTypes of all the typeFeaturings of the Feature. If the Feature has chainingFeatures, then its featuringTypes also include the featuringTypes of the first chainingFeature. OCL2.0: featuringType = let featuringTypes : OrderedSet(Type) = featuring.type->asOrderedSet() in if chainingFeature->isEmpty() then featuringTypes else featuringTypes-> union(chainingFeature->first().featuringType)-> asOrderedSet() endif Feature
deriveFeatureOwnedCrossSubsetting Public The ownedCrossSubsetting of a Feature is the ownedSubsetting that is a CrossSubsetting, if any. OCL2.0: ownedCrossSubsetting = let crossSubsettings: Sequence(CrossSubsetting) = ownedSubsetting->selectByKind(CrossSubsetting) in if crossSubsettings->isEmpty() then null else crossSubsettings->first() endif Feature
deriveFeatureOwnedFeatureChaining Public The ownedFeatureChainings of a Feature are the ownedRelationships that are FeatureChainings. OCL2.0: ownedFeatureChaining = ownedRelationship->selectByKind(FeatureChaining) Feature
deriveFeatureOwnedFeatureInverting Public The ownedFeatureInvertings of a Feature are its ownedRelationships that are FeatureInvertings. OCL2.0: ownedFeatureInverting = ownedRelationship->selectByKind(FeatureInverting)-> select(fi | fi.featureInverted = self) Feature
deriveFeatureOwnedRedefinition Public The ownedRedefinitions of a Feature are its ownedSubsettings that are Redefinitions. OCL2.0: ownedRedefinition = ownedSubsetting->selectByKind(Redefinition) Feature
deriveFeatureOwnedReferenceSubsetting Public The ownedReferenceSubsetting of a Feature is the first ownedSubsetting that is a ReferenceSubsetting (if any). OCL2.0: ownedReferenceSubsetting = let referenceSubsettings : OrderedSet(ReferenceSubsetting) = ownedSubsetting->selectByKind(ReferenceSubsetting) in if referenceSubsettings->isEmpty() then null else referenceSubsettings->first() endif Feature
deriveFeatureOwnedSubsetting Public The ownedSubsettings of a Feature are its ownedSpecializations that are Subsettings. OCL2.0: ownedSubsetting = ownedSpecialization->selectByKind(Subsetting) Feature
deriveFeatureOwnedTypeFeaturing Public The ownedTypeFeaturings of a Feature are its ownedRelationships that are TypeFeaturings and which have the Feature as their featureOfType. OCL2.0: ownedTypeFeaturing = ownedRelationship->selectByKind(TypeFeaturing)-> select(tf | tf.featureOfType = self) Feature
deriveFeatureOwnedTyping Public The ownedTypings of a Feature are its ownedSpecializations that are FeatureTypings. OCL2.0: ownedTyping = ownedGeneralization->selectByKind(FeatureTyping) Feature
deriveFeatureType Public The types of a Feature are the union of the types of its typings and the types of the Features it subsets, with all redundant supertypes removed. If the Feature has chainingFeatures, then the union also includes the types of the last chainingFeature. OCL2.0: type = let types : OrderedSet(Types) = OrderedSet{self}-> -- Note: The closure operation automatically handles circular relationships. closure(typingFeatures()).typing.type->asOrderedSet() in types->reject(t1 | types->exist(t2 | t2 <> t1 and t2.specializes(t1))) Feature
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOccurrenceUsageIndividualDefinition Public The individualDefinition of an OccurrenceUsage is the occurrenceDefinition that is an OccurrenceDefinition with isIndividual = true, if any. OCL2.0: individualDefinition = let individualDefinitions : OrderedSet(OccurrenceDefinition) = occurrenceDefinition-> selectByKind(OccurrenceDefinition)-> select(isIndividual) in if individualDefinitions->isEmpty() then null else individualDefinitions->first() endif OccurrenceUsage
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveStepBehavior Public The behaviors of a Step are all its types that are Behaviors. OCL2.0: behavior = type->selectByKind(Behavior) Step
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
deriveUsageDirectedUsage Public The directedUsages of a Usage are all its directedFeatures that are Usages. OCL2.0: directedUsage = directedFeature->selectByKind(Usage) Usage
deriveUsageIsReference Public A Usage is referential if it is not composite. OCL2.0: isReference = not isComposite Usage
deriveUsageMayTimeVary Public A Usage mayTimeVary if and only if all of the following are true
  • It has an owningType that specializes Occurrences::Occurrence (from the Kernel Semantic Library).
  • It is not a portion.
  • It does not specialize Links::SelfLink or Occurrences::HappensLink (from the Kernel Semantic Library).
  • If isComposite = true, it does not specialize Actions::Action (from the Systems Model Library).
OCL2.0: mayTimeVary = owningType <> null and owningType.specializesFromLibrary('Occurrences::Occurrence') and not ( isPortion or specializesFromLibrary('Links::SelfLink') or specializesFromLibrary('Occurrences::HappensLink') or isComposite and specializesFromLibrary('Actions::Action') ) Usage
deriveUsageNestedAction Public The ownedActions of a Usage are all its ownedUsages that are ActionUsages. OCL2.0: nestedAction = nestedUsage->selectByKind(ActionUsage) Usage
deriveUsageNestedAllocation Public The ownedAllocations of a Usage are all its ownedUsages that are AllocationUsages. OCL2.0: nestedAllocation = nestedUsage->selectByKind(AllocationUsage) Usage
deriveUsageNestedAnalysisCase Public The ownedAnalysisCases of a Usage are all its ownedUsages that are AnalysisCaseUsages. OCL2.0: nestedAnalysisCase = nestedUsage->selectByKind(AnalysisCaseUsage) Usage
deriveUsageNestedAttribute Public The ownedAttributes of a Usage are all its ownedUsages that are AttributeUsages. OCL2.0: nestedAttribute = nestedUsage->selectByKind(AttributeUsage) Usage
deriveUsageNestedCalculation Public The ownedCalculations of a Usage are all its ownedUsages that are CalculationUsages. OCL2.0: nestedCalculation = nestedUsage->selectByKind(CalculationUsage) Usage
deriveUsageNestedCase Public The ownedCases of a Usage are all its ownedUsages that are CaseUsages. OCL2.0: nestedCase = nestedUsage->selectByKind(CaseUsage) Usage
deriveUsageNestedConcern Public The ownedConcerns of a Usage are all its ownedUsages that are ConcernUsages. OCL2.0: nestedConcern = nestedUsage->selectByKind(ConcernUsage) Usage
deriveUsageNestedConnection Public The ownedConnections of a Usage are all its ownedUsages that are ConnectorAsUsages. OCL2.0: nestedConnection = nestedUsage->selectByKind(ConnectorAsUsage) Usage
deriveUsageNestedConstraint Public The ownedConstraints of a Usage are all its ownedUsages that are ConstraintUsages. OCL2.0: nestedConstraint = nestedUsage->selectByKind(ConstraintUsage) Usage
deriveUsageNestedEnumeration Public The ownedEnumerations of a Usage are all its ownedUsages that are EnumerationUsages. OCL2.0: ownedNested = nestedUsage->selectByKind(EnumerationUsage) Usage
deriveUsageNestedFlow Public The ownedFlows of a Usage are all its ownedUsages that are FlowConnectionUsages. OCL2.0: nestedFlow = nestedUsage->selectByKind(FlowConnectionUsage) Usage
deriveUsageNestedInterface Public The ownedInterfaces of a Usage are all its ownedUsages that are InterfaceUsages. OCL2.0: nestedInterface = nestedUsage->selectByKind(ReferenceUsage) Usage
deriveUsageNestedItem Public The ownedItems of a Usage are all its ownedUsages that are ItemUsages. OCL2.0: nestedItem = nestedUsage->selectByKind(ItemUsage) Usage
deriveUsageNestedMetadata Public The ownedMetadata of a Usage are all its ownedUsages that are MetadataUsages. OCL2.0: nestedMetadata = nestedUsage->selectByKind(MetadataUsage) Usage
deriveUsageNestedOccurrence Public The ownedOccurrences of a Usage are all its ownedUsages that are OccurrenceUsages. OCL2.0: nestedOccurrence = nestedUsage->selectByKind(OccurrenceUsage) Usage
deriveUsageNestedPart Public The ownedParts of a Usage are all its ownedUsages that are PartUsages. OCL2.0: nestedPart = nestedUsage->selectByKind(PartUsage) Usage
deriveUsageNestedPort Public The ownedPorts of a Usage are all its ownedUsages that are PortUsages. OCL2.0: nestedPort = nestedUsage->selectByKind(PortUsage) Usage
deriveUsageNestedReference Public The ownedReferences of a Usage are all its ownedUsages that are ReferenceUsages. OCL2.0: nestedReference = nestedUsage->selectByKind(ReferenceUsage) Usage
deriveUsageNestedRendering Public The ownedRenderings of a Usage are all its ownedUsages that are RenderingUsages. OCL2.0: nestedRendering = nestedUsage->selectByKind(RenderingUsage) Usage
deriveUsageNestedRequirement Public The ownedRequirements of a Usage are all its ownedUsages that are RequirementUsages. OCL2.0: nestedRequirement = nestedUsage->selectByKind(RequirementUsage) Usage
deriveUsageNestedState Public The ownedStates of a Usage are all its ownedUsages that are StateUsages. OCL2.0: nestedState = nestedUsage->selectByKind(StateUsage) Usage
deriveUsageNestedTransition Public The ownedTransitions of a Usage are all its ownedUsages that are TransitionUsages. OCL2.0: nestedTransition = nestedUsage->selectByKind(TransitionUsage) Usage
deriveUsageNestedUsage Public The ownedUsages of a Usage are all its ownedFeatures that are Usages. OCL2.0: nestedUsage = ownedFeature->selectByKind(Usage) Usage
deriveUsageNestedUseCase Public The ownedUseCases of a Usage are all its ownedUsages that are UseCaseUsages. OCL2.0: nestedUseCase = nestedUsage->selectByKind(UseCaseUsage) Usage
deriveUsageNestedVerificationCase Public The ownedValidationCases of a Usage are all its ownedUsages that are ValidationCaseUsages. OCL2.0: nestedVerificationCase = nestedUsage->selectByKind(VerificationCaseUsage) Usage
deriveUsageNestedView Public The ownedViews of a Usage are all its ownedUsages that are ViewUsages. OCL2.0: nestedView = nestedUsage->selectByKind(ViewUsage) Usage
deriveUsageNestedViewpoint Public The ownedViewpoints of a Usage are all its ownedUsages that are ViewpointUsages. OCL2.0: nestedViewpoint = nestedUsage->selectByKind(ViewpointUsage) Usage
deriveUsageUsage Public The usages of a Usage are all its features that are Usages. OCL2.0: usage = feature->selectByKind(Usage) Usage
deriveUsageVariant Public The variants of a Usage are the ownedVariantUsages of its variantMemberships. OCL2.0: variant = variantMembership.ownedVariantUsage Usage
deriveUsageVariantMembership Public The variantMemberships of a Usage are those ownedMemberships that are VariantMemberships. OCL2.0: variantMembership = ownedMembership->selectByKind(VariantMembership) Usage
validateAcceptActionUsageParameters Public An AcceptUsageAction must have at least two input parameters, corresponding to its payload and receiver, respectively (even if they have no FeatureValue). (Note that the payloadParameter is an input as well as an output.) OCL2.0: inputParameters()->size() >= 2 AcceptActionUsage
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateFeatureChainingFeatureConformance Public Each chainingFeature (other than the first) must be featured within the previous chainingFeature. OCL2.0: Sequence{2..chainingFeature->size()}->forAll(i | chainingFeature->at(i).isFeaturedWithin(chainingFeature->at(i-1))) Feature
validateFeatureChainingFeatureNotOne Public A Feature must have either no chainingFeatures or more than one. OCL2.0: chainingFeature->size() <> 1 Feature
validateFeatureChainingFeaturesNotSelf Public A Feature cannot be one of its own chainingFeatures. English: chainingFeature->excludes(self) Feature
validateFeatureConstantIsVariable Public A Feature with isConstant = true must have isVariable = true. OCL2.0: isConstant implies isVariable Feature
validateFeatureCrossFeatureSpecialization Public If this Feature has a crossFeature, then, for any Feature that is redefined by this Feature, the crossFeature must specialize the crossFeature of the redefined end Feature, if this exists. OCL2.0: crossFeature <> null implies ownedRedefinition.redefinedFeature.crossFeature-> forAll(f | f <> null implies crossFeature.specializes(f)) Feature
validateFeatureCrossFeatureType Public The crossFeature of a Feature must have the same types as the Feature. OCL2.0: crossFeature <> null implies crossFeature.type->asSet() = type->asSet() Feature
validateFeatureEndIsConstant Public A Feature with isEnd = true and isVariable = true must have isConstant = true. OCL2.0: isEnd and isVariable implies isConstant Feature
validateFeatureEndMultiplicity Public If a Feature has isEnd = true, then it must have multiplicity 1..1. OCL2.0: isEnd implies multiplicities().allSuperTypes()->flatten()-> selectByKind(MultiplicityRange)->exists(hasBounds(1,1)) Feature
validateFeatureEndNoDirection Public A Feature with isEnd = true must have no direction. OCL2.0: isEnd implied direction = null Feature
validateFeatureEndNotDerivedAbstractCompositeOrPortion Public A Feature with isEnd = true must have all of isDerived = false, isAbstract = false, isComposite = false, and isPortion = false. OCL2.0: isEnd implies not (isDerived or isAbstract or isComposite or isPortion) Feature
validateFeatureIsVariable Public A Feature with isVariable = true must have an owningType that directly or indirectly specializes the Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: isVariable implies owningType <> null and owningType.specializes('Occurrences::Occurrence') Feature
validateFeatureMultiplicityDomain Public If a Feature has a multiplicity, then the featuringTypes of the multiplicity must be the same as those of the Feature itself. OCL2.0: multiplicity <> null implies multiplicity.featuringType = featuringType Feature
validateFeatureOwnedCrossSubsetting Public A Feature must have at most one ownedSubsetting that is a CrossSubsetting. OCL2.0: ownedSubsetting->selectByKind(CrossSubsetting)->size() <= 1 Feature
validateFeatureOwnedReferenceSubsetting Public A Feature must have at most one ownedSubsetting that is an ReferenceSubsetting. OCL2.0: ownedSubsetting->selectByKind(ReferenceSubsetting)->size() <= 1 Feature
validateFeaturePortionNotVariable Public No Documentation Provided OCL2.0: isPortion implies not isVariable Feature
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateOccurrenceUsageIndividualDefinition Public An OccurrenceUsage must have at most one occurrenceDefinition with isIndividual = true. OCL2.0: occurrenceDefinition-> selectByKind(OccurrenceDefinition)-> select(isIndividual).size() <= 1 OccurrenceUsage
validateOccurrenceUsageIndividualUsage Public If an OccurrenceUsage has isIndividual = true, then it must have an individualDefinition. OCL2.0: isIndividual implies individualDefinition <> null OccurrenceUsage
validateOccurrenceUsageIsPortion Public If an OccurrenceUsage has a non-null portionKind, then it must have isPortion = true. OCL2.0: portionKind <> null implies isPortion OccurrenceUsage
validateOccurrenceUsagePortionKind Public If an OccurrenceUsage has a non-null portionKind, then its owningType must be an OccurrenceDefinition or an OccurrenceUsage. OCL2.0: portionKind <> null implies owningType <> null and (owningType.oclIsKindOf(OccurrenceDefinition) or owningType.oclIsKindOf(OccurrenceUsage)) OccurrenceUsage
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type
validateUsageIsReferential Public A Usage that is directed, an end feature or has no featuringTypes must be referential. OCL2.0: direction <> null or isEnd or featuringType->isEmpty() implies isReference Usage
validateUsageVariationIsAbstract Public If a Usage is a variation, then it must be abstract. OCL2.0: isVariation implies isAbstract Usage
validateUsageVariationOwnedFeatureMembership Public If a Usage is a variation, then it must not have any ownedFeatureMemberships. OCL2.0: isVariation implies ownedFeatureMembership->isEmpty() Usage
validateUsageVariationSpecialization Public A variation Usage may not specialize any variation Definition or Usage. OCL2.0: isVariation implies not ownedSpecialization.specific->exists( oclIsKindOf(Definition) and oclAsType(Definition).isVariation or oclIsKindOf(Usage) and oclAsType(Usage).isVariation) Usage

Properties

Name Visibility Type Default Description Owner
actionDefinition Public Behavior [0..*] {derived} {ordered} {redefines: Step.behavior} {many-to-many:ActionUsage.definedAction} null The Behaviors that are the types of this ActionUsage. Nominally, these would be ActionDefinitions, but other kinds of Kernel Behaviors are also allowed, to permit use of Behaviors from the Kernel Model Libraries. ActionUsage
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
behavior Public Behavior [0..*] {derived} {ordered} {redefined by: ActionUsage.actionDefinition} {subsetted: Feature.type} {many-to-many:Step.typedStep} null The Behaviors that type this Step. Step
chainingFeature Public Feature [0..*] {derived} {ordered} {many-to-many:Feature.chainedFeature} null The Feature that are chained together to determine the values of this Feature, derived from the chainingFeatures of the ownedFeatureChainings of this Feature, in the same order. The values of a Feature with chainingFeatures are the same as values of the last Feature in the chain, which can be found by starting with the values of the first Feature (for each instance of the domain of the original Feature), then using each of those as domain instances to find the values of the second Feature in chainingFeatures, and so on, to values of the last Feature. Feature
crossFeature Public Feature [0..1] {derived} null The second chainingFeature of the crossedFeature of the ownedCrossSubsetting of this Feature, if it has one. Semantically, the values of the crossFeature of an end Feature must include all values of the end Feature obtained when navigating from values of the other end Features of the same owningType. Feature
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
definition Public Classifier [0..*] {derived} {ordered} {redefines: Feature.type} {redefined by: OccurrenceUsage.occurrenceDefinition} {many-to-many:Usage.definedUsage} null The Classifiers that are the types of this Usage. Nominally, these are Definitions, but other kinds of Kernel Classifiers are also allowed, to permit use of Classifiers from the Kernel Model Libraries. Usage
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {redefined by: Step.parameter} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
directedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Usage.usageWithDirectedUsage} null The usages of this Usage that are directedFeatures. Usage
direction Public FeatureDirectionKind [0..1] null Indicates how values of this Feature are determined or used (as specified for the FeatureDirectionKind). Feature
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
endOwningType Public Type [0..1] {derived} {subsetted: A_endFeature_typeWithEndFeature.typeWithEndFeature} {subsetted: Feature.owningType} null The Type that is related to this Feature by an EndFeatureMembership in which the Feature is an ownedMemberFeature. Feature
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
featureTarget Public Feature [1..1] {derived} null The last of the chainingFeatures of this Feature, if it has any. Otherwise, this Feature itself. Feature
featuringType Public Type [0..*] {derived} {ordered} {many-to-many:Feature.featureOfType} null Types that feature this Feature, such that any instance in the domain of the Feature must be classified by all of these Types, including at least all the featuringTypes of its typeFeaturings. If the Feature is chained, then the featuringTypes of the first Feature in the chain are also featuringTypes of the chained Feature. Feature
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
individualDefinition Public OccurrenceDefinition [0..1] {derived} {subsetted: OccurrenceUsage.occurrenceDefinition} null The at most one occurrenceDefinition that has isIndividual = true. OccurrenceUsage
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isComposite Public Boolean [1..1] false Whether the Feature is a composite feature of its featuringType. If so, the values of the Feature cannot exist after its featuring instance no longer does and cannot be values of another composite feature that is not on the same featuring instance. Feature
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isConstant Public Boolean [1..1] false If isVariable is true, then whether the value of this Feature nevertheless does not change over all snapshots of its owningType. Feature
isDerived Public Boolean [1..1] false Whether the values of this Feature can always be computed from the values of other Features. Feature
isEnd Public Boolean [1..1] false Whether or not this Feature is an end Feature. An end Feature always has multiplicity 1, mapping each of its domain instances to a single co-domain instance. However, it may have a crossFeature, in which case values of the crossFeature must be the same as those found by navigation across instances of the owningType from values of other end Features to values of this Feature. If the owningType has n end Features, then the multiplicity, ordering, and uniqueness declared for the crossFeature of any one of these end Features constrains the cardinality, ordering, and uniqueness of the collection of values of that Feature reached by navigation when the values of the other n-1 end Features are held fixed. Feature
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isIndividual Public Boolean [1..1] false Whether this OccurrenceUsage represents the usage of the specific individual represented by its individualDefinition. OccurrenceUsage
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isOrdered Public Boolean [1..1] false Whether an order exists for the values of this Feature or not. Feature
isPortion Public Boolean [1..1] false Whether the values of this Feature are contained in the space and time of instances of the domain of the Feature and represent the same thing as those instances. Feature
isReference Public Boolean [1..1] {derived} null Whether this Usage is a referential Usage, that is, it has isComposite = false. Usage
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
isUnique Public Boolean [1..1] true Whether or not values for this Feature must have no duplicates or not. Feature
isVariable Public Boolean [1..1] {redefined by: Usage.mayTimeVary} false Whether the value of this Feature might vary over time. That is, whether the Feature may have a different value for each snapshot of an owningType that is an Occurrence. Feature
isVariation Public Boolean [1..1] null Whether this Usage is for a variation point or not. If true, then all the memberships of the Usage must be VariantMemberships. Usage
mayTimeVary Public Boolean [1..1] {derived} {redefines: Feature.isVariable} null Whether this Usage may be time varying (that is, whether it is featured by the snapshots of its owningType, rather than being featured by the owningType itself). However, if isConstant is also true, then the value of the Usage is nevertheless constant over the entire duration of an instance of its owningType (that is, it has the same value on all snapshots). The property mayTimeVary redefines the KerML property Feature::isVariable, making it derived. The property isConstant is inherited from Feature. Usage
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
nestedAction Public ActionUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ActionUsages that are nestedUsages of this Usage. Usage
nestedAllocation Public AllocationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConnection} null The AllocationUsages that are nestedUsages of this Usage. Usage
nestedAnalysisCase Public AnalysisCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The AnalysisCaseUsages that are nestedUsages of this Usage. Usage
nestedAttribute Public AttributeUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The code>AttributeUsages that are nestedUsages of this Usage. Usage
nestedCalculation Public CalculationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAction} null The CalculationUsage that are nestedUsages of this Usage. Usage
nestedCase Public CaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCalculation} null The CaseUsages that are nestedUsages of this Usage. Usage
nestedConcern Public ConcernUsage [0..*] {derived} {subsetted: Usage.nestedRequirement} null The ConcernUsages that are nestedUsages of this Usage. Usage
nestedConnection Public ConnectorAsUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The ConnectorAsUsages that are nestedUsages of this Usage. Note that this list includes BindingConnectorAsUsages, SuccessionAsUsages, and FlowConnectionUsages because these are ConnectorAsUsages even though they are not ConnectionUsages. Usage
nestedConstraint Public ConstraintUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ConstraintUsages that are nestedUsages of this Usage. Usage
nestedEnumeration Public EnumerationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAttribute} null The code>EnumerationUsages that are nestedUsages of this Usage. Usage
nestedFlow Public FlowUsage [0..*] {derived} {subsetted: Usage.nestedConnection} null The code>FlowUsages that are nestedUsages of this Usage. Usage
nestedInterface Public InterfaceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConnection} null The InterfaceUsages that are nestedUsages of this Usage. Usage
nestedItem Public ItemUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ItemUsages that are nestedUsages of this Usage. Usage
nestedMetadata Public MetadataUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedItem} null The MetadataUsages that are nestedUsages of this of this Usage. Usage
nestedOccurrence Public OccurrenceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The OccurrenceUsages that are nestedUsages of this Usage. Usage
nestedPart Public PartUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedItem} null The PartUsages that are nestedUsages of this Usage. Usage
nestedPort Public PortUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The PortUsages that are nestedUsages of this Usage. Usage
nestedReference Public ReferenceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The ReferenceUsages that are nestedUsages of this Usage. Usage
nestedRendering Public RenderingUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedPart} null The RenderingUsages that are nestedUsages of this Usage. Usage
nestedRequirement Public RequirementUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConstraint} null The RequirementUsages that are nestedUsages of this Usage. Usage
nestedState Public StateUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAction} null The StateUsages that are nestedUsages of this Usage. Usage
nestedTransition Public TransitionUsage [0..*] {derived} {subsetted: Usage.nestedUsage} null The TransitionUsages that are nestedUsages of this Usage. Usage
nestedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.ownedFeature} null The Usages that are ownedFeatures of this Usage. Usage
nestedUseCase Public UseCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The UseCaseUsages that are nestedUsages of this Usage. Usage
nestedVerificationCase Public VerificationCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The VerificationCaseUsages that are nestedUsages of this Usage. Usage
nestedView Public ViewUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedPart} null The ViewUsages that are nestedUsages of this Usage. Usage
nestedViewpoint Public ViewpointUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedRequirement} null The ViewpointUsages that are nestedUsages of this Usage. Usage
occurrenceDefinition Public Class [0..*] {derived} {ordered} {redefines: Usage.definition} {many-to-many:OccurrenceUsage.definedOccurrence} null The Classes that are the types of this OccurrenceUsage. Nominally, these are OccurrenceDefinitions, but other kinds of kernel Classes are also allowed, to permit use of Classes from the Kernel Model Libraries. OccurrenceUsage
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedCrossSubsetting Public CrossSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a CrossSubsetting}, for which the Feature is the crossingFeature. Feature
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureChaining Public FeatureChaining [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Feature that are FeatureChainings, for which the Feature will be the featureChained. Feature
ownedFeatureInverting Public FeatureInverting [0..*] {composite} {derived} {subsetted: A_invertingFeatureInverting_featureInverted.invertingFeatureInverting} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are FeatureInvertings and for which the Feature is the featureInverted. Feature
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedRedefinition Public Redefinition [0..*] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The ownedSubsettings of this Feature that are Redefinitions, for which the Feature is the redefiningFeature. Feature
ownedReferenceSubsetting Public ReferenceSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a ReferenceSubsetting, for which the Feature is the referencingFeature. Feature
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedSubsetting Public Subsetting [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} {subsetted: A_subsettingFeature_subsetting.subsetting} null The ownedSpecializations of this Feature that are Subsettings, for which the Feature is the subsettingFeature. Feature
ownedTypeFeaturing Public TypeFeaturing [0..*] {composite} {derived} {ordered} {subsetted: A_featureOfType_typeFeaturing.typeFeaturing} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are TypeFeaturings and for which the Feature is the featureOfType. Feature
ownedTyping Public FeatureTyping [0..*] {composite} {derived} {ordered} {subsetted: Type.ownedSpecialization} {subsetted: A_typing_typedFeature.typing} null The ownedSpecializations of this Feature that are FeatureTypings, for which the Feature is the typedFeature. Feature
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningDefinition Public Definition [0..1] {derived} {subsetted: Feature.owningType} null The Definition that owns this Usage (if any). Usage
owningFeatureMembership Public FeatureMembership [0..1] {derived} {subsetted: Element.owningMembership} null The FeatureMembership that owns this Feature as an ownedMemberFeature, determining its owningType. Feature
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
owningType Public Type [0..1] {derived} {subsetted: A_typeWithFeature_feature.typeWithFeature} {subsetted: Element.owningNamespace} {subsetted: Feature.featuringType} null The Type that is the owningType of the owningFeatureMembership of this Feature. Feature
owningUsage Public Usage [0..1] {derived} {subsetted: Feature.owningType} null The Usage in which this Usage is nested (if any). Usage
parameter Public Feature [0..*] {derived} {ordered} {redefines: Type.directedFeature} {many-to-many:Step.parameteredStep} null The parameters of this Step, which are defined as its directedFeatures, whose values are passed into and/or out of a performance of the Step. Step
payloadArgument Public Expression [0..1] {derived} null An Expression whose result is bound to the payload parameter of this AcceptActionUsage. If provided, the AcceptActionUsage will only accept a Transfer with exactly this payload. AcceptActionUsage
payloadParameter Public ReferenceUsage [1..1] {derived} {subsetted: Step.parameter} null The nestedReference of this AcceptActionUsage that redefines the payload output parameter of the base AcceptActionUsage AcceptAction from the Systems Model Library. AcceptActionUsage
portionKind Public PortionKind [0..1] null The kind of temporal portion (time slice or snapshot) is represented by this OccurrenceUsage. If portionKind is not null, then the owningType of the OccurrenceUsage must be non-null, and the OccurrenceUsage represents portions of the featuring instance of the owningType. OccurrenceUsage
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
receiverArgument Public Expression [0..1] {derived} null An Expression whose result is bound to the receiver input parameter of this AcceptActionUsage. AcceptActionUsage
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
type Public Type [0..*] {derived} {ordered} {redefined by: Usage.definition} {many-to-many:Feature.typedFeature} null Types that restrict the values of this Feature, such that the values must be instances of all the types. The types of a Feature are derived from its typings and the types of its subsettings. If the Feature is chained, then the types of the last Feature in the chain are also types of the chained Feature. Feature
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type
usage Public Usage [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Usage.featuringUsage} null The Usages that are features of this Usage (not necessarily owned). Usage
variant Public Usage [0..*] {derived} {subsetted: Namespace.ownedMember} null The Usages which represent the variants of this Usage as a variation point Usage, if isVariation = true. If isVariation = false, then there must be no variants. Usage
variantMembership Public VariantMembership [0..*] {composite} {derived} {subsetted: Namespace.ownedMembership} null The ownedMemberships of this Usage that are VariantMemberships. If isVariation = true, then this must be all memberships of the Usage. If isVariation = false, then variantMembershipmust be empty. Usage

ActionDefinition [Class]

Features

Name Description
Fully Qualified Name SysML::Systems::Actions::ActionDefinition
Visibility Public
Definition An ActionDefinition is a Definition that is also a Behavior that defines an Action performed by a system or part of a system.
Is Abstract FALSE
Generalizations Behavior OccurrenceDefinition
Specializations CalculationDefinition FlowDefinition StateDefinition
Containers

Rules

Name Visibilty Description Specification Owner
checkActionDefinitionSpecialization Public An ActionDefinition must directly or indirectly specialize the ActionDefinition Actions::Action from the Systems Model Library. OCL2.0: specializesFromLibrary('Actions::Action') ActionDefinition
checkBehaviorSpecialization Public A Behavior must directly or indirectly specialize the base Behavior Performances::Performance from the Kernel Semantic Library. English: specializesFromLibrary('Performances::Performance') Behavior
checkClassSpecialization Public A Class must directly or indirectly specialize the base Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Occurrences::Occurrence') Class
checkOccurrenceDefinitionIndividualSpecialization Public An OccurrenceDefinition with isIndividual = true must directly or indirectly specialize Occurrences::Life from the Kernel Semantic Library. OCL2.0: isIndividual implies specializesFromLibrary('Occurrences::Life') OccurrenceDefinition
checkOccurrenceDefinitionMultiplicitySpecialization Public An OccurrenceDefinition with isIndividual = true must have a multiplicity that specializes Base::zeroOrOne from the Kernel Semantic Library. OCL2.0: isIndividual implies multiplicity <> null and multiplicity.specializesFromLibrary('Base::zeroOrOne') OccurrenceDefinition
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
deriveActionDefinitionAction Public The actions of a ActionDefinition are those of its usages that are ActionUsages. OCL2.0: action = usage->selectByKind(ActionUsage) ActionDefinition
deriveBehaviorStep Public The steps of a Behavior are its features that are Steps. OCL2.0: step = feature->selectByKind(Step) Behavior
deriveClassifierOwnedSubclassification Public The ownedSubclassifications of a Classifier are its ownedSpecializations that are Subclassifications. OCL2.0: ownedSubclassification = ownedSpecialization->selectByKind(Subclassification) Classifier
deriveDefinitionDirectedUsage Public The directedUsages of a Definition are all its directedFeatures that are Usages. OCL2.0: directedUsage = directedFeature->selectByKind(Usage) Definition
deriveDefinitionOwnedAction Public The ownedActions of a Definition are all its ownedUsages that are ActionUsages. OCL2.0: ownedAction = ownedUsage->selectByKind(ActionUsage) Definition
deriveDefinitionOwnedAllocation Public The ownedAllocations of a Definition are all its ownedUsages that are AllocationUsages. OCL2.0: ownedAllocation = ownedUsage->selectByKind(AllocationUsage) Definition
deriveDefinitionOwnedAnalysisCase Public The ownedAnalysisCases of a Definition are all its ownedUsages that are AnalysisCaseUsages. OCL2.0: ownedAnalysisCase = ownedUsage->selectByKind(AnalysisCaseUsage) Definition
deriveDefinitionOwnedAttribute Public The ownedAttributes of a Definition are all its ownedUsages that are AttributeUsages. OCL2.0: ownedAttribute = ownedUsage->selectByKind(AttributeUsage) Definition
deriveDefinitionOwnedCalculation Public The ownedCalculations of a Definition are all its ownedUsages that are CalculationUsages. OCL2.0: ownedCalculation = ownedUsage->selectByKind(CalculationUsage) Definition
deriveDefinitionOwnedCase Public The ownedCases of a Definition are all its ownedUsages that are CaseUsages. OCL2.0: ownedCase = ownedUsage->selectByKind(CaseUsage) Definition
deriveDefinitionOwnedConcern Public The ownedConcerns of a Definition are all its ownedUsages that are ConcernUsages. OCL2.0: ownedConcern = ownedUsage->selectByKind(ConcernUsage) Definition
deriveDefinitionOwnedConnection Public The ownedConnections of a Definition are all its ownedUsages that are ConnectorAsUsages. OCL2.0: ownedConnection = ownedUsage->selectByKind(ConnectorAsUsage) Definition
deriveDefinitionOwnedConstraint Public The ownedConstraints of a Definition are all its ownedUsages that are ConstraintUsages. OCL2.0: ownedConstraint = ownedUsage->selectByKind(ConstraintUsage) Definition
deriveDefinitionOwnedEnumeration Public The ownedEnumerations of a Definition are all its ownedUsages that are EnumerationUsages. OCL2.0: ownedEnumeration = ownedUsage->selectByKind(EnumerationUsage) Definition
deriveDefinitionOwnedFlow Public The ownedFlows of a Definition are all its ownedUsages that are FlowUsages. OCL2.0: ownedFlow = ownedUsage->selectByKind(FlowConnectionUsage) Definition
deriveDefinitionOwnedInterface Public The ownedInterfaces of a Definition are all its ownedUsages that are InterfaceUsages. OCL2.0: ownedInterface = ownedUsage->selectByKind(ReferenceUsage) Definition
deriveDefinitionOwnedItem Public The ownedItems of a Definition are all its ownedUsages that are ItemUsages. OCL2.0: ownedItem = ownedUsage->selectByKind(ItemUsage) Definition
deriveDefinitionOwnedMetadata Public The ownedMetadata of a Definition are all its ownedUsages that are MetadataUsages. OCL2.0: ownedMetadata = ownedUsage->selectByKind(MetadataUsage) Definition
deriveDefinitionOwnedOccurrence Public The ownedOccurrences of a Definition are all its ownedUsages that are OccurrenceUsages. OCL2.0: ownedOccurrence = ownedUsage->selectByKind(OccurrenceUsage) Definition
deriveDefinitionOwnedPart Public The ownedParts of a Definition are all its ownedUsages that are PartUsages. OCL2.0: ownedPart = ownedUsage->selectByKind(PartUsage) Definition
deriveDefinitionOwnedPort Public The ownedPorts of a Definition are all its ownedUsages that are PortUsages. OCL2.0: ownedPort = ownedUsage->selectByKind(PortUsage) Definition
deriveDefinitionOwnedReference Public The ownedReferences of a Definition are all its ownedUsages that are ReferenceUsages. OCL2.0: ownedReference = ownedUsage->selectByKind(ReferenceUsage) Definition
deriveDefinitionOwnedRendering Public The ownedRenderings of a Definition are all its ownedUsages that are RenderingUsages. OCL2.0: ownedRendering = ownedUsage->selectByKind(RenderingUsage) Definition
deriveDefinitionOwnedRequirement Public The ownedRequirements of a Definition are all its ownedUsages that are RequirementUsages. OCL2.0: ownedRequirement = ownedUsage->selectByKind(RequirementUsage) Definition
deriveDefinitionOwnedState Public The ownedStates of a Definition are all its ownedUsages that are StateUsages. OCL2.0: ownedState = ownedUsage->selectByKind(StateUsage) Definition
deriveDefinitionOwnedTransition Public The ownedTransitions of a Definition are all its ownedUsages that are TransitionUsages. OCL2.0: ownedTransition = ownedUsage->selectByKind(TransitionUsage) Definition
deriveDefinitionOwnedUsage Public The ownedUsages of a Definition are all its ownedFeatures that are Usages. OCL2.0: ownedUsage = ownedFeature->selectByKind(Usage) Definition
deriveDefinitionOwnedUseCase Public The ownedUseCases of a Definition are all its ownedUsages that are UseCaseUsages. OCL2.0: ownedUseCase = ownedUsage->selectByKind(UseCaseUsage) Definition
deriveDefinitionOwnedVerificationCase Public The ownedValidationCases of a Definition are all its ownedUsages that are ValidationCaseUsages. OCL2.0: ownedVerificationCase = ownedUsage->selectByKind(VerificationCaseUsage) Definition
deriveDefinitionOwnedView Public The ownedViews of a Definition are all its ownedUsages that are ViewUsages. OCL2.0: ownedView = ownedUsage->selectByKind(ViewUsage) Definition
deriveDefinitionOwnedViewpoint Public The ownedViewpoints of a Definition are all its ownedUsages that are ViewpointUsages. OCL2.0: ownedViewpoint = ownedUsage->selectByKind(ViewpointUsage) Definition
deriveDefinitionUsage Public The usages of a Definition are all its features that are Usages. OCL2.0: usage = feature->selectByKind(Usage) Definition
deriveDefinitionVariant Public The variants of a Definition are the ownedVariantUsages of its variantMemberships. OCL2.0: variant = variantMembership.ownedVariantUsage Definition
deriveDefinitionVariantMembership Public The variantMemberships of a Definition are those ownedMemberships that are VariantMemberships. OCL2.0: variantMembership = ownedMembership->selectByKind(VariantMembership) Definition
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
validateBehaviorSpecialization Public A Behavior must not specialize a Structure. OCL2.0: ownedSpecialization.general->forAll(not oclIsKindOf(Structure)) Behavior
validateClassifierMultiplicityDomain Public If a Classifier has a multiplicity, then the multiplicity must have no featuringTypes (meaning that its domain is implicitly Base::Anything). OCL2.0: multiplicity <> null implies multiplicity.featuringType->isEmpty() Classifier
validateClassSpecialization Public A Class must not specialize a DataType and it can only specialize an Association if it is also itself a kind of Association (such as an AssociationStructure or Interaction). OCL2.0: ownedSpecialization.general-> forAll(not oclIsKindOf(DataType)) and not oclIsKindOf(Association) implies ownedSpecialization.general-> forAll(not oclIsKindOf(Association)) Class
validateDefinitionVariationIsAbstract Public If a Definition is a variation, then it must be abstract. OCL2.0: isVariation implies isAbstract Definition
validateDefinitionVariationOwnedFeatureMembership Public If a Definition is a variation, then all it must not have any ownedFeatureMemberships. OCL2.0: isVariation implies ownedFeatureMembership->isEmpty() Definition
validateDefinitionVariationSpecialization Public A variation Definition may not specialize any other variation Definition. OCL2.0: isVariation implies not ownedSpecialization.specific->exists( oclIsKindOf(Definition) and oclAsType(Definition).isVariation) Definition
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type

Properties

Name Visibility Type Default Description Owner
action Public ActionUsage [0..*] {derived} {ordered} {subsetted: Behavior.step} {many-to-many:ActionDefinition.featuringActionDefinition} null The ActionUsages that are steps in this ActionDefinition, which define the actions that specify the behavior of the ActionDefinition. ActionDefinition
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {redefined by: Behavior.parameter} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
directedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Definition.definitionWithDirectedUsage} null The usages of this Definition that are directedFeatures. Definition
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isIndividual Public Boolean [1..1] false Whether this OccurrenceDefinition is constrained to represent at most one thing. OccurrenceDefinition
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
isVariation Public Boolean [1..1] null Whether this Definition is for a variation point or not. If true, then all the memberships of the Definition must be VariantMemberships. Definition
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAction Public ActionUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedOccurrence} null The ActionUsages that are ownedUsages of this Definition. Definition
ownedAllocation Public AllocationUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedConnection} null The AllocationUsages that are ownedUsages of this Definition. Definition
ownedAnalysisCase Public AnalysisCaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCase} null The AnalysisCaseUsages that are ownedUsages of this Definition. Definition
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedAttribute Public AttributeUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The AttributeUsages that are ownedUsages of this Definition. Definition
ownedCalculation Public CalculationUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedAction} null The CalculationUsages that are ownedUsages of this Definition. Definition
ownedCase Public CaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCalculation} null The code>CaseUsages that are ownedUsages of this Definition. Definition
ownedConcern Public ConcernUsage [0..*] {derived} {subsetted: Definition.ownedRequirement} null The ConcernUsages that are ownedUsages of this Definition. Definition
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedConnection Public ConnectorAsUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The ConnectorAsUsages that are ownedUsages of this Definition. Note that this list includes BindingConnectorAsUsages, SuccessionAsUsages, and FlowUsages because these are ConnectorAsUsages even though they are not ConnectionUsages. Definition
ownedConstraint Public ConstraintUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedOccurrence} null The ConstraintUsages that are ownedUsages of this Definition. Definition
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedEnumeration Public EnumerationUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedAttribute} null The EnumerationUsages that are ownedUsages of this Definition. Definition
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedFlow Public FlowUsage [0..*] {derived} {subsetted: Definition.ownedConnection} null The FlowUsages that are ownedUsages of this Definition. Definition
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedInterface Public InterfaceUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedConnection} null The InterfaceUsages that are ownedUsages of this Definition. Definition
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedItem Public ItemUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedOccurrence} null The ItemUsages that are ownedUsages of this Definition. Definition
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedMetadata Public MetadataUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedItem} null The MetadataUsages that are ownedUsages of this Definition. Definition
ownedOccurrence Public OccurrenceUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The OccurrenceUsages that are ownedUsages of this Definition. Definition
ownedPart Public PartUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedItem} null The PartUsages that are ownedUsages of this Definition. Definition
ownedPort Public PortUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The PortUsages that are ownedUsages of this Definition. Definition
ownedReference Public ReferenceUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The ReferenceUsages that are ownedUsages of this Definition. Definition
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedRendering Public RenderingUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedPart} null The RenderingUsages that are ownedUsages of this Definition. Definition
ownedRequirement Public RequirementUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedConstraint} null The RequirementUsages that are ownedUsages of this Definition. Definition
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedState Public StateUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedAction} null The StateUsages that are ownedUsages of this Definition. Definition
ownedSubclassification Public Subclassification [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} null The ownedSpecializations of this Classifier that are Subclassifications, for which this Classifier is the subclassifier. Classifier
ownedTransition Public TransitionUsage [0..*] {derived} {subsetted: Definition.ownedUsage} null The TransitionUsages that are ownedUsages of this Definition. Definition
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
ownedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.ownedFeature} null The Usages that are ownedFeatures of this Definition. Definition
ownedUseCase Public UseCaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCase} null The UseCaseUsages that are ownedUsages of this Definition. Definition
ownedVerificationCase Public VerificationCaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCase} null The VerificationCaseUsages that are ownedUsages of this Definition. Definition
ownedView Public ViewUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedPart} null The ViewUsages that are ownedUsages of this Definition. Definition
ownedViewpoint Public ViewpointUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedRequirement} null The ViewpointUsages that are ownedUsages of this Definition. Definition
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
parameter Public Feature [0..*] {derived} {ordered} {redefines: Type.directedFeature} {many-to-many:Behavior.parameteredBehavior} null The parameters of this Behavior, which are defined as its directedFeatures, whose values are passed into and/or out of a performance of the Behavior. Behavior
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
step Public Step [0..*] {derived} {subsetted: Type.feature} {many-to-many:Behavior.featuringBehavior} null The Steps that make up this Behavior. Behavior
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type
usage Public Usage [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Definition.featuringDefinition} null The Usages that are features of this Definition (not necessarily owned). Definition
variant Public Usage [0..*] {derived} {subsetted: Namespace.ownedMember} null The Usages which represent the variants of this Definition as a variation point Definition, if isVariation = true. If isVariation = false, the there must be no variants. Definition
variantMembership Public VariantMembership [0..*] {composite} {derived} {subsetted: Namespace.ownedMembership} null The ownedMemberships of this Definition that are VariantMemberships. If isVariation = true, then this must be all ownedMemberships of the Definition. If isVariation = false, then variantMembershipmust be empty. Definition

ActionUsage [Class]

Features

Name Description
Fully Qualified Name SysML::Systems::Actions::ActionUsage
Visibility Public
Definition An ActionUsage is a Usage that is also a Step, and, so, is typed by a Behavior. Nominally, if the type is an ActionDefinition, an ActionUsage is a Usage of that ActionDefinition within a system. However, other kinds of kernel Behaviors are also allowed, to permit use of Behaviors from the Kernel Model Libraries.
Is Abstract FALSE
Generalizations Step OccurrenceUsage
Specializations AcceptActionUsage AssignmentActionUsage CalculationUsage ControlNode FlowUsage IfActionUsage LoopActionUsage PerformActionUsage SendActionUsage StateUsage TerminateActionUsage TransitionUsage
Containers StateSubactionMembership

Rules

Name Visibilty Description Specification Owner
checkActionUsageOwnedActionSpecialization Public A composite ActionUsage whose owningType is PartDefinition or PartUsage must directly or indirectly specialize the ActionUsage Parts::Part::ownedActions from the Systems Model Library. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(PartDefinition) or owningType.oclIsKindOf(PartUsage)) implies specializesFromLibrary('Parts::Part::ownedActions') ActionUsage
checkActionUsageSpecialization Public An ActionUsage must directly or indirectly specialize the ActionUsage Actions::actions from the Systems Model Library. OCL2.0: specializesFromLibrary('Actions::actions') ActionUsage
checkActionUsageStateActionRedefinition Public An ActionUsage that is the entry, do, or exit Action of a StateDefinition or StateUsage must redefine the entryAction, doAction, or exitAction feature, respectively, of the StateDefinition States::StateAction from the Systems Model Library. OCL2.0: owningFeatureMembership <> null and owningFeatureMembership.oclIsKindOf(StateSubactionMembership) implies let kind : StateSubactionKind = owningFeatureMembership.oclAsType(StateSubactionMembership).kind in if kind = StateSubactionKind::entry then redefinesFromLibrary('States::StateAction::entryAction') else if kind = StateSubactionKind::do then redefinesFromLibrary('States::StateAction::doAction') else redefinesFromLibrary('States::StateAction::exitAction') endif endif ActionUsage
checkActionUsageSubactionSpecialization Public A composite ActionUsage that is a subaction usage must directly or indirectly specialize the ActionUsage Actions::Action::subactions from the Systems Model Library. OCL2.0: isSubactionUsage() implies specializesFromLibrary('Actions::Action::subactions') ActionUsage
checkFeatureCrossingSpecialization Public If this Feature has isEnd = true and ownedCrossFeature returns a non-null value, then the crossFeature of the Feature must be the Feature returned from ownedCrossFeature (which implies that this Feature has an appropriate ownedCrossSubsetting to realize this). OCL2.0: ownedCrossFeature() <> null implies crossFeature = ownedCrossFeature() Feature
checkFeatureDataValueSpecialization Public If a Feature has an ownedTyping relationship to a DataType, then it must directly or indirectly specialize Base::dataValues from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(DataType)) implies specializesFromLibrary('Base::dataValues') Feature
checkFeatureEndRedefinition Public If a Feature has isEnd = true and an owningType that is not empty, then, for each direct supertype of its owningType, it must redefine the endFeature at the same position, if any. OCL2.0: isEnd and owningType <> null implies let i : Integer = owningType.ownedEndFeature->indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | supertype.endFeature->size() >= i implies redefines(supertype.endFeature->at(i)) Feature
checkFeatureEndSpecialization Public If a Feature has isEnd = true and an owningType that is an Association or a Connector, then it must directly or indirectly specialize Links::Link::participant from the Kernel Semantic Library. OCL2.0: isEnd and owningType <> null and (owningType.oclIsKindOf(Association) or owningType.oclIsKindOf(Connector)) implies specializesFromLibrary('Links::Link::participant') Feature
checkFeatureFeatureMembershipTypeFeaturing Public If a Feature is owned via a FeatureMembership, then it must have a featuringType for which the operation isFeaturingType returns true. OCL2.0: owningFeatureMembership <> null implies featuringTypes->exists(t | isFeaturingType(t)) Feature
checkFeatureFlowFeatureRedefinition Public If a Feature is the first ownedFeature of a first or second FlowEnd, then it must directly or indirectly specialize either Transfers::Transfer::source::sourceOutput or Transfers::Transfer::target::targetInput, respectively, from the Kernel Semantic Library. OCL2.0: owningType <> null and owningType.oclIsKindOf(FlowEnd) and owningType.ownedFeature->at(1) = self implies let flowType : Type = owningType.owningType in flowType <> null implies let i : Integer = flowType.ownedFeature.indexOf(owningType) in (i = 1 implies redefinesFromLibrary('Transfers::Transfer::source::sourceOutput')) and (i = 2 implies redefinesFromLibrary('Transfers::Transfer::source::targetInput')) Feature
checkFeatureObjectSpecialization Public If a Feature has an ownedTyping relationship to a Structure, then it must directly or indirectly specialize Objects::objects from the Kernel Semantics Library. OCL2.0: ownedTyping.type->exists(selectByKind(Structure)) implies specializesFromLibary('Objects::objects') Feature
checkFeatureOccurrenceSpecialization Public If a Feature has an ownedTyping relationship to a Class, then it must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(Class)) implies specializesFromLibrary('Occurrences::occurrences') Feature
checkFeatureOwnedCrossFeatureRedefinitionSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then, for any end Feature that is redefined by the owning end Feature of this Feature, this Feature must subset the crossFeature of the redefined end Feature, if this exists. OCL2.0: isOwnedCrossFeature() implies ownedSubsetting.subsettedFeature->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature <> null).crossFeature) Feature
checkFeatureOwnedCrossFeatureSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then it must directly or indirectly specialize the types of its owning end Feature. OCL2.0: isOwnedCrossFeature() implies owner.oclAsType(Feature).type->forAll(t | self.specializes(t)) Feature
checkFeatureOwnedCrossFeatureTypeFeaturing Public If this Feature is the ownedCrossFeature of an end Feature, then it must have featuringTypes consistent with the crossing from other end Features of the owningType of its end Feature. OCL2.0: isOwnedCrossFeature() implies let otherEnds : OrderedSet(Feature) = owner.oclAsType(Feature).owningType.endFeature->excluding(self) in if (otherEnds->size() = 1) then featuringType = otherEnds->first().type else featuringType->size() = 1 and featuringType->first().isCartesianProduct() and featuringType->first().asCartesianProduct() = otherEnds.type and featuringType->first().allSupertypes()->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature() <> null).crossFeature().featuringType) endif Feature
checkFeatureParameterRedefinition Public If a Feature is a parameter of an owningType that is a Behavior or Step, but not
  • A result parameter
  • A parameter of an InvocationExpression, with at least one non-implied ownedRedefinition
then, for each direct supertype of its owningType that is also a Behavior or Step, it must redefine the parameter at the same position, if any.
OCL2.0: owningType <> null and not owningFeatureMembership. oclIsKindOf(ReturnParameterMembership) and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step) and (owningType.oclIsKindOf(InvocationExpression) implies not ownedRedefinition->exists(not isImplied)) implies let i : Integer = owningType.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership))-> indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | let ownedParameters : Sequence(Feature) = supertype.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership)) in ownedParameters->size() >= i implies redefines(ownedParameters->at(i)) Feature
checkFeaturePortionSpecialization Public If a Feature has isPortion = true, an ownedTyping relationship to a Class, and an owningType that is a Class or another Feature typed by a Class, then it must directly or indirectly specialize Occurrences::Occurrence::portions from the Kernel Semantic Library. OCL2.0: isPortion and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::portions') Feature
checkFeatureResultRedefinition Public If a Feature is a result parameter of an owningType that is a Function or Expression, then, for each direct supertype of its owningType that is also a Function or Expression, it must redefine the result parameter. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Function) and self = owningType.oclAsType(Function).result or owningType.oclIsKindOf(Expression) and self = owningType.oclAsType(Expression).result) implies owningType.ownedSpecialization.general-> select(oclIsKindOf(Function) or oclIsKindOf(Expression))-> forAll(supertype | redefines( if superType.oclIsKindOf(Function) then superType.oclAsType(Function).result else superType.oclAsType(Expression).result endif) Feature
checkFeatureSpecialization Public A Feature must directly or indirectly specialize Base::things from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::things') Feature
checkFeatureSubobjectSpecialization Public A composite Feature typed by a Structure, and whose ownedType is a Structure or another Feature typed by a Structure must directly or indirectly specialize Objects::Object::subobjects. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Structure)) and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.type->includes(oclIsKindOf(Structure))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureSuboccurrenceSpecialization Public A composite Feature that has an ownedTyping relationship to a Class, and whose ownedType is a Class or another Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureValuationSpecialization Public If a Feature has a FeatureValue, no ownedSpecializations that are not implied, and is not directed, then it must specialize the result of the value Expression of the FeatureValue. OCL2.0: direction = null and ownedSpecializations->forAll(isImplied) implies ownedMembership-> selectByKind(FeatureValue)-> forAll(fv | specializes(fv.value.result)) Feature
checkOccurrenceUsageSnapshotSpecialization Public If an OccurrenceUsage has portionKind = snapshot, then it must directly or indirectly specialize Occurrences::Occurrence::snapshots from the Kernel Semantic Library. OCL2.0: portionKind = PortionKind::snapshot implies specializesFromLibrary('Occurrences::Occurrence::snapshots') OccurrenceUsage
checkOccurrenceUsageSpecialization Public An OccurrenceUsage must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Occurrences::occurrences') OccurrenceUsage
checkOccurrenceUsageSuboccurrenceSpecialization Public A composite OccurrenceUsage, whose ownedType is a Class, another OccurrenceUsage, or any kind of Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(OccurrenceUsage) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKind(Class))) implies specializesFromLibrary('Occurrences::Occurrence::suboccurrences') OccurrenceUsage
checkOccurrenceUsageTimeSliceSpecialization Public If an OccurrenceUsage has portionKind = timeslice, then it must directly or indirectly specialize Occurrences::Occurrence::timeSlices from the Kernel Semantic Library. OCL2.0: portionKind = PortionKind::timeslice implies specializesFromLibrary('Occurrences::Occurrence::timeSlices') OccurrenceUsage
checkStepEnclosedPerformanceSpecialization Public AStep whose owningType is a Behavior or another Step must directly or indirectly specialize the Step Performances::Performance::enclosedPerformance. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step)) implies specializesFromLibrary('Performances::Performance::enclosedPerformance') Step
checkStepOwnedPerformanceSpecialization Public A composite Step whose owningType is a Structure or a Feature typed by a Structure must directly or indirectly specialize the Step Objects::Object::ownedPerformance. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Structure)) implies specializesFromLibrary('Objects::Object::ownedPerformance') Step
checkStepSpecialization Public A Step must directly or indirectly specialize the base Step Performances::performances from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::performances') Step
checkStepSubperformanceSpecialization Public AStep whose owningType is a Behavior or another Step, and which is composite, must directly or indirectly specialize the Step Performances::Performance::subperformance. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step)) and self.isComposite implies specializesFromLibrary('Performances::Performance::subperformance') Step
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
checkUsageVariationDefinitionSpecialization Public If a Usage has an owningVariationDefinition, then it must directly or indirectly specialize that Definition. OCL2.0: owningVariationDefinition <> null implies specializes(owningVariationDefinition) Usage
checkUsageVariationUsageSpecialization Public If a Usage has an owningVariationUsage, then it must directly or indirectly specialize that Usage. OCL2.0: owningVariationUsage <> null implies specializes(owningVariationUsage) Usage
checkUsageVariationUsageTypeFeaturing Public If a Usage has an owningVariationUsage, then it must have the same featuringTypes as that Usage. OCL2.0: owningVariationUsage <> null implies featuringType->asSet() = owningVariationUsage.featuringType->asSet() Usage
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveFeatureChainingFeature Public The chainingFeatures of a Feature are the chainingFeatures of its ownedFeatureChainings. OCL2.0: chainingFeature = ownedFeatureChaining.chainingFeature Feature
deriveFeatureCrossFeature Public The crossFeature of a Feature is the second chainingFeature of the crossedFeature of the ownedCrossSubsetting of the Feature, if any. OCL2.0: crossFeature = if ownedCrossSubsetting = null then null else let chainingFeatures: Sequence(Feature) = ownedCrossSubsetting.crossedFeature.chainingFeature in if chainingFeatures->size() < 2 then null else chainingFeatures->at(2) endif Feature
deriveFeatureFeatureTarget Public If a Feature has no chainingFeatures, then its featureTarget is the Feature itself, otherwise the featureTarget is the last of the chainingFeatures. OCL2.0: featureTarget = if chainingFeature->isEmpty() then self else chainingFeature->last() endif Feature
deriveFeatureFeaturingType Public The featuringTypes of a Feature include the featuringTypes of all the typeFeaturings of the Feature. If the Feature has chainingFeatures, then its featuringTypes also include the featuringTypes of the first chainingFeature. OCL2.0: featuringType = let featuringTypes : OrderedSet(Type) = featuring.type->asOrderedSet() in if chainingFeature->isEmpty() then featuringTypes else featuringTypes-> union(chainingFeature->first().featuringType)-> asOrderedSet() endif Feature
deriveFeatureOwnedCrossSubsetting Public The ownedCrossSubsetting of a Feature is the ownedSubsetting that is a CrossSubsetting, if any. OCL2.0: ownedCrossSubsetting = let crossSubsettings: Sequence(CrossSubsetting) = ownedSubsetting->selectByKind(CrossSubsetting) in if crossSubsettings->isEmpty() then null else crossSubsettings->first() endif Feature
deriveFeatureOwnedFeatureChaining Public The ownedFeatureChainings of a Feature are the ownedRelationships that are FeatureChainings. OCL2.0: ownedFeatureChaining = ownedRelationship->selectByKind(FeatureChaining) Feature
deriveFeatureOwnedFeatureInverting Public The ownedFeatureInvertings of a Feature are its ownedRelationships that are FeatureInvertings. OCL2.0: ownedFeatureInverting = ownedRelationship->selectByKind(FeatureInverting)-> select(fi | fi.featureInverted = self) Feature
deriveFeatureOwnedRedefinition Public The ownedRedefinitions of a Feature are its ownedSubsettings that are Redefinitions. OCL2.0: ownedRedefinition = ownedSubsetting->selectByKind(Redefinition) Feature
deriveFeatureOwnedReferenceSubsetting Public The ownedReferenceSubsetting of a Feature is the first ownedSubsetting that is a ReferenceSubsetting (if any). OCL2.0: ownedReferenceSubsetting = let referenceSubsettings : OrderedSet(ReferenceSubsetting) = ownedSubsetting->selectByKind(ReferenceSubsetting) in if referenceSubsettings->isEmpty() then null else referenceSubsettings->first() endif Feature
deriveFeatureOwnedSubsetting Public The ownedSubsettings of a Feature are its ownedSpecializations that are Subsettings. OCL2.0: ownedSubsetting = ownedSpecialization->selectByKind(Subsetting) Feature
deriveFeatureOwnedTypeFeaturing Public The ownedTypeFeaturings of a Feature are its ownedRelationships that are TypeFeaturings and which have the Feature as their featureOfType. OCL2.0: ownedTypeFeaturing = ownedRelationship->selectByKind(TypeFeaturing)-> select(tf | tf.featureOfType = self) Feature
deriveFeatureOwnedTyping Public The ownedTypings of a Feature are its ownedSpecializations that are FeatureTypings. OCL2.0: ownedTyping = ownedGeneralization->selectByKind(FeatureTyping) Feature
deriveFeatureType Public The types of a Feature are the union of the types of its typings and the types of the Features it subsets, with all redundant supertypes removed. If the Feature has chainingFeatures, then the union also includes the types of the last chainingFeature. OCL2.0: type = let types : OrderedSet(Types) = OrderedSet{self}-> -- Note: The closure operation automatically handles circular relationships. closure(typingFeatures()).typing.type->asOrderedSet() in types->reject(t1 | types->exist(t2 | t2 <> t1 and t2.specializes(t1))) Feature
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOccurrenceUsageIndividualDefinition Public The individualDefinition of an OccurrenceUsage is the occurrenceDefinition that is an OccurrenceDefinition with isIndividual = true, if any. OCL2.0: individualDefinition = let individualDefinitions : OrderedSet(OccurrenceDefinition) = occurrenceDefinition-> selectByKind(OccurrenceDefinition)-> select(isIndividual) in if individualDefinitions->isEmpty() then null else individualDefinitions->first() endif OccurrenceUsage
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveStepBehavior Public The behaviors of a Step are all its types that are Behaviors. OCL2.0: behavior = type->selectByKind(Behavior) Step
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
deriveUsageDirectedUsage Public The directedUsages of a Usage are all its directedFeatures that are Usages. OCL2.0: directedUsage = directedFeature->selectByKind(Usage) Usage
deriveUsageIsReference Public A Usage is referential if it is not composite. OCL2.0: isReference = not isComposite Usage
deriveUsageMayTimeVary Public A Usage mayTimeVary if and only if all of the following are true
  • It has an owningType that specializes Occurrences::Occurrence (from the Kernel Semantic Library).
  • It is not a portion.
  • It does not specialize Links::SelfLink or Occurrences::HappensLink (from the Kernel Semantic Library).
  • If isComposite = true, it does not specialize Actions::Action (from the Systems Model Library).
OCL2.0: mayTimeVary = owningType <> null and owningType.specializesFromLibrary('Occurrences::Occurrence') and not ( isPortion or specializesFromLibrary('Links::SelfLink') or specializesFromLibrary('Occurrences::HappensLink') or isComposite and specializesFromLibrary('Actions::Action') ) Usage
deriveUsageNestedAction Public The ownedActions of a Usage are all its ownedUsages that are ActionUsages. OCL2.0: nestedAction = nestedUsage->selectByKind(ActionUsage) Usage
deriveUsageNestedAllocation Public The ownedAllocations of a Usage are all its ownedUsages that are AllocationUsages. OCL2.0: nestedAllocation = nestedUsage->selectByKind(AllocationUsage) Usage
deriveUsageNestedAnalysisCase Public The ownedAnalysisCases of a Usage are all its ownedUsages that are AnalysisCaseUsages. OCL2.0: nestedAnalysisCase = nestedUsage->selectByKind(AnalysisCaseUsage) Usage
deriveUsageNestedAttribute Public The ownedAttributes of a Usage are all its ownedUsages that are AttributeUsages. OCL2.0: nestedAttribute = nestedUsage->selectByKind(AttributeUsage) Usage
deriveUsageNestedCalculation Public The ownedCalculations of a Usage are all its ownedUsages that are CalculationUsages. OCL2.0: nestedCalculation = nestedUsage->selectByKind(CalculationUsage) Usage
deriveUsageNestedCase Public The ownedCases of a Usage are all its ownedUsages that are CaseUsages. OCL2.0: nestedCase = nestedUsage->selectByKind(CaseUsage) Usage
deriveUsageNestedConcern Public The ownedConcerns of a Usage are all its ownedUsages that are ConcernUsages. OCL2.0: nestedConcern = nestedUsage->selectByKind(ConcernUsage) Usage
deriveUsageNestedConnection Public The ownedConnections of a Usage are all its ownedUsages that are ConnectorAsUsages. OCL2.0: nestedConnection = nestedUsage->selectByKind(ConnectorAsUsage) Usage
deriveUsageNestedConstraint Public The ownedConstraints of a Usage are all its ownedUsages that are ConstraintUsages. OCL2.0: nestedConstraint = nestedUsage->selectByKind(ConstraintUsage) Usage
deriveUsageNestedEnumeration Public The ownedEnumerations of a Usage are all its ownedUsages that are EnumerationUsages. OCL2.0: ownedNested = nestedUsage->selectByKind(EnumerationUsage) Usage
deriveUsageNestedFlow Public The ownedFlows of a Usage are all its ownedUsages that are FlowConnectionUsages. OCL2.0: nestedFlow = nestedUsage->selectByKind(FlowConnectionUsage) Usage
deriveUsageNestedInterface Public The ownedInterfaces of a Usage are all its ownedUsages that are InterfaceUsages. OCL2.0: nestedInterface = nestedUsage->selectByKind(ReferenceUsage) Usage
deriveUsageNestedItem Public The ownedItems of a Usage are all its ownedUsages that are ItemUsages. OCL2.0: nestedItem = nestedUsage->selectByKind(ItemUsage) Usage
deriveUsageNestedMetadata Public The ownedMetadata of a Usage are all its ownedUsages that are MetadataUsages. OCL2.0: nestedMetadata = nestedUsage->selectByKind(MetadataUsage) Usage
deriveUsageNestedOccurrence Public The ownedOccurrences of a Usage are all its ownedUsages that are OccurrenceUsages. OCL2.0: nestedOccurrence = nestedUsage->selectByKind(OccurrenceUsage) Usage
deriveUsageNestedPart Public The ownedParts of a Usage are all its ownedUsages that are PartUsages. OCL2.0: nestedPart = nestedUsage->selectByKind(PartUsage) Usage
deriveUsageNestedPort Public The ownedPorts of a Usage are all its ownedUsages that are PortUsages. OCL2.0: nestedPort = nestedUsage->selectByKind(PortUsage) Usage
deriveUsageNestedReference Public The ownedReferences of a Usage are all its ownedUsages that are ReferenceUsages. OCL2.0: nestedReference = nestedUsage->selectByKind(ReferenceUsage) Usage
deriveUsageNestedRendering Public The ownedRenderings of a Usage are all its ownedUsages that are RenderingUsages. OCL2.0: nestedRendering = nestedUsage->selectByKind(RenderingUsage) Usage
deriveUsageNestedRequirement Public The ownedRequirements of a Usage are all its ownedUsages that are RequirementUsages. OCL2.0: nestedRequirement = nestedUsage->selectByKind(RequirementUsage) Usage
deriveUsageNestedState Public The ownedStates of a Usage are all its ownedUsages that are StateUsages. OCL2.0: nestedState = nestedUsage->selectByKind(StateUsage) Usage
deriveUsageNestedTransition Public The ownedTransitions of a Usage are all its ownedUsages that are TransitionUsages. OCL2.0: nestedTransition = nestedUsage->selectByKind(TransitionUsage) Usage
deriveUsageNestedUsage Public The ownedUsages of a Usage are all its ownedFeatures that are Usages. OCL2.0: nestedUsage = ownedFeature->selectByKind(Usage) Usage
deriveUsageNestedUseCase Public The ownedUseCases of a Usage are all its ownedUsages that are UseCaseUsages. OCL2.0: nestedUseCase = nestedUsage->selectByKind(UseCaseUsage) Usage
deriveUsageNestedVerificationCase Public The ownedValidationCases of a Usage are all its ownedUsages that are ValidationCaseUsages. OCL2.0: nestedVerificationCase = nestedUsage->selectByKind(VerificationCaseUsage) Usage
deriveUsageNestedView Public The ownedViews of a Usage are all its ownedUsages that are ViewUsages. OCL2.0: nestedView = nestedUsage->selectByKind(ViewUsage) Usage
deriveUsageNestedViewpoint Public The ownedViewpoints of a Usage are all its ownedUsages that are ViewpointUsages. OCL2.0: nestedViewpoint = nestedUsage->selectByKind(ViewpointUsage) Usage
deriveUsageUsage Public The usages of a Usage are all its features that are Usages. OCL2.0: usage = feature->selectByKind(Usage) Usage
deriveUsageVariant Public The variants of a Usage are the ownedVariantUsages of its variantMemberships. OCL2.0: variant = variantMembership.ownedVariantUsage Usage
deriveUsageVariantMembership Public The variantMemberships of a Usage are those ownedMemberships that are VariantMemberships. OCL2.0: variantMembership = ownedMembership->selectByKind(VariantMembership) Usage
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateFeatureChainingFeatureConformance Public Each chainingFeature (other than the first) must be featured within the previous chainingFeature. OCL2.0: Sequence{2..chainingFeature->size()}->forAll(i | chainingFeature->at(i).isFeaturedWithin(chainingFeature->at(i-1))) Feature
validateFeatureChainingFeatureNotOne Public A Feature must have either no chainingFeatures or more than one. OCL2.0: chainingFeature->size() <> 1 Feature
validateFeatureChainingFeaturesNotSelf Public A Feature cannot be one of its own chainingFeatures. English: chainingFeature->excludes(self) Feature
validateFeatureConstantIsVariable Public A Feature with isConstant = true must have isVariable = true. OCL2.0: isConstant implies isVariable Feature
validateFeatureCrossFeatureSpecialization Public If this Feature has a crossFeature, then, for any Feature that is redefined by this Feature, the crossFeature must specialize the crossFeature of the redefined end Feature, if this exists. OCL2.0: crossFeature <> null implies ownedRedefinition.redefinedFeature.crossFeature-> forAll(f | f <> null implies crossFeature.specializes(f)) Feature
validateFeatureCrossFeatureType Public The crossFeature of a Feature must have the same types as the Feature. OCL2.0: crossFeature <> null implies crossFeature.type->asSet() = type->asSet() Feature
validateFeatureEndIsConstant Public A Feature with isEnd = true and isVariable = true must have isConstant = true. OCL2.0: isEnd and isVariable implies isConstant Feature
validateFeatureEndMultiplicity Public If a Feature has isEnd = true, then it must have multiplicity 1..1. OCL2.0: isEnd implies multiplicities().allSuperTypes()->flatten()-> selectByKind(MultiplicityRange)->exists(hasBounds(1,1)) Feature
validateFeatureEndNoDirection Public A Feature with isEnd = true must have no direction. OCL2.0: isEnd implied direction = null Feature
validateFeatureEndNotDerivedAbstractCompositeOrPortion Public A Feature with isEnd = true must have all of isDerived = false, isAbstract = false, isComposite = false, and isPortion = false. OCL2.0: isEnd implies not (isDerived or isAbstract or isComposite or isPortion) Feature
validateFeatureIsVariable Public A Feature with isVariable = true must have an owningType that directly or indirectly specializes the Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: isVariable implies owningType <> null and owningType.specializes('Occurrences::Occurrence') Feature
validateFeatureMultiplicityDomain Public If a Feature has a multiplicity, then the featuringTypes of the multiplicity must be the same as those of the Feature itself. OCL2.0: multiplicity <> null implies multiplicity.featuringType = featuringType Feature
validateFeatureOwnedCrossSubsetting Public A Feature must have at most one ownedSubsetting that is a CrossSubsetting. OCL2.0: ownedSubsetting->selectByKind(CrossSubsetting)->size() <= 1 Feature
validateFeatureOwnedReferenceSubsetting Public A Feature must have at most one ownedSubsetting that is an ReferenceSubsetting. OCL2.0: ownedSubsetting->selectByKind(ReferenceSubsetting)->size() <= 1 Feature
validateFeaturePortionNotVariable Public No Documentation Provided OCL2.0: isPortion implies not isVariable Feature
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateOccurrenceUsageIndividualDefinition Public An OccurrenceUsage must have at most one occurrenceDefinition with isIndividual = true. OCL2.0: occurrenceDefinition-> selectByKind(OccurrenceDefinition)-> select(isIndividual).size() <= 1 OccurrenceUsage
validateOccurrenceUsageIndividualUsage Public If an OccurrenceUsage has isIndividual = true, then it must have an individualDefinition. OCL2.0: isIndividual implies individualDefinition <> null OccurrenceUsage
validateOccurrenceUsageIsPortion Public If an OccurrenceUsage has a non-null portionKind, then it must have isPortion = true. OCL2.0: portionKind <> null implies isPortion OccurrenceUsage
validateOccurrenceUsagePortionKind Public If an OccurrenceUsage has a non-null portionKind, then its owningType must be an OccurrenceDefinition or an OccurrenceUsage. OCL2.0: portionKind <> null implies owningType <> null and (owningType.oclIsKindOf(OccurrenceDefinition) or owningType.oclIsKindOf(OccurrenceUsage)) OccurrenceUsage
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type
validateUsageIsReferential Public A Usage that is directed, an end feature or has no featuringTypes must be referential. OCL2.0: direction <> null or isEnd or featuringType->isEmpty() implies isReference Usage
validateUsageVariationIsAbstract Public If a Usage is a variation, then it must be abstract. OCL2.0: isVariation implies isAbstract Usage
validateUsageVariationOwnedFeatureMembership Public If a Usage is a variation, then it must not have any ownedFeatureMemberships. OCL2.0: isVariation implies ownedFeatureMembership->isEmpty() Usage
validateUsageVariationSpecialization Public A variation Usage may not specialize any variation Definition or Usage. OCL2.0: isVariation implies not ownedSpecialization.specific->exists( oclIsKindOf(Definition) and oclAsType(Definition).isVariation or oclIsKindOf(Usage) and oclAsType(Usage).isVariation) Usage

Properties

Name Visibility Type Default Description Owner
actionDefinition Public Behavior [0..*] {derived} {ordered} {redefines: Step.behavior} {many-to-many:ActionUsage.definedAction} null The Behaviors that are the types of this ActionUsage. Nominally, these would be ActionDefinitions, but other kinds of Kernel Behaviors are also allowed, to permit use of Behaviors from the Kernel Model Libraries. ActionUsage
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
behavior Public Behavior [0..*] {derived} {ordered} {redefined by: ActionUsage.actionDefinition} {subsetted: Feature.type} {many-to-many:Step.typedStep} null The Behaviors that type this Step. Step
chainingFeature Public Feature [0..*] {derived} {ordered} {many-to-many:Feature.chainedFeature} null The Feature that are chained together to determine the values of this Feature, derived from the chainingFeatures of the ownedFeatureChainings of this Feature, in the same order. The values of a Feature with chainingFeatures are the same as values of the last Feature in the chain, which can be found by starting with the values of the first Feature (for each instance of the domain of the original Feature), then using each of those as domain instances to find the values of the second Feature in chainingFeatures, and so on, to values of the last Feature. Feature
crossFeature Public Feature [0..1] {derived} null The second chainingFeature of the crossedFeature of the ownedCrossSubsetting of this Feature, if it has one. Semantically, the values of the crossFeature of an end Feature must include all values of the end Feature obtained when navigating from values of the other end Features of the same owningType. Feature
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
definition Public Classifier [0..*] {derived} {ordered} {redefines: Feature.type} {redefined by: OccurrenceUsage.occurrenceDefinition} {many-to-many:Usage.definedUsage} null The Classifiers that are the types of this Usage. Nominally, these are Definitions, but other kinds of Kernel Classifiers are also allowed, to permit use of Classifiers from the Kernel Model Libraries. Usage
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {redefined by: Step.parameter} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
directedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Usage.usageWithDirectedUsage} null The usages of this Usage that are directedFeatures. Usage
direction Public FeatureDirectionKind [0..1] null Indicates how values of this Feature are determined or used (as specified for the FeatureDirectionKind). Feature
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
endOwningType Public Type [0..1] {derived} {subsetted: A_endFeature_typeWithEndFeature.typeWithEndFeature} {subsetted: Feature.owningType} null The Type that is related to this Feature by an EndFeatureMembership in which the Feature is an ownedMemberFeature. Feature
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
featureTarget Public Feature [1..1] {derived} null The last of the chainingFeatures of this Feature, if it has any. Otherwise, this Feature itself. Feature
featuringType Public Type [0..*] {derived} {ordered} {many-to-many:Feature.featureOfType} null Types that feature this Feature, such that any instance in the domain of the Feature must be classified by all of these Types, including at least all the featuringTypes of its typeFeaturings. If the Feature is chained, then the featuringTypes of the first Feature in the chain are also featuringTypes of the chained Feature. Feature
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
individualDefinition Public OccurrenceDefinition [0..1] {derived} {subsetted: OccurrenceUsage.occurrenceDefinition} null The at most one occurrenceDefinition that has isIndividual = true. OccurrenceUsage
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isComposite Public Boolean [1..1] false Whether the Feature is a composite feature of its featuringType. If so, the values of the Feature cannot exist after its featuring instance no longer does and cannot be values of another composite feature that is not on the same featuring instance. Feature
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isConstant Public Boolean [1..1] false If isVariable is true, then whether the value of this Feature nevertheless does not change over all snapshots of its owningType. Feature
isDerived Public Boolean [1..1] false Whether the values of this Feature can always be computed from the values of other Features. Feature
isEnd Public Boolean [1..1] false Whether or not this Feature is an end Feature. An end Feature always has multiplicity 1, mapping each of its domain instances to a single co-domain instance. However, it may have a crossFeature, in which case values of the crossFeature must be the same as those found by navigation across instances of the owningType from values of other end Features to values of this Feature. If the owningType has n end Features, then the multiplicity, ordering, and uniqueness declared for the crossFeature of any one of these end Features constrains the cardinality, ordering, and uniqueness of the collection of values of that Feature reached by navigation when the values of the other n-1 end Features are held fixed. Feature
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isIndividual Public Boolean [1..1] false Whether this OccurrenceUsage represents the usage of the specific individual represented by its individualDefinition. OccurrenceUsage
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isOrdered Public Boolean [1..1] false Whether an order exists for the values of this Feature or not. Feature
isPortion Public Boolean [1..1] false Whether the values of this Feature are contained in the space and time of instances of the domain of the Feature and represent the same thing as those instances. Feature
isReference Public Boolean [1..1] {derived} null Whether this Usage is a referential Usage, that is, it has isComposite = false. Usage
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
isUnique Public Boolean [1..1] true Whether or not values for this Feature must have no duplicates or not. Feature
isVariable Public Boolean [1..1] {redefined by: Usage.mayTimeVary} false Whether the value of this Feature might vary over time. That is, whether the Feature may have a different value for each snapshot of an owningType that is an Occurrence. Feature
isVariation Public Boolean [1..1] null Whether this Usage is for a variation point or not. If true, then all the memberships of the Usage must be VariantMemberships. Usage
mayTimeVary Public Boolean [1..1] {derived} {redefines: Feature.isVariable} null Whether this Usage may be time varying (that is, whether it is featured by the snapshots of its owningType, rather than being featured by the owningType itself). However, if isConstant is also true, then the value of the Usage is nevertheless constant over the entire duration of an instance of its owningType (that is, it has the same value on all snapshots). The property mayTimeVary redefines the KerML property Feature::isVariable, making it derived. The property isConstant is inherited from Feature. Usage
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
nestedAction Public ActionUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ActionUsages that are nestedUsages of this Usage. Usage
nestedAllocation Public AllocationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConnection} null The AllocationUsages that are nestedUsages of this Usage. Usage
nestedAnalysisCase Public AnalysisCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The AnalysisCaseUsages that are nestedUsages of this Usage. Usage
nestedAttribute Public AttributeUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The code>AttributeUsages that are nestedUsages of this Usage. Usage
nestedCalculation Public CalculationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAction} null The CalculationUsage that are nestedUsages of this Usage. Usage
nestedCase Public CaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCalculation} null The CaseUsages that are nestedUsages of this Usage. Usage
nestedConcern Public ConcernUsage [0..*] {derived} {subsetted: Usage.nestedRequirement} null The ConcernUsages that are nestedUsages of this Usage. Usage
nestedConnection Public ConnectorAsUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The ConnectorAsUsages that are nestedUsages of this Usage. Note that this list includes BindingConnectorAsUsages, SuccessionAsUsages, and FlowConnectionUsages because these are ConnectorAsUsages even though they are not ConnectionUsages. Usage
nestedConstraint Public ConstraintUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ConstraintUsages that are nestedUsages of this Usage. Usage
nestedEnumeration Public EnumerationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAttribute} null The code>EnumerationUsages that are nestedUsages of this Usage. Usage
nestedFlow Public FlowUsage [0..*] {derived} {subsetted: Usage.nestedConnection} null The code>FlowUsages that are nestedUsages of this Usage. Usage
nestedInterface Public InterfaceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConnection} null The InterfaceUsages that are nestedUsages of this Usage. Usage
nestedItem Public ItemUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ItemUsages that are nestedUsages of this Usage. Usage
nestedMetadata Public MetadataUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedItem} null The MetadataUsages that are nestedUsages of this of this Usage. Usage
nestedOccurrence Public OccurrenceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The OccurrenceUsages that are nestedUsages of this Usage. Usage
nestedPart Public PartUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedItem} null The PartUsages that are nestedUsages of this Usage. Usage
nestedPort Public PortUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The PortUsages that are nestedUsages of this Usage. Usage
nestedReference Public ReferenceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The ReferenceUsages that are nestedUsages of this Usage. Usage
nestedRendering Public RenderingUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedPart} null The RenderingUsages that are nestedUsages of this Usage. Usage
nestedRequirement Public RequirementUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConstraint} null The RequirementUsages that are nestedUsages of this Usage. Usage
nestedState Public StateUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAction} null The StateUsages that are nestedUsages of this Usage. Usage
nestedTransition Public TransitionUsage [0..*] {derived} {subsetted: Usage.nestedUsage} null The TransitionUsages that are nestedUsages of this Usage. Usage
nestedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.ownedFeature} null The Usages that are ownedFeatures of this Usage. Usage
nestedUseCase Public UseCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The UseCaseUsages that are nestedUsages of this Usage. Usage
nestedVerificationCase Public VerificationCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The VerificationCaseUsages that are nestedUsages of this Usage. Usage
nestedView Public ViewUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedPart} null The ViewUsages that are nestedUsages of this Usage. Usage
nestedViewpoint Public ViewpointUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedRequirement} null The ViewpointUsages that are nestedUsages of this Usage. Usage
occurrenceDefinition Public Class [0..*] {derived} {ordered} {redefines: Usage.definition} {many-to-many:OccurrenceUsage.definedOccurrence} null The Classes that are the types of this OccurrenceUsage. Nominally, these are OccurrenceDefinitions, but other kinds of kernel Classes are also allowed, to permit use of Classes from the Kernel Model Libraries. OccurrenceUsage
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedCrossSubsetting Public CrossSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a CrossSubsetting}, for which the Feature is the crossingFeature. Feature
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureChaining Public FeatureChaining [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Feature that are FeatureChainings, for which the Feature will be the featureChained. Feature
ownedFeatureInverting Public FeatureInverting [0..*] {composite} {derived} {subsetted: A_invertingFeatureInverting_featureInverted.invertingFeatureInverting} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are FeatureInvertings and for which the Feature is the featureInverted. Feature
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedRedefinition Public Redefinition [0..*] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The ownedSubsettings of this Feature that are Redefinitions, for which the Feature is the redefiningFeature. Feature
ownedReferenceSubsetting Public ReferenceSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a ReferenceSubsetting, for which the Feature is the referencingFeature. Feature
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedSubsetting Public Subsetting [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} {subsetted: A_subsettingFeature_subsetting.subsetting} null The ownedSpecializations of this Feature that are Subsettings, for which the Feature is the subsettingFeature. Feature
ownedTypeFeaturing Public TypeFeaturing [0..*] {composite} {derived} {ordered} {subsetted: A_featureOfType_typeFeaturing.typeFeaturing} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are TypeFeaturings and for which the Feature is the featureOfType. Feature
ownedTyping Public FeatureTyping [0..*] {composite} {derived} {ordered} {subsetted: Type.ownedSpecialization} {subsetted: A_typing_typedFeature.typing} null The ownedSpecializations of this Feature that are FeatureTypings, for which the Feature is the typedFeature. Feature
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningDefinition Public Definition [0..1] {derived} {subsetted: Feature.owningType} null The Definition that owns this Usage (if any). Usage
owningFeatureMembership Public FeatureMembership [0..1] {derived} {subsetted: Element.owningMembership} null The FeatureMembership that owns this Feature as an ownedMemberFeature, determining its owningType. Feature
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
owningType Public Type [0..1] {derived} {subsetted: A_typeWithFeature_feature.typeWithFeature} {subsetted: Element.owningNamespace} {subsetted: Feature.featuringType} null The Type that is the owningType of the owningFeatureMembership of this Feature. Feature
owningUsage Public Usage [0..1] {derived} {subsetted: Feature.owningType} null The Usage in which this Usage is nested (if any). Usage
parameter Public Feature [0..*] {derived} {ordered} {redefines: Type.directedFeature} {many-to-many:Step.parameteredStep} null The parameters of this Step, which are defined as its directedFeatures, whose values are passed into and/or out of a performance of the Step. Step
portionKind Public PortionKind [0..1] null The kind of temporal portion (time slice or snapshot) is represented by this OccurrenceUsage. If portionKind is not null, then the owningType of the OccurrenceUsage must be non-null, and the OccurrenceUsage represents portions of the featuring instance of the owningType. OccurrenceUsage
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
type Public Type [0..*] {derived} {ordered} {redefined by: Usage.definition} {many-to-many:Feature.typedFeature} null Types that restrict the values of this Feature, such that the values must be instances of all the types. The types of a Feature are derived from its typings and the types of its subsettings. If the Feature is chained, then the types of the last Feature in the chain are also types of the chained Feature. Feature
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type
usage Public Usage [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Usage.featuringUsage} null The Usages that are features of this Usage (not necessarily owned). Usage
variant Public Usage [0..*] {derived} {subsetted: Namespace.ownedMember} null The Usages which represent the variants of this Usage as a variation point Usage, if isVariation = true. If isVariation = false, then there must be no variants. Usage
variantMembership Public VariantMembership [0..*] {composite} {derived} {subsetted: Namespace.ownedMembership} null The ownedMemberships of this Usage that are VariantMemberships. If isVariation = true, then this must be all memberships of the Usage. If isVariation = false, then variantMembershipmust be empty. Usage

ActorMembership [Class]

Features

Name Description
Fully Qualified Name SysML::Systems::Requirements::ActorMembership
Visibility Public
Definition An ActorMembership is a ParameterMembership that identifies a PartUsage as an actor parameter, which specifies a role played by an external entity in interaction with the owningType of the ActorMembership.
Is Abstract FALSE
Generalizations ParameterMembership
Specializations
Containers

Rules

Name Visibilty Description Specification Owner
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveMembershipMemberElementId Public The memberElementId of a Membership is the elementId of its memberElement. OCL2.0: memberElementId = memberElement.elementId Membership
deriveOwningMembershipOwnedMemberName Public The ownedMemberName of an OwningMembership is the name of its ownedMemberElement. OCL2.0: ownedMemberName = ownedMemberElement.name OwningMembership
deriveOwningMembershipOwnedMemberShortName Public The ownedMemberShortName of an OwningMembership is the shortName of its ownedMemberElement. OCL2.0: ownedMemberShortName = ownedMemberElement.shortName OwningMembership
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveRelationshipRelatedElement Public The relatedElements of a Relationship consist of all of its source Elements followed by all of its target Elements. OCL2.0: relatedElement = source->union(target) Relationship
validateActorMembershipOwningType Public The owningType of an ActorMembership must be a RequirementDefinition, RequirementUsage, CaseDefinition, or CaseUsage. OCL2.0: owningType.oclIsKindOf(RequirementUsage) or owningType.oclIsKindOf(RequirementDefinition) or owningType.oclIsKindOf(CaseDefinition) or owningType.oclIsKindOf(CaseUsage) ActorMembership
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateParameterMembershipOwningType Public A ParameterMembership must be owned by a Behavior,Step, or the result parameter of a ConstructorExpression. OCL2.0: owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step) or owningType.owningMembership.oclIsKindOf(ReturnParameterMembership) and owningType.owningNamespace.oclIsKindOf(ConstructorExpression) ParameterMembership
validateParameterMembershipParameterDirection Public The ownedMemberParameter of a ParameterMembership must have a direction equal to the result of the parameterDirection() operation. OCL2.0: ownedMemberParameter.direction = parameterDirection() ParameterMembership

Properties

Name Visibility Type Default Description Owner
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
isImplied Public Boolean [1..1] false Whether this Relationship was generated by tooling to meet semantic rules, rather than being directly created by a modeler. Relationship
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
memberElement Public Element [1..1] {redefines: Relationship.target} {redefined by: OwningMembership.ownedMemberElement} null The Element that becomes a member of the membershipOwningNamespace due to this Membership. Membership
memberElementId Public String [1..1] {derived} {redefined by: OwningMembership.ownedMemberElementId} null The elementId of the memberElement. Membership
memberName Public String [0..1] {redefined by: OwningMembership.ownedMemberName} null The name of the memberElement relative to the membershipOwningNamespace. Membership
membershipOwningNamespace Public Namespace [1..1] {derived} {redefines: Relationship.source} {redefined by: FeatureMembership.owningType} {subsetted: A_membership_membershipNamespace.membershipNamespace} {subsetted: Relationship.owningRelatedElement} null The Namespace of which the memberElement becomes a member due to this Membership. Membership
memberShortName Public String [0..1] {redefined by: OwningMembership.ownedMemberShortName} null The short name of the memberElement relative to the membershipOwningNamespace. Membership
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
ownedActorParameter Public PartUsage [1..1] {composite} {derived} {redefines: ParameterMembership.ownedMemberParameter} null The PartUsage specifying the actor. ActorMembership
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedMemberElement Public Element [1..1] {composite} {derived} {redefines: Membership.memberElement} {redefined by: FeatureMembership.ownedMemberFeature} {subsetted: Relationship.ownedRelatedElement} null The Element that becomes an ownedMember of the membershipOwningNamespace due to this OwningMembership. OwningMembership
ownedMemberElementId Public String [1..1] {derived} {redefines: Membership.memberElementId} null The elementId of the ownedMemberElement. OwningMembership
ownedMemberFeature Public Feature [1..1] {composite} {derived} {redefines: OwningMembership.ownedMemberElement} {redefined by: ParameterMembership.ownedMemberParameter} null The Feature that this FeatureMembership relates to its owningType, making it an ownedFeature of the owningType. FeatureMembership
ownedMemberName Public String [0..1] {derived} {redefines: Membership.memberName} null The name of the ownedMemberElement. OwningMembership
ownedMemberParameter Public Feature [1..1] {composite} {derived} {redefines: FeatureMembership.ownedMemberFeature} {redefined by: ActorMembership.ownedActorParameter} null The Feature that is identified as a parameter by this ParameterMembership. ParameterMembership
ownedMemberShortName Public String [0..1] {derived} {redefines: Membership.memberShortName} null The shortName of the ownedMemberElement. OwningMembership
ownedRelatedElement Public Element [0..*] {composite} {ordered} {subsetted: Relationship.relatedElement} null The relatedElements of this Relationship that are owned by the Relationship. Relationship
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelatedElement Public Element [0..1] {subsetted: Relationship.relatedElement} null The relatedElement of this Relationship that owns the Relationship, if any. Relationship
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
owningType Public Type [1..1] {derived} {redefines: Membership.membershipOwningNamespace} {subsetted: A_featureMembership_type.type} null The Type that owns this FeatureMembership. FeatureMembership
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
relatedElement Public Element [0..*] {derived} {ordered} {many-to-many:Relationship.relationship} null The Elements that are related by this Relationship, derived as the union of the source and target Elements of the Relationship. Relationship
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
source Public Element [0..*] {ordered} {redefined by: Membership.membershipOwningNamespace} {subsetted: Relationship.relatedElement} {many-to-many:Relationship.sourceRelationship} null The relatedElements from which this Relationship is considered to be directed. Relationship
target Public Element [0..*] {ordered} {redefined by: Membership.memberElement} {subsetted: Relationship.relatedElement} {many-to-many:Relationship.targetRelationship} null The relatedElements to which this Relationship is considered to be directed. Relationship
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
visibility Public VisibilityKind [1..1] public Whether or not the Membership of the memberElement in the membershipOwningNamespace is publicly visible outside that Namespace. Membership

AllocationDefinition [Class]

Features

Name Description
Fully Qualified Name SysML::Systems::Allocations::AllocationDefinition
Visibility Public
Definition An AllocationDefinition is a ConnectionDefinition that specifies that some or all of the responsibility to realize the intent of the source is allocated to the target instances. Such allocations define mappings across the various structures and hierarchies of a system model, perhaps as a precursor to more rigorous specifications and implementations. An AllocationDefinition can itself be refined using nested allocations that give a finer-grained decomposition of the containing allocation mapping.
Is Abstract FALSE
Generalizations ConnectionDefinition
Specializations
Containers

Rules

Name Visibilty Description Specification Owner
checkAllocationDefinitionSpecialization Public An AllocationDefinition must directly or indirectly specialize the AllocationDefinition Allocations::Allocation from the Systems Model Library. OCL2.0: specializesFromLibrary('Allocations::Allocation') AllocationDefinition
checkAssociationBinarySpecialization Public A binary Association must directly or indirectly specialize the base Association Links::binaryLink from the Kernel Semantic Library. OCL2.0: associationEnd->size() = 2 implies specializesFromLibrary('Links::BinaryLink') Association
checkAssociationSpecialization Public An Association must directly or indirectly specialize the base Association Links::Link from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Links::Link') Association
checkAssociationStructureBinarySpecialization Public A binary AssociationStructure must directly or indirectly specialize the base AssociationStructure Objects::BinaryLinkObject from the Kernel Semantic Library. OCL2.0: endFeature->size() = 2 implies specializesFromLibrary('Objects::BinaryLinkObject') AssociationStructure
checkAssociationStructureSpecialization Public An AssociationStructure must directly or indirectly specialize the base AssociationStructure Objects::LinkObject from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Objects::LinkObject') AssociationStructure
checkClassSpecialization Public A Class must directly or indirectly specialize the base Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Occurrences::Occurrence') Class
checkConnectionDefinitionBinarySpecialization Public A binary ConnectionDefinition must directly or indirectly specialize the ConnectionDefinition Connections::BinaryConnection from the Systems Model Library. OCL2.0: ownedEndFeature->size() = 2 implies specializesFromLibrary('Connections::BinaryConnections') ConnectionDefinition
checkConnectionDefinitionSpecializations Public A ConnectionDefinition must directly or indirectly specialize the ConnectionDefinition Connections::Connection from the Systems Model Library. OCL2.0: specializesFromLibrary('Connections::Connection') ConnectionDefinition
checkItemDefinitionSpecialization Public An ItemDefinition must directly or indirectly specialize the Systems Library Model ItemDefinition Items::Item. OCL2.0: specializesFromLibrary('Items::Item') ItemDefinition
checkOccurrenceDefinitionIndividualSpecialization Public An OccurrenceDefinition with isIndividual = true must directly or indirectly specialize Occurrences::Life from the Kernel Semantic Library. OCL2.0: isIndividual implies specializesFromLibrary('Occurrences::Life') OccurrenceDefinition
checkOccurrenceDefinitionMultiplicitySpecialization Public An OccurrenceDefinition with isIndividual = true must have a multiplicity that specializes Base::zeroOrOne from the Kernel Semantic Library. OCL2.0: isIndividual implies multiplicity <> null and multiplicity.specializesFromLibrary('Base::zeroOrOne') OccurrenceDefinition
checkPartDefinitionSpecialization Public A PartDefinition must directly or indirectly specialize the base PartDefinition Parts::Part from the Systems Model Library. OCL2.0: specializesFromLibrary('Parts::Part') PartDefinition
checkStructureSpecialization Public A Structure must directly or indirectly specialize the base Structure Objects::Object from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Objects::Object') Structure
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
deriveAllocationDefinitionAllocation Public The allocations of an AllocationDefinition are all its usages that are AllocationUsages. OCL2.0: allocation = usage->selectAsKind(AllocationUsage) AllocationDefinition
deriveAssociationRelatedType Public The relatedTypes of an Association are the types of its associationEnds. OCL2.0: relatedType = associationEnd.type Association
deriveAssociationSourceType Public The sourceType of an Association is its first relatedType (if any). OCL2.0: sourceType = if relatedType->isEmpty() then null else relatedType->first() endif Association
deriveAssociationTargetType Public No Documentation Provided OCL2.0: targetType = if relatedType->size() < 2 then OrderedSet{} else relatedType-> subSequence(2, relatedType->size())-> asOrderedSet() endif Association
deriveClassifierOwnedSubclassification Public The ownedSubclassifications of a Classifier are its ownedSpecializations that are Subclassifications. OCL2.0: ownedSubclassification = ownedSpecialization->selectByKind(Subclassification) Classifier
deriveDefinitionDirectedUsage Public The directedUsages of a Definition are all its directedFeatures that are Usages. OCL2.0: directedUsage = directedFeature->selectByKind(Usage) Definition
deriveDefinitionOwnedAction Public The ownedActions of a Definition are all its ownedUsages that are ActionUsages. OCL2.0: ownedAction = ownedUsage->selectByKind(ActionUsage) Definition
deriveDefinitionOwnedAllocation Public The ownedAllocations of a Definition are all its ownedUsages that are AllocationUsages. OCL2.0: ownedAllocation = ownedUsage->selectByKind(AllocationUsage) Definition
deriveDefinitionOwnedAnalysisCase Public The ownedAnalysisCases of a Definition are all its ownedUsages that are AnalysisCaseUsages. OCL2.0: ownedAnalysisCase = ownedUsage->selectByKind(AnalysisCaseUsage) Definition
deriveDefinitionOwnedAttribute Public The ownedAttributes of a Definition are all its ownedUsages that are AttributeUsages. OCL2.0: ownedAttribute = ownedUsage->selectByKind(AttributeUsage) Definition
deriveDefinitionOwnedCalculation Public The ownedCalculations of a Definition are all its ownedUsages that are CalculationUsages. OCL2.0: ownedCalculation = ownedUsage->selectByKind(CalculationUsage) Definition
deriveDefinitionOwnedCase Public The ownedCases of a Definition are all its ownedUsages that are CaseUsages. OCL2.0: ownedCase = ownedUsage->selectByKind(CaseUsage) Definition
deriveDefinitionOwnedConcern Public The ownedConcerns of a Definition are all its ownedUsages that are ConcernUsages. OCL2.0: ownedConcern = ownedUsage->selectByKind(ConcernUsage) Definition
deriveDefinitionOwnedConnection Public The ownedConnections of a Definition are all its ownedUsages that are ConnectorAsUsages. OCL2.0: ownedConnection = ownedUsage->selectByKind(ConnectorAsUsage) Definition
deriveDefinitionOwnedConstraint Public The ownedConstraints of a Definition are all its ownedUsages that are ConstraintUsages. OCL2.0: ownedConstraint = ownedUsage->selectByKind(ConstraintUsage) Definition
deriveDefinitionOwnedEnumeration Public The ownedEnumerations of a Definition are all its ownedUsages that are EnumerationUsages. OCL2.0: ownedEnumeration = ownedUsage->selectByKind(EnumerationUsage) Definition
deriveDefinitionOwnedFlow Public The ownedFlows of a Definition are all its ownedUsages that are FlowUsages. OCL2.0: ownedFlow = ownedUsage->selectByKind(FlowConnectionUsage) Definition
deriveDefinitionOwnedInterface Public The ownedInterfaces of a Definition are all its ownedUsages that are InterfaceUsages. OCL2.0: ownedInterface = ownedUsage->selectByKind(ReferenceUsage) Definition
deriveDefinitionOwnedItem Public The ownedItems of a Definition are all its ownedUsages that are ItemUsages. OCL2.0: ownedItem = ownedUsage->selectByKind(ItemUsage) Definition
deriveDefinitionOwnedMetadata Public The ownedMetadata of a Definition are all its ownedUsages that are MetadataUsages. OCL2.0: ownedMetadata = ownedUsage->selectByKind(MetadataUsage) Definition
deriveDefinitionOwnedOccurrence Public The ownedOccurrences of a Definition are all its ownedUsages that are OccurrenceUsages. OCL2.0: ownedOccurrence = ownedUsage->selectByKind(OccurrenceUsage) Definition
deriveDefinitionOwnedPart Public The ownedParts of a Definition are all its ownedUsages that are PartUsages. OCL2.0: ownedPart = ownedUsage->selectByKind(PartUsage) Definition
deriveDefinitionOwnedPort Public The ownedPorts of a Definition are all its ownedUsages that are PortUsages. OCL2.0: ownedPort = ownedUsage->selectByKind(PortUsage) Definition
deriveDefinitionOwnedReference Public The ownedReferences of a Definition are all its ownedUsages that are ReferenceUsages. OCL2.0: ownedReference = ownedUsage->selectByKind(ReferenceUsage) Definition
deriveDefinitionOwnedRendering Public The ownedRenderings of a Definition are all its ownedUsages that are RenderingUsages. OCL2.0: ownedRendering = ownedUsage->selectByKind(RenderingUsage) Definition
deriveDefinitionOwnedRequirement Public The ownedRequirements of a Definition are all its ownedUsages that are RequirementUsages. OCL2.0: ownedRequirement = ownedUsage->selectByKind(RequirementUsage) Definition
deriveDefinitionOwnedState Public The ownedStates of a Definition are all its ownedUsages that are StateUsages. OCL2.0: ownedState = ownedUsage->selectByKind(StateUsage) Definition
deriveDefinitionOwnedTransition Public The ownedTransitions of a Definition are all its ownedUsages that are TransitionUsages. OCL2.0: ownedTransition = ownedUsage->selectByKind(TransitionUsage) Definition
deriveDefinitionOwnedUsage Public The ownedUsages of a Definition are all its ownedFeatures that are Usages. OCL2.0: ownedUsage = ownedFeature->selectByKind(Usage) Definition
deriveDefinitionOwnedUseCase Public The ownedUseCases of a Definition are all its ownedUsages that are UseCaseUsages. OCL2.0: ownedUseCase = ownedUsage->selectByKind(UseCaseUsage) Definition
deriveDefinitionOwnedVerificationCase Public The ownedValidationCases of a Definition are all its ownedUsages that are ValidationCaseUsages. OCL2.0: ownedVerificationCase = ownedUsage->selectByKind(VerificationCaseUsage) Definition
deriveDefinitionOwnedView Public The ownedViews of a Definition are all its ownedUsages that are ViewUsages. OCL2.0: ownedView = ownedUsage->selectByKind(ViewUsage) Definition
deriveDefinitionOwnedViewpoint Public The ownedViewpoints of a Definition are all its ownedUsages that are ViewpointUsages. OCL2.0: ownedViewpoint = ownedUsage->selectByKind(ViewpointUsage) Definition
deriveDefinitionUsage Public The usages of a Definition are all its features that are Usages. OCL2.0: usage = feature->selectByKind(Usage) Definition
deriveDefinitionVariant Public The variants of a Definition are the ownedVariantUsages of its variantMemberships. OCL2.0: variant = variantMembership.ownedVariantUsage Definition
deriveDefinitionVariantMembership Public The variantMemberships of a Definition are those ownedMemberships that are VariantMemberships. OCL2.0: variantMembership = ownedMembership->selectByKind(VariantMembership) Definition
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveRelationshipRelatedElement Public The relatedElements of a Relationship consist of all of its source Elements followed by all of its target Elements. OCL2.0: relatedElement = source->union(target) Relationship
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
validateAssociationBinarySpecialization Public If an Association has more than two associationEnds, then it must not specialize, directly or indirectly, the Association BinaryLink from the Kernel Semantic Library. OCL2.0: associationEnds->size() > 2 implies not specializesFromLibrary('Links::BinaryLink') Association
validateAssociationEndTypes Public The ownedEndFeatures of an Association must have exactly one type. OCL2.0: ownedEndFeature->forAll(type->size() = 1) Association
validateAssociationRelatedTypes Public If an Association is concrete (not abstract), then it must have at least two relatedTypes. OCL2.0: not isAbstract implies relatedType->size() >= 2 Association
validateAssociationStructureIntersection Public If an Association is also a kind of Structure, then it must be an AssociationStructure. English: oclIsKindOf(Structure) = oclIsKindOf(AssociationStructure) Association
validateClassifierMultiplicityDomain Public If a Classifier has a multiplicity, then the multiplicity must have no featuringTypes (meaning that its domain is implicitly Base::Anything). OCL2.0: multiplicity <> null implies multiplicity.featuringType->isEmpty() Classifier
validateClassSpecialization Public A Class must not specialize a DataType and it can only specialize an Association if it is also itself a kind of Association (such as an AssociationStructure or Interaction). OCL2.0: ownedSpecialization.general-> forAll(not oclIsKindOf(DataType)) and not oclIsKindOf(Association) implies ownedSpecialization.general-> forAll(not oclIsKindOf(Association)) Class
validateConnectionDefinitionIsSufficient Public A ConnectionDefinition must have isSufficient = true. OCL2.0: isSufficient ConnectionDefinition
validateDefinitionVariationIsAbstract Public If a Definition is a variation, then it must be abstract. OCL2.0: isVariation implies isAbstract Definition
validateDefinitionVariationOwnedFeatureMembership Public If a Definition is a variation, then all it must not have any ownedFeatureMemberships. OCL2.0: isVariation implies ownedFeatureMembership->isEmpty() Definition
validateDefinitionVariationSpecialization Public A variation Definition may not specialize any other variation Definition. OCL2.0: isVariation implies not ownedSpecialization.specific->exists( oclIsKindOf(Definition) and oclAsType(Definition).isVariation) Definition
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateStructureSpecialization Public A Structure must not specialize a Behavior. OCL2.0: ownedSpecialization.general->forAll(not oclIsKindOf(Behavior)) Structure
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type

Properties

Name Visibility Type Default Description Owner
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
allocation Public AllocationUsage [0..*] {derived} {ordered} {subsetted: Definition.usage} {many-to-many:AllocationDefinition.featuringAllocationDefinition} null The AllocationUsages that refine the allocation mapping defined by this AllocationDefinition. AllocationDefinition
associationEnd Public Feature [0..*] {derived} {redefines: Type.endFeature} {redefined by: ConnectionDefinition.connectionEnd} {many-to-many:Association.associationWithEnd} null The features of the Association that identify the things that can be related by it. A concrete Association must have at least two associationEnds. When it has exactly two, the Association is called a binary Association. Association
connectionEnd Public Usage [0..*] {derived} {ordered} {redefines: Association.associationEnd} {many-to-many:ConnectionDefinition.connectionDefinitionWithEnd} null The Usages that define the things related by the ConnectionDefinition. ConnectionDefinition
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
directedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Definition.definitionWithDirectedUsage} null The usages of this Definition that are directedFeatures. Definition
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {redefined by: Association.associationEnd} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isImplied Public Boolean [1..1] false Whether this Relationship was generated by tooling to meet semantic rules, rather than being directly created by a modeler. Relationship
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isIndividual Public Boolean [1..1] false Whether this OccurrenceDefinition is constrained to represent at most one thing. OccurrenceDefinition
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isSufficient Public Boolean [1..1] {redefines: Type.isSufficient} true A ConnectionDefinition always has isSufficient = true. ConnectionDefinition
isSufficient Public Boolean [1..1] {redefined by: ConnectionDefinition.isSufficient} false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
isVariation Public Boolean [1..1] null Whether this Definition is for a variation point or not. If true, then all the memberships of the Definition must be VariantMemberships. Definition
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAction Public ActionUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedOccurrence} null The ActionUsages that are ownedUsages of this Definition. Definition
ownedAllocation Public AllocationUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedConnection} null The AllocationUsages that are ownedUsages of this Definition. Definition
ownedAnalysisCase Public AnalysisCaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCase} null The AnalysisCaseUsages that are ownedUsages of this Definition. Definition
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedAttribute Public AttributeUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The AttributeUsages that are ownedUsages of this Definition. Definition
ownedCalculation Public CalculationUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedAction} null The CalculationUsages that are ownedUsages of this Definition. Definition
ownedCase Public CaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCalculation} null The code>CaseUsages that are ownedUsages of this Definition. Definition
ownedConcern Public ConcernUsage [0..*] {derived} {subsetted: Definition.ownedRequirement} null The ConcernUsages that are ownedUsages of this Definition. Definition
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedConnection Public ConnectorAsUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The ConnectorAsUsages that are ownedUsages of this Definition. Note that this list includes BindingConnectorAsUsages, SuccessionAsUsages, and FlowUsages because these are ConnectorAsUsages even though they are not ConnectionUsages. Definition
ownedConstraint Public ConstraintUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedOccurrence} null The ConstraintUsages that are ownedUsages of this Definition. Definition
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedEnumeration Public EnumerationUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedAttribute} null The EnumerationUsages that are ownedUsages of this Definition. Definition
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedFlow Public FlowUsage [0..*] {derived} {subsetted: Definition.ownedConnection} null The FlowUsages that are ownedUsages of this Definition. Definition
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedInterface Public InterfaceUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedConnection} null The InterfaceUsages that are ownedUsages of this Definition. Definition
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedItem Public ItemUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedOccurrence} null The ItemUsages that are ownedUsages of this Definition. Definition
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedMetadata Public MetadataUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedItem} null The MetadataUsages that are ownedUsages of this Definition. Definition
ownedOccurrence Public OccurrenceUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The OccurrenceUsages that are ownedUsages of this Definition. Definition
ownedPart Public PartUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedItem} null The PartUsages that are ownedUsages of this Definition. Definition
ownedPort Public PortUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The PortUsages that are ownedUsages of this Definition. Definition
ownedReference Public ReferenceUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The ReferenceUsages that are ownedUsages of this Definition. Definition
ownedRelatedElement Public Element [0..*] {composite} {ordered} {subsetted: Relationship.relatedElement} null The relatedElements of this Relationship that are owned by the Relationship. Relationship
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedRendering Public RenderingUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedPart} null The RenderingUsages that are ownedUsages of this Definition. Definition
ownedRequirement Public RequirementUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedConstraint} null The RequirementUsages that are ownedUsages of this Definition. Definition
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedState Public StateUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedAction} null The StateUsages that are ownedUsages of this Definition. Definition
ownedSubclassification Public Subclassification [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} null The ownedSpecializations of this Classifier that are Subclassifications, for which this Classifier is the subclassifier. Classifier
ownedTransition Public TransitionUsage [0..*] {derived} {subsetted: Definition.ownedUsage} null The TransitionUsages that are ownedUsages of this Definition. Definition
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
ownedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.ownedFeature} null The Usages that are ownedFeatures of this Definition. Definition
ownedUseCase Public UseCaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCase} null The UseCaseUsages that are ownedUsages of this Definition. Definition
ownedVerificationCase Public VerificationCaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCase} null The VerificationCaseUsages that are ownedUsages of this Definition. Definition
ownedView Public ViewUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedPart} null The ViewUsages that are ownedUsages of this Definition. Definition
ownedViewpoint Public ViewpointUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedRequirement} null The ViewpointUsages that are ownedUsages of this Definition. Definition
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelatedElement Public Element [0..1] {subsetted: Relationship.relatedElement} null The relatedElement of this Relationship that owns the Relationship, if any. Relationship
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
relatedElement Public Element [0..*] {derived} {ordered} {redefined by: Association.relatedType} {many-to-many:Relationship.relationship} null The Elements that are related by this Relationship, derived as the union of the source and target Elements of the Relationship. Relationship
relatedType Public Type [0..*] {derived} {ordered} {redefines: Relationship.relatedElement} {many-to-many:Association.association} null The types of the associationEnds of the Association, which are the relatedElements of the Association considered as a Relationship. Association
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
source Public Element [0..*] {ordered} {redefined by: Association.sourceType} {subsetted: Relationship.relatedElement} {many-to-many:Relationship.sourceRelationship} null The relatedElements from which this Relationship is considered to be directed. Relationship
sourceType Public Type [0..1] {derived} {redefines: Relationship.source} {subsetted: Association.relatedType} null The source relatedType for this Association. It is the first relatedType of the Association. Association
target Public Element [0..*] {ordered} {redefined by: Association.targetType} {subsetted: Relationship.relatedElement} {many-to-many:Relationship.targetRelationship} null The relatedElements to which this Relationship is considered to be directed. Relationship
targetType Public Type [0..*] {derived} {redefines: Relationship.target} {subsetted: Association.relatedType} {many-to-many:Association.targetAssociation} null The target relatedTypes for this Association. This includes all the relatedTypes other than the sourceType. Association
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type
usage Public Usage [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Definition.featuringDefinition} null The Usages that are features of this Definition (not necessarily owned). Definition
variant Public Usage [0..*] {derived} {subsetted: Namespace.ownedMember} null The Usages which represent the variants of this Definition as a variation point Definition, if isVariation = true. If isVariation = false, the there must be no variants. Definition
variantMembership Public VariantMembership [0..*] {composite} {derived} {subsetted: Namespace.ownedMembership} null The ownedMemberships of this Definition that are VariantMemberships. If isVariation = true, then this must be all ownedMemberships of the Definition. If isVariation = false, then variantMembershipmust be empty. Definition

AllocationUsage [Class]

Features

Name Description
Fully Qualified Name SysML::Systems::Allocations::AllocationUsage
Visibility Public
Definition An AllocationUsage is a usage of an AllocationDefinition asserting the allocation of the source feature to the target feature.
Is Abstract FALSE
Generalizations ConnectionUsage
Specializations
Containers

Rules

Name Visibilty Description Specification Owner
checkAllocationUsageSpecialization Public An AllocationUsage must directly or indirectly specialize the AllocationUsage Allocations::allocations from the Systems Model Library. OCL2.0: specializesFromLibrary('Allocations::allocations') AllocationUsage
checkConnectionUsageBinarySpecialization Public A binary ConnectionUsage must directly or indirectly specialize the ConnectionUsage Connections::binaryConnections from the Systems Model Library. OCL2.0: ownedEndFeature->size() = 2 implies specializesFromLibrary('Connections::binaryConnections') ConnectionUsage
checkConnectionUsageSpecialization Public A ConnectionUsage must directly or indirectly specialize the ConnectionUsage Connections::connections from the Systems Model Library. OCL2.0: specializesFromLibrary('Connections::connections') ConnectionUsage
checkConnectorBinaryObjectSpecialization Public A binary Connector for an AssociationStructure must directly or indirectly specialize the base Connector Objects::binaryLinkObjects from the Kernel Semantic Library. OCL2.0: connectorEnds->size() = 2 and association->exists(oclIsKindOf(AssociationStructure)) implies specializesFromLibrary('Objects::binaryLinkObjects') Connector
checkConnectorBinarySpecialization Public A binary Connector must directly or indirectly specialize the base Connector Links::binaryLinks from the Kernel Semantic Library. OCL2.0: connectorEnd->size() = 2 implies specializesFromLibrary('Links::binaryLinks') Connector
checkConnectorObjectSpecialization Public A Connector for an AssociationStructure must directly or indirectly specialize the base Connector Objects::linkObjects from the Kernel Semantic Library. OCL2.0: association->exists(oclIsKindOf(AssociationStructure)) implies specializesFromLibrary('Objects::linkObjects') Connector
checkConnectorSpecialization Public A Connector must directly or indirectly specialize the base Connector Links::links from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Links::links') Connector
checkConnectorTypeFeaturing Public Each relatedFeature of a Connector must have each featuringType of the Connector as a direct or indirect featuringType (where a Feature with no featuringType is treated as if the Classifier Base::Anything was its featuringType). OCL2.0: relatedFeature->forAll(f | if featuringType->isEmpty() then f.isFeaturedWithin(null) else featuringType->forAll(t | f.isFeaturedWithin(t)) endif) Connector
checkFeatureCrossingSpecialization Public If this Feature has isEnd = true and ownedCrossFeature returns a non-null value, then the crossFeature of the Feature must be the Feature returned from ownedCrossFeature (which implies that this Feature has an appropriate ownedCrossSubsetting to realize this). OCL2.0: ownedCrossFeature() <> null implies crossFeature = ownedCrossFeature() Feature
checkFeatureDataValueSpecialization Public If a Feature has an ownedTyping relationship to a DataType, then it must directly or indirectly specialize Base::dataValues from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(DataType)) implies specializesFromLibrary('Base::dataValues') Feature
checkFeatureEndRedefinition Public If a Feature has isEnd = true and an owningType that is not empty, then, for each direct supertype of its owningType, it must redefine the endFeature at the same position, if any. OCL2.0: isEnd and owningType <> null implies let i : Integer = owningType.ownedEndFeature->indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | supertype.endFeature->size() >= i implies redefines(supertype.endFeature->at(i)) Feature
checkFeatureEndSpecialization Public If a Feature has isEnd = true and an owningType that is an Association or a Connector, then it must directly or indirectly specialize Links::Link::participant from the Kernel Semantic Library. OCL2.0: isEnd and owningType <> null and (owningType.oclIsKindOf(Association) or owningType.oclIsKindOf(Connector)) implies specializesFromLibrary('Links::Link::participant') Feature
checkFeatureFeatureMembershipTypeFeaturing Public If a Feature is owned via a FeatureMembership, then it must have a featuringType for which the operation isFeaturingType returns true. OCL2.0: owningFeatureMembership <> null implies featuringTypes->exists(t | isFeaturingType(t)) Feature
checkFeatureFlowFeatureRedefinition Public If a Feature is the first ownedFeature of a first or second FlowEnd, then it must directly or indirectly specialize either Transfers::Transfer::source::sourceOutput or Transfers::Transfer::target::targetInput, respectively, from the Kernel Semantic Library. OCL2.0: owningType <> null and owningType.oclIsKindOf(FlowEnd) and owningType.ownedFeature->at(1) = self implies let flowType : Type = owningType.owningType in flowType <> null implies let i : Integer = flowType.ownedFeature.indexOf(owningType) in (i = 1 implies redefinesFromLibrary('Transfers::Transfer::source::sourceOutput')) and (i = 2 implies redefinesFromLibrary('Transfers::Transfer::source::targetInput')) Feature
checkFeatureObjectSpecialization Public If a Feature has an ownedTyping relationship to a Structure, then it must directly or indirectly specialize Objects::objects from the Kernel Semantics Library. OCL2.0: ownedTyping.type->exists(selectByKind(Structure)) implies specializesFromLibary('Objects::objects') Feature
checkFeatureOccurrenceSpecialization Public If a Feature has an ownedTyping relationship to a Class, then it must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(Class)) implies specializesFromLibrary('Occurrences::occurrences') Feature
checkFeatureOwnedCrossFeatureRedefinitionSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then, for any end Feature that is redefined by the owning end Feature of this Feature, this Feature must subset the crossFeature of the redefined end Feature, if this exists. OCL2.0: isOwnedCrossFeature() implies ownedSubsetting.subsettedFeature->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature <> null).crossFeature) Feature
checkFeatureOwnedCrossFeatureSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then it must directly or indirectly specialize the types of its owning end Feature. OCL2.0: isOwnedCrossFeature() implies owner.oclAsType(Feature).type->forAll(t | self.specializes(t)) Feature
checkFeatureOwnedCrossFeatureTypeFeaturing Public If this Feature is the ownedCrossFeature of an end Feature, then it must have featuringTypes consistent with the crossing from other end Features of the owningType of its end Feature. OCL2.0: isOwnedCrossFeature() implies let otherEnds : OrderedSet(Feature) = owner.oclAsType(Feature).owningType.endFeature->excluding(self) in if (otherEnds->size() = 1) then featuringType = otherEnds->first().type else featuringType->size() = 1 and featuringType->first().isCartesianProduct() and featuringType->first().asCartesianProduct() = otherEnds.type and featuringType->first().allSupertypes()->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature() <> null).crossFeature().featuringType) endif Feature
checkFeatureParameterRedefinition Public If a Feature is a parameter of an owningType that is a Behavior or Step, but not
  • A result parameter
  • A parameter of an InvocationExpression, with at least one non-implied ownedRedefinition
then, for each direct supertype of its owningType that is also a Behavior or Step, it must redefine the parameter at the same position, if any.
OCL2.0: owningType <> null and not owningFeatureMembership. oclIsKindOf(ReturnParameterMembership) and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step) and (owningType.oclIsKindOf(InvocationExpression) implies not ownedRedefinition->exists(not isImplied)) implies let i : Integer = owningType.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership))-> indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | let ownedParameters : Sequence(Feature) = supertype.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership)) in ownedParameters->size() >= i implies redefines(ownedParameters->at(i)) Feature
checkFeaturePortionSpecialization Public If a Feature has isPortion = true, an ownedTyping relationship to a Class, and an owningType that is a Class or another Feature typed by a Class, then it must directly or indirectly specialize Occurrences::Occurrence::portions from the Kernel Semantic Library. OCL2.0: isPortion and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::portions') Feature
checkFeatureResultRedefinition Public If a Feature is a result parameter of an owningType that is a Function or Expression, then, for each direct supertype of its owningType that is also a Function or Expression, it must redefine the result parameter. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Function) and self = owningType.oclAsType(Function).result or owningType.oclIsKindOf(Expression) and self = owningType.oclAsType(Expression).result) implies owningType.ownedSpecialization.general-> select(oclIsKindOf(Function) or oclIsKindOf(Expression))-> forAll(supertype | redefines( if superType.oclIsKindOf(Function) then superType.oclAsType(Function).result else superType.oclAsType(Expression).result endif) Feature
checkFeatureSpecialization Public A Feature must directly or indirectly specialize Base::things from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::things') Feature
checkFeatureSubobjectSpecialization Public A composite Feature typed by a Structure, and whose ownedType is a Structure or another Feature typed by a Structure must directly or indirectly specialize Objects::Object::subobjects. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Structure)) and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.type->includes(oclIsKindOf(Structure))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureSuboccurrenceSpecialization Public A composite Feature that has an ownedTyping relationship to a Class, and whose ownedType is a Class or another Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureValuationSpecialization Public If a Feature has a FeatureValue, no ownedSpecializations that are not implied, and is not directed, then it must specialize the result of the value Expression of the FeatureValue. OCL2.0: direction = null and ownedSpecializations->forAll(isImplied) implies ownedMembership-> selectByKind(FeatureValue)-> forAll(fv | specializes(fv.value.result)) Feature
checkItemUsageSpecialization Public An ItemUsage must directly or indirectly specialize the Systems Model Library ItemUsage items. OCL2.0: specializesFromLibrary('Items::items') ItemUsage
checkItemUsageSubitemSpecialization Public No Documentation Provided OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(ItemDefinition) or owningType.oclIsKindOf(ItemUsage)) implies specializesFromLibrary('Items::Item::subitem') ItemUsage
checkOccurrenceUsageSnapshotSpecialization Public If an OccurrenceUsage has portionKind = snapshot, then it must directly or indirectly specialize Occurrences::Occurrence::snapshots from the Kernel Semantic Library. OCL2.0: portionKind = PortionKind::snapshot implies specializesFromLibrary('Occurrences::Occurrence::snapshots') OccurrenceUsage
checkOccurrenceUsageSpecialization Public An OccurrenceUsage must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Occurrences::occurrences') OccurrenceUsage
checkOccurrenceUsageSuboccurrenceSpecialization Public A composite OccurrenceUsage, whose ownedType is a Class, another OccurrenceUsage, or any kind of Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(OccurrenceUsage) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKind(Class))) implies specializesFromLibrary('Occurrences::Occurrence::suboccurrences') OccurrenceUsage
checkOccurrenceUsageTimeSliceSpecialization Public If an OccurrenceUsage has portionKind = timeslice, then it must directly or indirectly specialize Occurrences::Occurrence::timeSlices from the Kernel Semantic Library. OCL2.0: portionKind = PortionKind::timeslice implies specializesFromLibrary('Occurrences::Occurrence::timeSlices') OccurrenceUsage
checkPartUsageActorSpecialization Public If a PartUsage is owned via an ActorMembership, then it must directly or indirectly specialize either Requirements::RequirementCheck::actors (if its owningType is a RequirementDefinition or RequirementUsage or Cases::Case::actors (otherwise). OCL2.0: owningFeatureMembership <> null and owningFeatureMembership.oclIsKindOf(ActorMembership) implies if owningType.oclIsKindOf(RequirementDefinition) or owningType.oclIsKindOf(RequirementUsage) then specializesFromLibrary('Requirements::RequirementCheck::actors') else specializesFromLibrary('Cases::Case::actors') PartUsage
checkPartUsageSpecialization Public A PartUsage must directly or indirectly specialize the PartUsage Parts::parts from the Systems Model Library. OCL2.0: specializesFromLibrary('Parts::parts') PartUsage
checkPartUsageStakeholderSpecialization Public If a PartUsage is owned via a StakeholderMembership, then it must directly or indirectly specialize either Requirements::RequirementCheck::stakeholders. OCL2.0: owningFeatureMembership <> null and owningFeatureMembership.oclIsKindOf(StakeholderMembership) implies specializesFromLibrary('Requirements::RequirementCheck::stakeholders') PartUsage
checkPartUsageSubpartSpecialization Public A composite PartUsage whose owningType is a ItemDefinition or ItemUsage must directly or indirectly specialize the PartUsage Items::Item::subparts from the Systems Model Library. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(ItemDefinition) or owningType.oclIsKindOf(ItemUsage)) implies specializesFromLibrary('Items::Item::subparts') PartUsage
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
checkUsageVariationDefinitionSpecialization Public If a Usage has an owningVariationDefinition, then it must directly or indirectly specialize that Definition. OCL2.0: owningVariationDefinition <> null implies specializes(owningVariationDefinition) Usage
checkUsageVariationUsageSpecialization Public If a Usage has an owningVariationUsage, then it must directly or indirectly specialize that Usage. OCL2.0: owningVariationUsage <> null implies specializes(owningVariationUsage) Usage
checkUsageVariationUsageTypeFeaturing Public If a Usage has an owningVariationUsage, then it must have the same featuringTypes as that Usage. OCL2.0: owningVariationUsage <> null implies featuringType->asSet() = owningVariationUsage.featuringType->asSet() Usage
deriveConnectorDefaultFeaturingType Public The defaultFeaturingType of a Connector is the innermost common direct or indirect featuringType of the relatedFeatures of the Connector, so that each relatedElement is featured within the defaultFeaturingType, if such exists. OCL2.0: let commonFeaturingTypes : OrderedSet(Type) = relatedFeature->closure(featuringType)->select(t | relatedFeature->forAll(f | f.isFeaturedWithin(t)) ) in let nearestCommonFeaturingTypes : OrderedSet(Type) = commonFeaturingTypes->reject(t1 | commonFeaturingTypes->exists(t2 | t2 <> t1 and t2->closure(featuringType)->contains(t1) )) in if nearestCommonFeaturingTypes->isEmpty() then null else nearestCommonFeaturingTypes->first() endif Connector
deriveConnectorRelatedFeature Public The relatedFeatures of a Connector are the referenced Features of its connectorEnds. OCL2.0: relatedFeature = connectorEnd.ownedReferenceSubsetting-> select(s | s <> null).subsettedFeature Connector
deriveConnectorSourceFeature Public The sourceFeature of a Connector is its first relatedFeature (if any). OCL2.0: sourceFeature = if relatedFeature->isEmpty() then null else relatedFeature->first() endif Connector
deriveConnectorTargetFeature Public The targetFeatures of a Connector are the relatedFeatures other than the sourceFeature. OCL2.0: targetFeature = if relatedFeature->size() < 2 then OrderedSet{} else relatedFeature-> subSequence(2, relatedFeature->size())-> asOrderedSet() endif Connector
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveFeatureChainingFeature Public The chainingFeatures of a Feature are the chainingFeatures of its ownedFeatureChainings. OCL2.0: chainingFeature = ownedFeatureChaining.chainingFeature Feature
deriveFeatureCrossFeature Public The crossFeature of a Feature is the second chainingFeature of the crossedFeature of the ownedCrossSubsetting of the Feature, if any. OCL2.0: crossFeature = if ownedCrossSubsetting = null then null else let chainingFeatures: Sequence(Feature) = ownedCrossSubsetting.crossedFeature.chainingFeature in if chainingFeatures->size() < 2 then null else chainingFeatures->at(2) endif Feature
deriveFeatureFeatureTarget Public If a Feature has no chainingFeatures, then its featureTarget is the Feature itself, otherwise the featureTarget is the last of the chainingFeatures. OCL2.0: featureTarget = if chainingFeature->isEmpty() then self else chainingFeature->last() endif Feature
deriveFeatureFeaturingType Public The featuringTypes of a Feature include the featuringTypes of all the typeFeaturings of the Feature. If the Feature has chainingFeatures, then its featuringTypes also include the featuringTypes of the first chainingFeature. OCL2.0: featuringType = let featuringTypes : OrderedSet(Type) = featuring.type->asOrderedSet() in if chainingFeature->isEmpty() then featuringTypes else featuringTypes-> union(chainingFeature->first().featuringType)-> asOrderedSet() endif Feature
deriveFeatureOwnedCrossSubsetting Public The ownedCrossSubsetting of a Feature is the ownedSubsetting that is a CrossSubsetting, if any. OCL2.0: ownedCrossSubsetting = let crossSubsettings: Sequence(CrossSubsetting) = ownedSubsetting->selectByKind(CrossSubsetting) in if crossSubsettings->isEmpty() then null else crossSubsettings->first() endif Feature
deriveFeatureOwnedFeatureChaining Public The ownedFeatureChainings of a Feature are the ownedRelationships that are FeatureChainings. OCL2.0: ownedFeatureChaining = ownedRelationship->selectByKind(FeatureChaining) Feature
deriveFeatureOwnedFeatureInverting Public The ownedFeatureInvertings of a Feature are its ownedRelationships that are FeatureInvertings. OCL2.0: ownedFeatureInverting = ownedRelationship->selectByKind(FeatureInverting)-> select(fi | fi.featureInverted = self) Feature
deriveFeatureOwnedRedefinition Public The ownedRedefinitions of a Feature are its ownedSubsettings that are Redefinitions. OCL2.0: ownedRedefinition = ownedSubsetting->selectByKind(Redefinition) Feature
deriveFeatureOwnedReferenceSubsetting Public The ownedReferenceSubsetting of a Feature is the first ownedSubsetting that is a ReferenceSubsetting (if any). OCL2.0: ownedReferenceSubsetting = let referenceSubsettings : OrderedSet(ReferenceSubsetting) = ownedSubsetting->selectByKind(ReferenceSubsetting) in if referenceSubsettings->isEmpty() then null else referenceSubsettings->first() endif Feature
deriveFeatureOwnedSubsetting Public The ownedSubsettings of a Feature are its ownedSpecializations that are Subsettings. OCL2.0: ownedSubsetting = ownedSpecialization->selectByKind(Subsetting) Feature
deriveFeatureOwnedTypeFeaturing Public The ownedTypeFeaturings of a Feature are its ownedRelationships that are TypeFeaturings and which have the Feature as their featureOfType. OCL2.0: ownedTypeFeaturing = ownedRelationship->selectByKind(TypeFeaturing)-> select(tf | tf.featureOfType = self) Feature
deriveFeatureOwnedTyping Public The ownedTypings of a Feature are its ownedSpecializations that are FeatureTypings. OCL2.0: ownedTyping = ownedGeneralization->selectByKind(FeatureTyping) Feature
deriveFeatureType Public The types of a Feature are the union of the types of its typings and the types of the Features it subsets, with all redundant supertypes removed. If the Feature has chainingFeatures, then the union also includes the types of the last chainingFeature. OCL2.0: type = let types : OrderedSet(Types) = OrderedSet{self}-> -- Note: The closure operation automatically handles circular relationships. closure(typingFeatures()).typing.type->asOrderedSet() in types->reject(t1 | types->exist(t2 | t2 <> t1 and t2.specializes(t1))) Feature
deriveItemUsageItemDefinition Public The itemDefinitions of an ItemUsage are those occurrenceDefinitions that are Structures. OCL2.0: itemDefinition = occurrenceDefinition->selectByKind(Structure) ItemUsage
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOccurrenceUsageIndividualDefinition Public The individualDefinition of an OccurrenceUsage is the occurrenceDefinition that is an OccurrenceDefinition with isIndividual = true, if any. OCL2.0: individualDefinition = let individualDefinitions : OrderedSet(OccurrenceDefinition) = occurrenceDefinition-> selectByKind(OccurrenceDefinition)-> select(isIndividual) in if individualDefinitions->isEmpty() then null else individualDefinitions->first() endif OccurrenceUsage
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
derivePartUsagePartDefinition Public The partDefinitions of an PartUsage are those itemDefinitions that are PartDefinitions. OCL2.0: itemDefinition->selectByKind(PartDefinition) PartUsage
deriveRelationshipRelatedElement Public The relatedElements of a Relationship consist of all of its source Elements followed by all of its target Elements. OCL2.0: relatedElement = source->union(target) Relationship
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
deriveUsageDirectedUsage Public The directedUsages of a Usage are all its directedFeatures that are Usages. OCL2.0: directedUsage = directedFeature->selectByKind(Usage) Usage
deriveUsageIsReference Public A Usage is referential if it is not composite. OCL2.0: isReference = not isComposite Usage
deriveUsageMayTimeVary Public A Usage mayTimeVary if and only if all of the following are true
  • It has an owningType that specializes Occurrences::Occurrence (from the Kernel Semantic Library).
  • It is not a portion.
  • It does not specialize Links::SelfLink or Occurrences::HappensLink (from the Kernel Semantic Library).
  • If isComposite = true, it does not specialize Actions::Action (from the Systems Model Library).
OCL2.0: mayTimeVary = owningType <> null and owningType.specializesFromLibrary('Occurrences::Occurrence') and not ( isPortion or specializesFromLibrary('Links::SelfLink') or specializesFromLibrary('Occurrences::HappensLink') or isComposite and specializesFromLibrary('Actions::Action') ) Usage
deriveUsageNestedAction Public The ownedActions of a Usage are all its ownedUsages that are ActionUsages. OCL2.0: nestedAction = nestedUsage->selectByKind(ActionUsage) Usage
deriveUsageNestedAllocation Public The ownedAllocations of a Usage are all its ownedUsages that are AllocationUsages. OCL2.0: nestedAllocation = nestedUsage->selectByKind(AllocationUsage) Usage
deriveUsageNestedAnalysisCase Public The ownedAnalysisCases of a Usage are all its ownedUsages that are AnalysisCaseUsages. OCL2.0: nestedAnalysisCase = nestedUsage->selectByKind(AnalysisCaseUsage) Usage
deriveUsageNestedAttribute Public The ownedAttributes of a Usage are all its ownedUsages that are AttributeUsages. OCL2.0: nestedAttribute = nestedUsage->selectByKind(AttributeUsage) Usage
deriveUsageNestedCalculation Public The ownedCalculations of a Usage are all its ownedUsages that are CalculationUsages. OCL2.0: nestedCalculation = nestedUsage->selectByKind(CalculationUsage) Usage
deriveUsageNestedCase Public The ownedCases of a Usage are all its ownedUsages that are CaseUsages. OCL2.0: nestedCase = nestedUsage->selectByKind(CaseUsage) Usage
deriveUsageNestedConcern Public The ownedConcerns of a Usage are all its ownedUsages that are ConcernUsages. OCL2.0: nestedConcern = nestedUsage->selectByKind(ConcernUsage) Usage
deriveUsageNestedConnection Public The ownedConnections of a Usage are all its ownedUsages that are ConnectorAsUsages. OCL2.0: nestedConnection = nestedUsage->selectByKind(ConnectorAsUsage) Usage
deriveUsageNestedConstraint Public The ownedConstraints of a Usage are all its ownedUsages that are ConstraintUsages. OCL2.0: nestedConstraint = nestedUsage->selectByKind(ConstraintUsage) Usage
deriveUsageNestedEnumeration Public The ownedEnumerations of a Usage are all its ownedUsages that are EnumerationUsages. OCL2.0: ownedNested = nestedUsage->selectByKind(EnumerationUsage) Usage
deriveUsageNestedFlow Public The ownedFlows of a Usage are all its ownedUsages that are FlowConnectionUsages. OCL2.0: nestedFlow = nestedUsage->selectByKind(FlowConnectionUsage) Usage
deriveUsageNestedInterface Public The ownedInterfaces of a Usage are all its ownedUsages that are InterfaceUsages. OCL2.0: nestedInterface = nestedUsage->selectByKind(ReferenceUsage) Usage
deriveUsageNestedItem Public The ownedItems of a Usage are all its ownedUsages that are ItemUsages. OCL2.0: nestedItem = nestedUsage->selectByKind(ItemUsage) Usage
deriveUsageNestedMetadata Public The ownedMetadata of a Usage are all its ownedUsages that are MetadataUsages. OCL2.0: nestedMetadata = nestedUsage->selectByKind(MetadataUsage) Usage
deriveUsageNestedOccurrence Public The ownedOccurrences of a Usage are all its ownedUsages that are OccurrenceUsages. OCL2.0: nestedOccurrence = nestedUsage->selectByKind(OccurrenceUsage) Usage
deriveUsageNestedPart Public The ownedParts of a Usage are all its ownedUsages that are PartUsages. OCL2.0: nestedPart = nestedUsage->selectByKind(PartUsage) Usage
deriveUsageNestedPort Public The ownedPorts of a Usage are all its ownedUsages that are PortUsages. OCL2.0: nestedPort = nestedUsage->selectByKind(PortUsage) Usage
deriveUsageNestedReference Public The ownedReferences of a Usage are all its ownedUsages that are ReferenceUsages. OCL2.0: nestedReference = nestedUsage->selectByKind(ReferenceUsage) Usage
deriveUsageNestedRendering Public The ownedRenderings of a Usage are all its ownedUsages that are RenderingUsages. OCL2.0: nestedRendering = nestedUsage->selectByKind(RenderingUsage) Usage
deriveUsageNestedRequirement Public The ownedRequirements of a Usage are all its ownedUsages that are RequirementUsages. OCL2.0: nestedRequirement = nestedUsage->selectByKind(RequirementUsage) Usage
deriveUsageNestedState Public The ownedStates of a Usage are all its ownedUsages that are StateUsages. OCL2.0: nestedState = nestedUsage->selectByKind(StateUsage) Usage
deriveUsageNestedTransition Public The ownedTransitions of a Usage are all its ownedUsages that are TransitionUsages. OCL2.0: nestedTransition = nestedUsage->selectByKind(TransitionUsage) Usage
deriveUsageNestedUsage Public The ownedUsages of a Usage are all its ownedFeatures that are Usages. OCL2.0: nestedUsage = ownedFeature->selectByKind(Usage) Usage
deriveUsageNestedUseCase Public The ownedUseCases of a Usage are all its ownedUsages that are UseCaseUsages. OCL2.0: nestedUseCase = nestedUsage->selectByKind(UseCaseUsage) Usage
deriveUsageNestedVerificationCase Public The ownedValidationCases of a Usage are all its ownedUsages that are ValidationCaseUsages. OCL2.0: nestedVerificationCase = nestedUsage->selectByKind(VerificationCaseUsage) Usage
deriveUsageNestedView Public The ownedViews of a Usage are all its ownedUsages that are ViewUsages. OCL2.0: nestedView = nestedUsage->selectByKind(ViewUsage) Usage
deriveUsageNestedViewpoint Public The ownedViewpoints of a Usage are all its ownedUsages that are ViewpointUsages. OCL2.0: nestedViewpoint = nestedUsage->selectByKind(ViewpointUsage) Usage
deriveUsageUsage Public The usages of a Usage are all its features that are Usages. OCL2.0: usage = feature->selectByKind(Usage) Usage
deriveUsageVariant Public The variants of a Usage are the ownedVariantUsages of its variantMemberships. OCL2.0: variant = variantMembership.ownedVariantUsage Usage
deriveUsageVariantMembership Public The variantMemberships of a Usage are those ownedMemberships that are VariantMemberships. OCL2.0: variantMembership = ownedMembership->selectByKind(VariantMembership) Usage
validateConnectorBinarySpecialization Public If a Connector has more than two connectorEnds, then it must not specialize, directly or indirectly, the Association BinaryLink from the Kernel Semantic Library. OCL2.0: connectorEnds->size() > 2 implies not specializesFromLibrary('Links::BinaryLink') Connector
validateConnectorRelatedFeatures Public If a Connector is concrete (not abstract), then it must have at least two relatedFeatures. OCL2.0: not isAbstract implies relatedFeature->size() >= 2 Connector
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateFeatureChainingFeatureConformance Public Each chainingFeature (other than the first) must be featured within the previous chainingFeature. OCL2.0: Sequence{2..chainingFeature->size()}->forAll(i | chainingFeature->at(i).isFeaturedWithin(chainingFeature->at(i-1))) Feature
validateFeatureChainingFeatureNotOne Public A Feature must have either no chainingFeatures or more than one. OCL2.0: chainingFeature->size() <> 1 Feature
validateFeatureChainingFeaturesNotSelf Public A Feature cannot be one of its own chainingFeatures. English: chainingFeature->excludes(self) Feature
validateFeatureConstantIsVariable Public A Feature with isConstant = true must have isVariable = true. OCL2.0: isConstant implies isVariable Feature
validateFeatureCrossFeatureSpecialization Public If this Feature has a crossFeature, then, for any Feature that is redefined by this Feature, the crossFeature must specialize the crossFeature of the redefined end Feature, if this exists. OCL2.0: crossFeature <> null implies ownedRedefinition.redefinedFeature.crossFeature-> forAll(f | f <> null implies crossFeature.specializes(f)) Feature
validateFeatureCrossFeatureType Public The crossFeature of a Feature must have the same types as the Feature. OCL2.0: crossFeature <> null implies crossFeature.type->asSet() = type->asSet() Feature
validateFeatureEndIsConstant Public A Feature with isEnd = true and isVariable = true must have isConstant = true. OCL2.0: isEnd and isVariable implies isConstant Feature
validateFeatureEndMultiplicity Public If a Feature has isEnd = true, then it must have multiplicity 1..1. OCL2.0: isEnd implies multiplicities().allSuperTypes()->flatten()-> selectByKind(MultiplicityRange)->exists(hasBounds(1,1)) Feature
validateFeatureEndNoDirection Public A Feature with isEnd = true must have no direction. OCL2.0: isEnd implied direction = null Feature
validateFeatureEndNotDerivedAbstractCompositeOrPortion Public A Feature with isEnd = true must have all of isDerived = false, isAbstract = false, isComposite = false, and isPortion = false. OCL2.0: isEnd implies not (isDerived or isAbstract or isComposite or isPortion) Feature
validateFeatureIsVariable Public A Feature with isVariable = true must have an owningType that directly or indirectly specializes the Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: isVariable implies owningType <> null and owningType.specializes('Occurrences::Occurrence') Feature
validateFeatureMultiplicityDomain Public If a Feature has a multiplicity, then the featuringTypes of the multiplicity must be the same as those of the Feature itself. OCL2.0: multiplicity <> null implies multiplicity.featuringType = featuringType Feature
validateFeatureOwnedCrossSubsetting Public A Feature must have at most one ownedSubsetting that is a CrossSubsetting. OCL2.0: ownedSubsetting->selectByKind(CrossSubsetting)->size() <= 1 Feature
validateFeatureOwnedReferenceSubsetting Public A Feature must have at most one ownedSubsetting that is an ReferenceSubsetting. OCL2.0: ownedSubsetting->selectByKind(ReferenceSubsetting)->size() <= 1 Feature
validateFeaturePortionNotVariable Public No Documentation Provided OCL2.0: isPortion implies not isVariable Feature
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateOccurrenceUsageIndividualDefinition Public An OccurrenceUsage must have at most one occurrenceDefinition with isIndividual = true. OCL2.0: occurrenceDefinition-> selectByKind(OccurrenceDefinition)-> select(isIndividual).size() <= 1 OccurrenceUsage
validateOccurrenceUsageIndividualUsage Public If an OccurrenceUsage has isIndividual = true, then it must have an individualDefinition. OCL2.0: isIndividual implies individualDefinition <> null OccurrenceUsage
validateOccurrenceUsageIsPortion Public If an OccurrenceUsage has a non-null portionKind, then it must have isPortion = true. OCL2.0: portionKind <> null implies isPortion OccurrenceUsage
validateOccurrenceUsagePortionKind Public If an OccurrenceUsage has a non-null portionKind, then its owningType must be an OccurrenceDefinition or an OccurrenceUsage. OCL2.0: portionKind <> null implies owningType <> null and (owningType.oclIsKindOf(OccurrenceDefinition) or owningType.oclIsKindOf(OccurrenceUsage)) OccurrenceUsage
validatePartUsagePartDefinition Public At least one of the itemDefinitions of a PartUsage must be a PartDefinition. OCL2.0: partDefinition->notEmpty() PartUsage
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type
validateUsageIsReferential Public A Usage that is directed, an end feature or has no featuringTypes must be referential. OCL2.0: direction <> null or isEnd or featuringType->isEmpty() implies isReference Usage
validateUsageVariationIsAbstract Public If a Usage is a variation, then it must be abstract. OCL2.0: isVariation implies isAbstract Usage
validateUsageVariationOwnedFeatureMembership Public If a Usage is a variation, then it must not have any ownedFeatureMemberships. OCL2.0: isVariation implies ownedFeatureMembership->isEmpty() Usage
validateUsageVariationSpecialization Public A variation Usage may not specialize any variation Definition or Usage. OCL2.0: isVariation implies not ownedSpecialization.specific->exists( oclIsKindOf(Definition) and oclAsType(Definition).isVariation or oclIsKindOf(Usage) and oclAsType(Usage).isVariation) Usage

Properties

Name Visibility Type Default Description Owner
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
allocationDefinition Public AllocationDefinition [0..*] {derived} {ordered} {redefines: ConnectionUsage.connectionDefinition} {many-to-many:AllocationUsage.definedAllocation} null The AllocationDefinitions that are the types of this AllocationUsage. AllocationUsage
association Public Association [0..*] {derived} {ordered} {redefines: Feature.type} {redefined by: ConnectionUsage.connectionDefinition} {many-to-many:Connector.typedConnector} null The Associations that type the Connector. Connector
chainingFeature Public Feature [0..*] {derived} {ordered} {many-to-many:Feature.chainedFeature} null The Feature that are chained together to determine the values of this Feature, derived from the chainingFeatures of the ownedFeatureChainings of this Feature, in the same order. The values of a Feature with chainingFeatures are the same as values of the last Feature in the chain, which can be found by starting with the values of the first Feature (for each instance of the domain of the original Feature), then using each of those as domain instances to find the values of the second Feature in chainingFeatures, and so on, to values of the last Feature. Feature
connectionDefinition Public AssociationStructure [0..*] {derived} {ordered} {redefines: Connector.association} {redefined by: AllocationUsage.allocationDefinition} {subsetted: ItemUsage.itemDefinition} {many-to-many:ConnectionUsage.definedConnection} null The AssociationStructures that are the types of this ConnectionUsage. Nominally, these are , but other kinds of Kernel AssociationStructures are also allowed, to permit use of AssociationStructures from the Kernel Model Libraries ConnectionUsage
connectorEnd Public Feature [0..*] {derived} {ordered} {redefines: Type.endFeature} {many-to-many:Connector.featuringConnector} null The endFeatures of a Connector, which redefine the endFeatures of the associations of the Connector. The connectorEnds determine via ReferenceSubsetting Relationships which Features are related by the Connector. Connector
crossFeature Public Feature [0..1] {derived} null The second chainingFeature of the crossedFeature of the ownedCrossSubsetting of this Feature, if it has one. Semantically, the values of the crossFeature of an end Feature must include all values of the end Feature obtained when navigating from values of the other end Features of the same owningType. Feature
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
defaultFeaturingType Public Type [0..1] {derived} null The innermost Type that is a common direct or indirect featuringType of the relatedFeatures, such that, if it exists and was the featuringType of this Connector, the Connector would satisfy the checkConnectorTypeFeaturing constraint. Connector
definition Public Classifier [0..*] {derived} {ordered} {redefines: Feature.type} {redefined by: OccurrenceUsage.occurrenceDefinition} {many-to-many:Usage.definedUsage} null The Classifiers that are the types of this Usage. Nominally, these are Definitions, but other kinds of Kernel Classifiers are also allowed, to permit use of Classifiers from the Kernel Model Libraries. Usage
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
directedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Usage.usageWithDirectedUsage} null The usages of this Usage that are directedFeatures. Usage
direction Public FeatureDirectionKind [0..1] null Indicates how values of this Feature are determined or used (as specified for the FeatureDirectionKind). Feature
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {redefined by: Connector.connectorEnd} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
endOwningType Public Type [0..1] {derived} {subsetted: A_endFeature_typeWithEndFeature.typeWithEndFeature} {subsetted: Feature.owningType} null The Type that is related to this Feature by an EndFeatureMembership in which the Feature is an ownedMemberFeature. Feature
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
featureTarget Public Feature [1..1] {derived} null The last of the chainingFeatures of this Feature, if it has any. Otherwise, this Feature itself. Feature
featuringType Public Type [0..*] {derived} {ordered} {many-to-many:Feature.featureOfType} null Types that feature this Feature, such that any instance in the domain of the Feature must be classified by all of these Types, including at least all the featuringTypes of its typeFeaturings. If the Feature is chained, then the featuringTypes of the first Feature in the chain are also featuringTypes of the chained Feature. Feature
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
individualDefinition Public OccurrenceDefinition [0..1] {derived} {subsetted: OccurrenceUsage.occurrenceDefinition} null The at most one occurrenceDefinition that has isIndividual = true. OccurrenceUsage
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isComposite Public Boolean [1..1] false Whether the Feature is a composite feature of its featuringType. If so, the values of the Feature cannot exist after its featuring instance no longer does and cannot be values of another composite feature that is not on the same featuring instance. Feature
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isConstant Public Boolean [1..1] false If isVariable is true, then whether the value of this Feature nevertheless does not change over all snapshots of its owningType. Feature
isDerived Public Boolean [1..1] false Whether the values of this Feature can always be computed from the values of other Features. Feature
isEnd Public Boolean [1..1] false Whether or not this Feature is an end Feature. An end Feature always has multiplicity 1, mapping each of its domain instances to a single co-domain instance. However, it may have a crossFeature, in which case values of the crossFeature must be the same as those found by navigation across instances of the owningType from values of other end Features to values of this Feature. If the owningType has n end Features, then the multiplicity, ordering, and uniqueness declared for the crossFeature of any one of these end Features constrains the cardinality, ordering, and uniqueness of the collection of values of that Feature reached by navigation when the values of the other n-1 end Features are held fixed. Feature
isImplied Public Boolean [1..1] false Whether this Relationship was generated by tooling to meet semantic rules, rather than being directly created by a modeler. Relationship
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isIndividual Public Boolean [1..1] false Whether this OccurrenceUsage represents the usage of the specific individual represented by its individualDefinition. OccurrenceUsage
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isOrdered Public Boolean [1..1] false Whether an order exists for the values of this Feature or not. Feature
isPortion Public Boolean [1..1] false Whether the values of this Feature are contained in the space and time of instances of the domain of the Feature and represent the same thing as those instances. Feature
isReference Public Boolean [1..1] {derived} null Whether this Usage is a referential Usage, that is, it has isComposite = false. Usage
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
isUnique Public Boolean [1..1] true Whether or not values for this Feature must have no duplicates or not. Feature
isVariable Public Boolean [1..1] {redefined by: Usage.mayTimeVary} false Whether the value of this Feature might vary over time. That is, whether the Feature may have a different value for each snapshot of an owningType that is an Occurrence. Feature
isVariation Public Boolean [1..1] null Whether this Usage is for a variation point or not. If true, then all the memberships of the Usage must be VariantMemberships. Usage
itemDefinition Public Structure [0..*] {derived} {ordered} {subsetted: OccurrenceUsage.occurrenceDefinition} {many-to-many:ItemUsage.definedItem} null The Structures that are the definitions of this ItemUsage. Nominally, these are ItemDefinitions, but other kinds of Kernel Structures are also allowed, to permit use of Structures from the Kernel Library. ItemUsage
mayTimeVary Public Boolean [1..1] {derived} {redefines: Feature.isVariable} null Whether this Usage may be time varying (that is, whether it is featured by the snapshots of its owningType, rather than being featured by the owningType itself). However, if isConstant is also true, then the value of the Usage is nevertheless constant over the entire duration of an instance of its owningType (that is, it has the same value on all snapshots). The property mayTimeVary redefines the KerML property Feature::isVariable, making it derived. The property isConstant is inherited from Feature. Usage
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
nestedAction Public ActionUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ActionUsages that are nestedUsages of this Usage. Usage
nestedAllocation Public AllocationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConnection} null The AllocationUsages that are nestedUsages of this Usage. Usage
nestedAnalysisCase Public AnalysisCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The AnalysisCaseUsages that are nestedUsages of this Usage. Usage
nestedAttribute Public AttributeUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The code>AttributeUsages that are nestedUsages of this Usage. Usage
nestedCalculation Public CalculationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAction} null The CalculationUsage that are nestedUsages of this Usage. Usage
nestedCase Public CaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCalculation} null The CaseUsages that are nestedUsages of this Usage. Usage
nestedConcern Public ConcernUsage [0..*] {derived} {subsetted: Usage.nestedRequirement} null The ConcernUsages that are nestedUsages of this Usage. Usage
nestedConnection Public ConnectorAsUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The ConnectorAsUsages that are nestedUsages of this Usage. Note that this list includes BindingConnectorAsUsages, SuccessionAsUsages, and FlowConnectionUsages because these are ConnectorAsUsages even though they are not ConnectionUsages. Usage
nestedConstraint Public ConstraintUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ConstraintUsages that are nestedUsages of this Usage. Usage
nestedEnumeration Public EnumerationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAttribute} null The code>EnumerationUsages that are nestedUsages of this Usage. Usage
nestedFlow Public FlowUsage [0..*] {derived} {subsetted: Usage.nestedConnection} null The code>FlowUsages that are nestedUsages of this Usage. Usage
nestedInterface Public InterfaceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConnection} null The InterfaceUsages that are nestedUsages of this Usage. Usage
nestedItem Public ItemUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ItemUsages that are nestedUsages of this Usage. Usage
nestedMetadata Public MetadataUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedItem} null The MetadataUsages that are nestedUsages of this of this Usage. Usage
nestedOccurrence Public OccurrenceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The OccurrenceUsages that are nestedUsages of this Usage. Usage
nestedPart Public PartUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedItem} null The PartUsages that are nestedUsages of this Usage. Usage
nestedPort Public PortUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The PortUsages that are nestedUsages of this Usage. Usage
nestedReference Public ReferenceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The ReferenceUsages that are nestedUsages of this Usage. Usage
nestedRendering Public RenderingUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedPart} null The RenderingUsages that are nestedUsages of this Usage. Usage
nestedRequirement Public RequirementUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConstraint} null The RequirementUsages that are nestedUsages of this Usage. Usage
nestedState Public StateUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAction} null The StateUsages that are nestedUsages of this Usage. Usage
nestedTransition Public TransitionUsage [0..*] {derived} {subsetted: Usage.nestedUsage} null The TransitionUsages that are nestedUsages of this Usage. Usage
nestedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.ownedFeature} null The Usages that are ownedFeatures of this Usage. Usage
nestedUseCase Public UseCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The UseCaseUsages that are nestedUsages of this Usage. Usage
nestedVerificationCase Public VerificationCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The VerificationCaseUsages that are nestedUsages of this Usage. Usage
nestedView Public ViewUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedPart} null The ViewUsages that are nestedUsages of this Usage. Usage
nestedViewpoint Public ViewpointUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedRequirement} null The ViewpointUsages that are nestedUsages of this Usage. Usage
occurrenceDefinition Public Class [0..*] {derived} {ordered} {redefines: Usage.definition} {many-to-many:OccurrenceUsage.definedOccurrence} null The Classes that are the types of this OccurrenceUsage. Nominally, these are OccurrenceDefinitions, but other kinds of kernel Classes are also allowed, to permit use of Classes from the Kernel Model Libraries. OccurrenceUsage
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedCrossSubsetting Public CrossSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a CrossSubsetting}, for which the Feature is the crossingFeature. Feature
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureChaining Public FeatureChaining [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Feature that are FeatureChainings, for which the Feature will be the featureChained. Feature
ownedFeatureInverting Public FeatureInverting [0..*] {composite} {derived} {subsetted: A_invertingFeatureInverting_featureInverted.invertingFeatureInverting} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are FeatureInvertings and for which the Feature is the featureInverted. Feature
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedRedefinition Public Redefinition [0..*] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The ownedSubsettings of this Feature that are Redefinitions, for which the Feature is the redefiningFeature. Feature
ownedReferenceSubsetting Public ReferenceSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a ReferenceSubsetting, for which the Feature is the referencingFeature. Feature
ownedRelatedElement Public Element [0..*] {composite} {ordered} {subsetted: Relationship.relatedElement} null The relatedElements of this Relationship that are owned by the Relationship. Relationship
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedSubsetting Public Subsetting [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} {subsetted: A_subsettingFeature_subsetting.subsetting} null The ownedSpecializations of this Feature that are Subsettings, for which the Feature is the subsettingFeature. Feature
ownedTypeFeaturing Public TypeFeaturing [0..*] {composite} {derived} {ordered} {subsetted: A_featureOfType_typeFeaturing.typeFeaturing} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are TypeFeaturings and for which the Feature is the featureOfType. Feature
ownedTyping Public FeatureTyping [0..*] {composite} {derived} {ordered} {subsetted: Type.ownedSpecialization} {subsetted: A_typing_typedFeature.typing} null The ownedSpecializations of this Feature that are FeatureTypings, for which the Feature is the typedFeature. Feature
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningDefinition Public Definition [0..1] {derived} {subsetted: Feature.owningType} null The Definition that owns this Usage (if any). Usage
owningFeatureMembership Public FeatureMembership [0..1] {derived} {subsetted: Element.owningMembership} null The FeatureMembership that owns this Feature as an ownedMemberFeature, determining its owningType. Feature
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelatedElement Public Element [0..1] {subsetted: Relationship.relatedElement} null The relatedElement of this Relationship that owns the Relationship, if any. Relationship
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
owningType Public Type [0..1] {derived} {subsetted: A_typeWithFeature_feature.typeWithFeature} {subsetted: Element.owningNamespace} {subsetted: Feature.featuringType} null The Type that is the owningType of the owningFeatureMembership of this Feature. Feature
owningUsage Public Usage [0..1] {derived} {subsetted: Feature.owningType} null The Usage in which this Usage is nested (if any). Usage
partDefinition Public PartDefinition [0..*] {derived} {ordered} {subsetted: ItemUsage.itemDefinition} {many-to-many:PartUsage.definedPart} null The itemDefinitions of this PartUsage that are PartDefinitions. PartUsage
portionKind Public PortionKind [0..1] null The kind of temporal portion (time slice or snapshot) is represented by this OccurrenceUsage. If portionKind is not null, then the owningType of the OccurrenceUsage must be non-null, and the OccurrenceUsage represents portions of the featuring instance of the owningType. OccurrenceUsage
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
relatedElement Public Element [0..*] {derived} {ordered} {redefined by: Connector.relatedFeature} {many-to-many:Relationship.relationship} null The Elements that are related by this Relationship, derived as the union of the source and target Elements of the Relationship. Relationship
relatedFeature Public Feature [0..*] {derived} {ordered} {redefines: Relationship.relatedElement} {many-to-many:Connector.connector} null The Features that are related by this Connector considered as a Relationship and that restrict the links it identifies, given by the referenced Features of the connectorEnds of the Connector. Connector
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
source Public Element [0..*] {ordered} {redefined by: Connector.sourceFeature} {subsetted: Relationship.relatedElement} {many-to-many:Relationship.sourceRelationship} null The relatedElements from which this Relationship is considered to be directed. Relationship
sourceFeature Public Feature [0..1] {derived} {ordered} {redefines: Relationship.source} {subsetted: Connector.relatedFeature} null The source relatedFeature for this Connector. It is the first relatedFeature. Connector
target Public Element [0..*] {ordered} {redefined by: Connector.targetFeature} {subsetted: Relationship.relatedElement} {many-to-many:Relationship.targetRelationship} null The relatedElements to which this Relationship is considered to be directed. Relationship
targetFeature Public Feature [0..*] {derived} {ordered} {redefines: Relationship.target} {subsetted: Connector.relatedFeature} {many-to-many:Connector.targetConnector} null The target relatedFeatures for this Connector. This includes all the relatedFeatures other than the sourceFeature. Connector
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
type Public Type [0..*] {derived} {ordered} {redefined by: Usage.definition} {many-to-many:Feature.typedFeature} null Types that restrict the values of this Feature, such that the values must be instances of all the types. The types of a Feature are derived from its typings and the types of its subsettings. If the Feature is chained, then the types of the last Feature in the chain are also types of the chained Feature. Feature
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type
usage Public Usage [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Usage.featuringUsage} null The Usages that are features of this Usage (not necessarily owned). Usage
variant Public Usage [0..*] {derived} {subsetted: Namespace.ownedMember} null The Usages which represent the variants of this Usage as a variation point Usage, if isVariation = true. If isVariation = false, then there must be no variants. Usage
variantMembership Public VariantMembership [0..*] {composite} {derived} {subsetted: Namespace.ownedMembership} null The ownedMemberships of this Usage that are VariantMemberships. If isVariation = true, then this must be all memberships of the Usage. If isVariation = false, then variantMembershipmust be empty. Usage

AnalysisCaseDefinition [Class]

Features

Name Description
Fully Qualified Name SysML::Systems::AnalysisCases::AnalysisCaseDefinition
Visibility Public
Definition An AnalysisCaseDefinition is a CaseDefinition for the case of carrying out an analysis.
Is Abstract FALSE
Generalizations CaseDefinition
Specializations
Containers

Rules

Name Visibilty Description Specification Owner
checkActionDefinitionSpecialization Public An ActionDefinition must directly or indirectly specialize the ActionDefinition Actions::Action from the Systems Model Library. OCL2.0: specializesFromLibrary('Actions::Action') ActionDefinition
checkAnalysisCaseDefinitionSpecialization Public An AnalysisCaseDefinition must directly or indirectly specialize the base AnalysisCaseDefinition AnalysisCases::AnalysisCase from the Systems Model Library. OCL2.0: specializesFromLibrary('AnalysisCases::AnalysisCase') AnalysisCaseDefinition
checkBehaviorSpecialization Public A Behavior must directly or indirectly specialize the base Behavior Performances::Performance from the Kernel Semantic Library. English: specializesFromLibrary('Performances::Performance') Behavior
checkCalculationDefinitionSpecialization Public A CalculationDefinition must directly or indirectly specialize the CalculationDefinition Calculations::Calculation from the Systems Model Library. OCL2.0: specializesFromLibrary('Calculations::Calculation') CalculationDefinition
checkCaseDefinitionSpecialization Public A CaseDefinition must directly or indirectly specialize the base CaseDefinition Cases::Case> from the Systems Model Library. OCL2.0: specializesFromLibrary('Cases::Case') CaseDefinition
checkClassSpecialization Public A Class must directly or indirectly specialize the base Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Occurrences::Occurrence') Class
checkFunctionResultBindingConnector Public If a Function has an Expression owned via a ResultExpressionMembership, then the owning Function must also own a BindingConnector between its result parameter and the result parameter of the result Expression. OCL2.0: ownedMembership.selectByKind(ResultExpressionMembership)-> forAll(mem | ownedFeature.selectByKind(BindingConnector)-> exists(binding | binding.relatedFeature->includes(result) and binding.relatedFeature->includes(mem.ownedResultExpression.result))) Function
checkFunctionSpecialization Public A Function must directly or indirectly specialize the base Function Performances::Evaluation from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::Evaluation') Function
checkOccurrenceDefinitionIndividualSpecialization Public An OccurrenceDefinition with isIndividual = true must directly or indirectly specialize Occurrences::Life from the Kernel Semantic Library. OCL2.0: isIndividual implies specializesFromLibrary('Occurrences::Life') OccurrenceDefinition
checkOccurrenceDefinitionMultiplicitySpecialization Public An OccurrenceDefinition with isIndividual = true must have a multiplicity that specializes Base::zeroOrOne from the Kernel Semantic Library. OCL2.0: isIndividual implies multiplicity <> null and multiplicity.specializesFromLibrary('Base::zeroOrOne') OccurrenceDefinition
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
deriveActionDefinitionAction Public The actions of a ActionDefinition are those of its usages that are ActionUsages. OCL2.0: action = usage->selectByKind(ActionUsage) ActionDefinition
deriveAnalysisCaseDefinitionResultExpression Public The resultExpression of a AnalysisCaseDefinition is the ownedResultExpression of its ResultExpressionMembership, if any. OCL2.0: resultExpression = let results : OrderedSet(ResultExpressionMembership) = featureMembersip-> selectByKind(ResultExpressionMembership) in if results->isEmpty() then null else results->first().ownedResultExpression endif AnalysisCaseDefinition
deriveBehaviorStep Public The steps of a Behavior are its features that are Steps. OCL2.0: step = feature->selectByKind(Step) Behavior
deriveCalculationUsageCalculation Public The calculations of a CalculationDefinition are those of its actions that are CalculationUsages. OCL2.0: calculation = action->selectByKind(CalculationUsage) CalculationDefinition
deriveCaseDefinitionActorParameter Public The actorParameters of a CaseDefinition are the ownedActorParameters of the ActorMemberships of the CaseDefinition. OCL2.0: actorParameter = featureMembership-> selectByKind(ActorMembership). ownedActorParameter CaseDefinition
deriveCaseDefinitionObjectiveRequirement Public The objectiveRequirement of a CaseDefinition is the ownedObjectiveRequirement of its ObjectiveMembership, if any. OCL2.0: objectiveRequirement = let objectives: OrderedSet(RequirementUsage) = featureMembership-> selectByKind(ObjectiveMembership). ownedRequirement in if objectives->isEmpty() then null else objectives->first().ownedObjectiveRequirement endif CaseDefinition
deriveCaseDefinitionSubjectParameter Public The subjectParameter of a CaseDefinition is the ownedSubjectParameter of its SubjectMembership (if any). OCL2.0: subjectParameter = let subjectMems : OrderedSet(SubjectMembership) = featureMembership->selectByKind(SubjectMembership) in if subjectMems->isEmpty() then null else subjectMems->first().ownedSubjectParameter endif CaseDefinition
deriveClassifierOwnedSubclassification Public The ownedSubclassifications of a Classifier are its ownedSpecializations that are Subclassifications. OCL2.0: ownedSubclassification = ownedSpecialization->selectByKind(Subclassification) Classifier
deriveDefinitionDirectedUsage Public The directedUsages of a Definition are all its directedFeatures that are Usages. OCL2.0: directedUsage = directedFeature->selectByKind(Usage) Definition
deriveDefinitionOwnedAction Public The ownedActions of a Definition are all its ownedUsages that are ActionUsages. OCL2.0: ownedAction = ownedUsage->selectByKind(ActionUsage) Definition
deriveDefinitionOwnedAllocation Public The ownedAllocations of a Definition are all its ownedUsages that are AllocationUsages. OCL2.0: ownedAllocation = ownedUsage->selectByKind(AllocationUsage) Definition
deriveDefinitionOwnedAnalysisCase Public The ownedAnalysisCases of a Definition are all its ownedUsages that are AnalysisCaseUsages. OCL2.0: ownedAnalysisCase = ownedUsage->selectByKind(AnalysisCaseUsage) Definition
deriveDefinitionOwnedAttribute Public The ownedAttributes of a Definition are all its ownedUsages that are AttributeUsages. OCL2.0: ownedAttribute = ownedUsage->selectByKind(AttributeUsage) Definition
deriveDefinitionOwnedCalculation Public The ownedCalculations of a Definition are all its ownedUsages that are CalculationUsages. OCL2.0: ownedCalculation = ownedUsage->selectByKind(CalculationUsage) Definition
deriveDefinitionOwnedCase Public The ownedCases of a Definition are all its ownedUsages that are CaseUsages. OCL2.0: ownedCase = ownedUsage->selectByKind(CaseUsage) Definition
deriveDefinitionOwnedConcern Public The ownedConcerns of a Definition are all its ownedUsages that are ConcernUsages. OCL2.0: ownedConcern = ownedUsage->selectByKind(ConcernUsage) Definition
deriveDefinitionOwnedConnection Public The ownedConnections of a Definition are all its ownedUsages that are ConnectorAsUsages. OCL2.0: ownedConnection = ownedUsage->selectByKind(ConnectorAsUsage) Definition
deriveDefinitionOwnedConstraint Public The ownedConstraints of a Definition are all its ownedUsages that are ConstraintUsages. OCL2.0: ownedConstraint = ownedUsage->selectByKind(ConstraintUsage) Definition
deriveDefinitionOwnedEnumeration Public The ownedEnumerations of a Definition are all its ownedUsages that are EnumerationUsages. OCL2.0: ownedEnumeration = ownedUsage->selectByKind(EnumerationUsage) Definition
deriveDefinitionOwnedFlow Public The ownedFlows of a Definition are all its ownedUsages that are FlowUsages. OCL2.0: ownedFlow = ownedUsage->selectByKind(FlowConnectionUsage) Definition
deriveDefinitionOwnedInterface Public The ownedInterfaces of a Definition are all its ownedUsages that are InterfaceUsages. OCL2.0: ownedInterface = ownedUsage->selectByKind(ReferenceUsage) Definition
deriveDefinitionOwnedItem Public The ownedItems of a Definition are all its ownedUsages that are ItemUsages. OCL2.0: ownedItem = ownedUsage->selectByKind(ItemUsage) Definition
deriveDefinitionOwnedMetadata Public The ownedMetadata of a Definition are all its ownedUsages that are MetadataUsages. OCL2.0: ownedMetadata = ownedUsage->selectByKind(MetadataUsage) Definition
deriveDefinitionOwnedOccurrence Public The ownedOccurrences of a Definition are all its ownedUsages that are OccurrenceUsages. OCL2.0: ownedOccurrence = ownedUsage->selectByKind(OccurrenceUsage) Definition
deriveDefinitionOwnedPart Public The ownedParts of a Definition are all its ownedUsages that are PartUsages. OCL2.0: ownedPart = ownedUsage->selectByKind(PartUsage) Definition
deriveDefinitionOwnedPort Public The ownedPorts of a Definition are all its ownedUsages that are PortUsages. OCL2.0: ownedPort = ownedUsage->selectByKind(PortUsage) Definition
deriveDefinitionOwnedReference Public The ownedReferences of a Definition are all its ownedUsages that are ReferenceUsages. OCL2.0: ownedReference = ownedUsage->selectByKind(ReferenceUsage) Definition
deriveDefinitionOwnedRendering Public The ownedRenderings of a Definition are all its ownedUsages that are RenderingUsages. OCL2.0: ownedRendering = ownedUsage->selectByKind(RenderingUsage) Definition
deriveDefinitionOwnedRequirement Public The ownedRequirements of a Definition are all its ownedUsages that are RequirementUsages. OCL2.0: ownedRequirement = ownedUsage->selectByKind(RequirementUsage) Definition
deriveDefinitionOwnedState Public The ownedStates of a Definition are all its ownedUsages that are StateUsages. OCL2.0: ownedState = ownedUsage->selectByKind(StateUsage) Definition
deriveDefinitionOwnedTransition Public The ownedTransitions of a Definition are all its ownedUsages that are TransitionUsages. OCL2.0: ownedTransition = ownedUsage->selectByKind(TransitionUsage) Definition
deriveDefinitionOwnedUsage Public The ownedUsages of a Definition are all its ownedFeatures that are Usages. OCL2.0: ownedUsage = ownedFeature->selectByKind(Usage) Definition
deriveDefinitionOwnedUseCase Public The ownedUseCases of a Definition are all its ownedUsages that are UseCaseUsages. OCL2.0: ownedUseCase = ownedUsage->selectByKind(UseCaseUsage) Definition
deriveDefinitionOwnedVerificationCase Public The ownedValidationCases of a Definition are all its ownedUsages that are ValidationCaseUsages. OCL2.0: ownedVerificationCase = ownedUsage->selectByKind(VerificationCaseUsage) Definition
deriveDefinitionOwnedView Public The ownedViews of a Definition are all its ownedUsages that are ViewUsages. OCL2.0: ownedView = ownedUsage->selectByKind(ViewUsage) Definition
deriveDefinitionOwnedViewpoint Public The ownedViewpoints of a Definition are all its ownedUsages that are ViewpointUsages. OCL2.0: ownedViewpoint = ownedUsage->selectByKind(ViewpointUsage) Definition
deriveDefinitionUsage Public The usages of a Definition are all its features that are Usages. OCL2.0: usage = feature->selectByKind(Usage) Definition
deriveDefinitionVariant Public The variants of a Definition are the ownedVariantUsages of its variantMemberships. OCL2.0: variant = variantMembership.ownedVariantUsage Definition
deriveDefinitionVariantMembership Public The variantMemberships of a Definition are those ownedMemberships that are VariantMemberships. OCL2.0: variantMembership = ownedMembership->selectByKind(VariantMembership) Definition
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveFunctionResult Public The result parameter of a Function is its parameter owned (possibly in a supertype) via a ReturnParameterMembership (if any). OCL2.0: result = let resultParams : Sequence(Feature) = featureMemberships-> selectByKind(ReturnParameterMembership). ownedMemberParameter in if resultParams->notEmpty() then resultParams->first() else null endif Function
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
validateBehaviorSpecialization Public A Behavior must not specialize a Structure. OCL2.0: ownedSpecialization.general->forAll(not oclIsKindOf(Structure)) Behavior
validateCaseDefinitionOnlyOneObjective Public A CaseDefinition must have at most one featureMembership that is a ObjectiveMembership. OCL2.0: featureMembership-> selectByKind(ObjectiveMembership)-> size() <= 1 CaseDefinition
validateCaseDefinitionOnlyOneSubject Public A CaseDefinition must have at most one featureMembership that is a SubjectMembership. English: featureMembership->selectByKind(SubjectMembership)->size() <= 1 CaseDefinition
validateCaseDefinitionSubjectParameterPosition Public The subjectParameter of a CaaseDefinition must be its first input. OCL2.0: input->notEmpty() and input->first() = subjectParameter CaseDefinition
validateClassifierMultiplicityDomain Public If a Classifier has a multiplicity, then the multiplicity must have no featuringTypes (meaning that its domain is implicitly Base::Anything). OCL2.0: multiplicity <> null implies multiplicity.featuringType->isEmpty() Classifier
validateClassSpecialization Public A Class must not specialize a DataType and it can only specialize an Association if it is also itself a kind of Association (such as an AssociationStructure or Interaction). OCL2.0: ownedSpecialization.general-> forAll(not oclIsKindOf(DataType)) and not oclIsKindOf(Association) implies ownedSpecialization.general-> forAll(not oclIsKindOf(Association)) Class
validateDefinitionVariationIsAbstract Public If a Definition is a variation, then it must be abstract. OCL2.0: isVariation implies isAbstract Definition
validateDefinitionVariationOwnedFeatureMembership Public If a Definition is a variation, then all it must not have any ownedFeatureMemberships. OCL2.0: isVariation implies ownedFeatureMembership->isEmpty() Definition
validateDefinitionVariationSpecialization Public A variation Definition may not specialize any other variation Definition. OCL2.0: isVariation implies not ownedSpecialization.specific->exists( oclIsKindOf(Definition) and oclAsType(Definition).isVariation) Definition
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateFunctionResultExpressionMembership Public A Function must have at most one ResultExpressionMembership. OCL2.0: membership->selectByKind(ResultExpressionMembership)->size() <= 1 Function
validateFunctionResultParameterMembership Public A Function must have exactly one featureMembership (owned or inherited) that is a ResultParameterMembership. OCL2.0: featureMembership-> selectByKind(ReturnParameterMembership)-> size() = 1 Function
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type

Properties

Name Visibility Type Default Description Owner
action Public ActionUsage [0..*] {derived} {ordered} {subsetted: Behavior.step} {many-to-many:ActionDefinition.featuringActionDefinition} null The ActionUsages that are steps in this ActionDefinition, which define the actions that specify the behavior of the ActionDefinition. ActionDefinition
actorParameter Public PartUsage [0..*] {derived} {ordered} {subsetted: Behavior.parameter} null The parameters of this CaseDefinition that represent actors involved in the case. CaseDefinition
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
calculation Public CalculationUsage [0..*] {derived} {ordered} {subsetted: Function.expression} {many-to-many:CalculationDefinition.featuringCalculationDefinition} null The actions of this CalculationDefinition that are CalculationUsages. CalculationDefinition
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {redefined by: Behavior.parameter} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
directedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Definition.definitionWithDirectedUsage} null The usages of this Definition that are directedFeatures. Definition
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
expression Public Expression [0..*] {derived} {subsetted: Behavior.step} {many-to-many:Function.computedFunction} null The Expressions that are steps in the calculation of the result of this Function. Function
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isIndividual Public Boolean [1..1] false Whether this OccurrenceDefinition is constrained to represent at most one thing. OccurrenceDefinition
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isModelLevelEvaluable Public Boolean [1..1] {derived} null Whether this Function can be used as the function of a model-level evaluable InvocationExpression. Certain Functions from the Kernel Functions Library are considered to have isModelLevelEvaluable = true. For all other Functions it is false. Note: See the specification of the KerML concrete syntax notation for Expressions for an identification of which library Functions are model-level evaluable. Function
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
isVariation Public Boolean [1..1] null Whether this Definition is for a variation point or not. If true, then all the memberships of the Definition must be VariantMemberships. Definition
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
objectiveRequirement Public RequirementUsage [0..1] {derived} {ordered} {subsetted: Definition.usage} null The RequirementUsage representing the objective of this CaseDefinition. CaseDefinition
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAction Public ActionUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedOccurrence} null The ActionUsages that are ownedUsages of this Definition. Definition
ownedAllocation Public AllocationUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedConnection} null The AllocationUsages that are ownedUsages of this Definition. Definition
ownedAnalysisCase Public AnalysisCaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCase} null The AnalysisCaseUsages that are ownedUsages of this Definition. Definition
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedAttribute Public AttributeUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The AttributeUsages that are ownedUsages of this Definition. Definition
ownedCalculation Public CalculationUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedAction} null The CalculationUsages that are ownedUsages of this Definition. Definition
ownedCase Public CaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCalculation} null The code>CaseUsages that are ownedUsages of this Definition. Definition
ownedConcern Public ConcernUsage [0..*] {derived} {subsetted: Definition.ownedRequirement} null The ConcernUsages that are ownedUsages of this Definition. Definition
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedConnection Public ConnectorAsUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The ConnectorAsUsages that are ownedUsages of this Definition. Note that this list includes BindingConnectorAsUsages, SuccessionAsUsages, and FlowUsages because these are ConnectorAsUsages even though they are not ConnectionUsages. Definition
ownedConstraint Public ConstraintUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedOccurrence} null The ConstraintUsages that are ownedUsages of this Definition. Definition
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedEnumeration Public EnumerationUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedAttribute} null The EnumerationUsages that are ownedUsages of this Definition. Definition
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedFlow Public FlowUsage [0..*] {derived} {subsetted: Definition.ownedConnection} null The FlowUsages that are ownedUsages of this Definition. Definition
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedInterface Public InterfaceUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedConnection} null The InterfaceUsages that are ownedUsages of this Definition. Definition
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedItem Public ItemUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedOccurrence} null The ItemUsages that are ownedUsages of this Definition. Definition
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedMetadata Public MetadataUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedItem} null The MetadataUsages that are ownedUsages of this Definition. Definition
ownedOccurrence Public OccurrenceUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The OccurrenceUsages that are ownedUsages of this Definition. Definition
ownedPart Public PartUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedItem} null The PartUsages that are ownedUsages of this Definition. Definition
ownedPort Public PortUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The PortUsages that are ownedUsages of this Definition. Definition
ownedReference Public ReferenceUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The ReferenceUsages that are ownedUsages of this Definition. Definition
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedRendering Public RenderingUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedPart} null The RenderingUsages that are ownedUsages of this Definition. Definition
ownedRequirement Public RequirementUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedConstraint} null The RequirementUsages that are ownedUsages of this Definition. Definition
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedState Public StateUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedAction} null The StateUsages that are ownedUsages of this Definition. Definition
ownedSubclassification Public Subclassification [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} null The ownedSpecializations of this Classifier that are Subclassifications, for which this Classifier is the subclassifier. Classifier
ownedTransition Public TransitionUsage [0..*] {derived} {subsetted: Definition.ownedUsage} null The TransitionUsages that are ownedUsages of this Definition. Definition
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
ownedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.ownedFeature} null The Usages that are ownedFeatures of this Definition. Definition
ownedUseCase Public UseCaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCase} null The UseCaseUsages that are ownedUsages of this Definition. Definition
ownedVerificationCase Public VerificationCaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCase} null The VerificationCaseUsages that are ownedUsages of this Definition. Definition
ownedView Public ViewUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedPart} null The ViewUsages that are ownedUsages of this Definition. Definition
ownedViewpoint Public ViewpointUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedRequirement} null The ViewpointUsages that are ownedUsages of this Definition. Definition
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
parameter Public Feature [0..*] {derived} {ordered} {redefines: Type.directedFeature} {many-to-many:Behavior.parameteredBehavior} null The parameters of this Behavior, which are defined as its directedFeatures, whose values are passed into and/or out of a performance of the Behavior. Behavior
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
result Public Feature [1..1] {derived} {subsetted: Type.output} {subsetted: Behavior.parameter} null The object or value that is the result of evaluating the Function. Function
resultExpression Public Expression [0..1] {derived} {subsetted: Function.expression} {subsetted: Type.ownedFeature} null An Expression used to compute the result of the AnalysisCaseDefinition, owned via a ResultExpressionMembership. AnalysisCaseDefinition
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
step Public Step [0..*] {derived} {subsetted: Type.feature} {many-to-many:Behavior.featuringBehavior} null The Steps that make up this Behavior. Behavior
subjectParameter Public Usage [1..1] {derived} {subsetted: Behavior.parameter} null The parameter of this CaseDefinition that represents its subject. CaseDefinition
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type
usage Public Usage [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Definition.featuringDefinition} null The Usages that are features of this Definition (not necessarily owned). Definition
variant Public Usage [0..*] {derived} {subsetted: Namespace.ownedMember} null The Usages which represent the variants of this Definition as a variation point Definition, if isVariation = true. If isVariation = false, the there must be no variants. Definition
variantMembership Public VariantMembership [0..*] {composite} {derived} {subsetted: Namespace.ownedMembership} null The ownedMemberships of this Definition that are VariantMemberships. If isVariation = true, then this must be all ownedMemberships of the Definition. If isVariation = false, then variantMembershipmust be empty. Definition

AnalysisCaseUsage [Class]

Features

Name Description
Fully Qualified Name SysML::Systems::AnalysisCases::AnalysisCaseUsage
Visibility Public
Definition An AnalysisCaseUsage is a Usage of an AnalysisCaseDefinition.
Is Abstract FALSE
Generalizations CaseUsage
Specializations
Containers

Rules

Name Visibilty Description Specification Owner
checkActionUsageOwnedActionSpecialization Public A composite ActionUsage whose owningType is PartDefinition or PartUsage must directly or indirectly specialize the ActionUsage Parts::Part::ownedActions from the Systems Model Library. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(PartDefinition) or owningType.oclIsKindOf(PartUsage)) implies specializesFromLibrary('Parts::Part::ownedActions') ActionUsage
checkActionUsageSpecialization Public An ActionUsage must directly or indirectly specialize the ActionUsage Actions::actions from the Systems Model Library. OCL2.0: specializesFromLibrary('Actions::actions') ActionUsage
checkActionUsageStateActionRedefinition Public An ActionUsage that is the entry, do, or exit Action of a StateDefinition or StateUsage must redefine the entryAction, doAction, or exitAction feature, respectively, of the StateDefinition States::StateAction from the Systems Model Library. OCL2.0: owningFeatureMembership <> null and owningFeatureMembership.oclIsKindOf(StateSubactionMembership) implies let kind : StateSubactionKind = owningFeatureMembership.oclAsType(StateSubactionMembership).kind in if kind = StateSubactionKind::entry then redefinesFromLibrary('States::StateAction::entryAction') else if kind = StateSubactionKind::do then redefinesFromLibrary('States::StateAction::doAction') else redefinesFromLibrary('States::StateAction::exitAction') endif endif ActionUsage
checkActionUsageSubactionSpecialization Public A composite ActionUsage that is a subaction usage must directly or indirectly specialize the ActionUsage Actions::Action::subactions from the Systems Model Library. OCL2.0: isSubactionUsage() implies specializesFromLibrary('Actions::Action::subactions') ActionUsage
checkAnalysisCaseUsageSpecialization Public An AnalysisCaseUsage must directly or indirectly specialize the base AnalysisCaseUsage AnalysisCases::analysisCases from the Systems Model Library. OCL2.0: specializesFromLibrary('AnalysisCases::analysisCases') AnalysisCaseUsage
checkAnalysisCaseUsageSubAnalysisCaseSpecialization Public A composite AnalysisCaseUsage whose owningType is an AnalysisCaseDefinition or AnalysisCaseUsage must specialize the AnalysisCaseUsage AnalysisCases::AnalysisCase::subAnalysisCases from the Systems Model Library. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(AnalysisCaseDefinition) or owningType.oclIsKindOf(AnalysisCaseUsage)) implies specializesFromLibrary('AnalysisCases::AnalysisCase::subAnalysisCases') AnalysisCaseUsage
checkCalculationUsageSpecialization Public A CalculationUsage must specialize directly or indirectly the CalculationUsage Calculations::calculations from the Systems Model Library. OCL2.0: specializesFromLibrary('Calculations::calculations') CalculationUsage
checkCalculationUsageSubcalculationSpecialization Public No Documentation Provided OCL2.0: owningType <> null and (owningType.oclIsKindOf(CalculationDefinition) or owningType.oclIsKindOf(CalculationUsage)) implies specializesFromLibrary('Calculations::Calculation::subcalculations') CalculationUsage
checkCaseUsageSpecialization Public A CaseUsage must directly or indirectly specialize the base CaseUsage Cases::cases from the Systems Model Library. OCL2.0: specializesFromLibrary('Cases::cases') CaseUsage
checkCaseUsageSubcaseSpecialization Public A composite CaseUsage whose owningType is a CaseDefinition or CaseUsage must directly or indirectly specialize the CaseUsage Cases::Case::subcases. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(CaseDefinition) or owningType.oclIsKindOf(CaseUsage)) implies specializesFromLibrary('Cases::Case::subcases') CaseUsage
checkExpressionResultBindingConnector Public If an Expression has an Expression owned via a ResultExpressionMembership, then the owning Expression must also own a BindingConnector between its result parameter and the result parameter of the result Expression. OCL2.0: ownedMembership.selectByKind(ResultExpressionMembership)-> forAll(mem | ownedFeature.selectByKind(BindingConnector)-> exists(binding | binding.relatedFeature->includes(result) and binding.relatedFeature->includes(mem.ownedResultExpression.result))) Expression
checkExpressionSpecialization Public An Expression must directly or indirectly specialize the base Expression Performances::evaluations from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::evaluations') Expression
checkExpressionTypeFeaturing Public If this Expression is owned by a FeatureValue, then it must have the same featuringTypes as the featureWithValue of the FeatureValue. OCL2.0: owningMembership <> null and owningMembership.oclIsKindOf(FeatureValue) implies let featureWithValue : Feature = owningMembership.oclAsType(FeatureValue).featureWithValue in featuringType = featureWithValue.featuringType Expression
checkFeatureCrossingSpecialization Public If this Feature has isEnd = true and ownedCrossFeature returns a non-null value, then the crossFeature of the Feature must be the Feature returned from ownedCrossFeature (which implies that this Feature has an appropriate ownedCrossSubsetting to realize this). OCL2.0: ownedCrossFeature() <> null implies crossFeature = ownedCrossFeature() Feature
checkFeatureDataValueSpecialization Public If a Feature has an ownedTyping relationship to a DataType, then it must directly or indirectly specialize Base::dataValues from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(DataType)) implies specializesFromLibrary('Base::dataValues') Feature
checkFeatureEndRedefinition Public If a Feature has isEnd = true and an owningType that is not empty, then, for each direct supertype of its owningType, it must redefine the endFeature at the same position, if any. OCL2.0: isEnd and owningType <> null implies let i : Integer = owningType.ownedEndFeature->indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | supertype.endFeature->size() >= i implies redefines(supertype.endFeature->at(i)) Feature
checkFeatureEndSpecialization Public If a Feature has isEnd = true and an owningType that is an Association or a Connector, then it must directly or indirectly specialize Links::Link::participant from the Kernel Semantic Library. OCL2.0: isEnd and owningType <> null and (owningType.oclIsKindOf(Association) or owningType.oclIsKindOf(Connector)) implies specializesFromLibrary('Links::Link::participant') Feature
checkFeatureFeatureMembershipTypeFeaturing Public If a Feature is owned via a FeatureMembership, then it must have a featuringType for which the operation isFeaturingType returns true. OCL2.0: owningFeatureMembership <> null implies featuringTypes->exists(t | isFeaturingType(t)) Feature
checkFeatureFlowFeatureRedefinition Public If a Feature is the first ownedFeature of a first or second FlowEnd, then it must directly or indirectly specialize either Transfers::Transfer::source::sourceOutput or Transfers::Transfer::target::targetInput, respectively, from the Kernel Semantic Library. OCL2.0: owningType <> null and owningType.oclIsKindOf(FlowEnd) and owningType.ownedFeature->at(1) = self implies let flowType : Type = owningType.owningType in flowType <> null implies let i : Integer = flowType.ownedFeature.indexOf(owningType) in (i = 1 implies redefinesFromLibrary('Transfers::Transfer::source::sourceOutput')) and (i = 2 implies redefinesFromLibrary('Transfers::Transfer::source::targetInput')) Feature
checkFeatureObjectSpecialization Public If a Feature has an ownedTyping relationship to a Structure, then it must directly or indirectly specialize Objects::objects from the Kernel Semantics Library. OCL2.0: ownedTyping.type->exists(selectByKind(Structure)) implies specializesFromLibary('Objects::objects') Feature
checkFeatureOccurrenceSpecialization Public If a Feature has an ownedTyping relationship to a Class, then it must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(Class)) implies specializesFromLibrary('Occurrences::occurrences') Feature
checkFeatureOwnedCrossFeatureRedefinitionSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then, for any end Feature that is redefined by the owning end Feature of this Feature, this Feature must subset the crossFeature of the redefined end Feature, if this exists. OCL2.0: isOwnedCrossFeature() implies ownedSubsetting.subsettedFeature->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature <> null).crossFeature) Feature
checkFeatureOwnedCrossFeatureSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then it must directly or indirectly specialize the types of its owning end Feature. OCL2.0: isOwnedCrossFeature() implies owner.oclAsType(Feature).type->forAll(t | self.specializes(t)) Feature
checkFeatureOwnedCrossFeatureTypeFeaturing Public If this Feature is the ownedCrossFeature of an end Feature, then it must have featuringTypes consistent with the crossing from other end Features of the owningType of its end Feature. OCL2.0: isOwnedCrossFeature() implies let otherEnds : OrderedSet(Feature) = owner.oclAsType(Feature).owningType.endFeature->excluding(self) in if (otherEnds->size() = 1) then featuringType = otherEnds->first().type else featuringType->size() = 1 and featuringType->first().isCartesianProduct() and featuringType->first().asCartesianProduct() = otherEnds.type and featuringType->first().allSupertypes()->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature() <> null).crossFeature().featuringType) endif Feature
checkFeatureParameterRedefinition Public If a Feature is a parameter of an owningType that is a Behavior or Step, but not
  • A result parameter
  • A parameter of an InvocationExpression, with at least one non-implied ownedRedefinition
then, for each direct supertype of its owningType that is also a Behavior or Step, it must redefine the parameter at the same position, if any.
OCL2.0: owningType <> null and not owningFeatureMembership. oclIsKindOf(ReturnParameterMembership) and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step) and (owningType.oclIsKindOf(InvocationExpression) implies not ownedRedefinition->exists(not isImplied)) implies let i : Integer = owningType.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership))-> indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | let ownedParameters : Sequence(Feature) = supertype.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership)) in ownedParameters->size() >= i implies redefines(ownedParameters->at(i)) Feature
checkFeaturePortionSpecialization Public If a Feature has isPortion = true, an ownedTyping relationship to a Class, and an owningType that is a Class or another Feature typed by a Class, then it must directly or indirectly specialize Occurrences::Occurrence::portions from the Kernel Semantic Library. OCL2.0: isPortion and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::portions') Feature
checkFeatureResultRedefinition Public If a Feature is a result parameter of an owningType that is a Function or Expression, then, for each direct supertype of its owningType that is also a Function or Expression, it must redefine the result parameter. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Function) and self = owningType.oclAsType(Function).result or owningType.oclIsKindOf(Expression) and self = owningType.oclAsType(Expression).result) implies owningType.ownedSpecialization.general-> select(oclIsKindOf(Function) or oclIsKindOf(Expression))-> forAll(supertype | redefines( if superType.oclIsKindOf(Function) then superType.oclAsType(Function).result else superType.oclAsType(Expression).result endif) Feature
checkFeatureSpecialization Public A Feature must directly or indirectly specialize Base::things from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::things') Feature
checkFeatureSubobjectSpecialization Public A composite Feature typed by a Structure, and whose ownedType is a Structure or another Feature typed by a Structure must directly or indirectly specialize Objects::Object::subobjects. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Structure)) and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.type->includes(oclIsKindOf(Structure))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureSuboccurrenceSpecialization Public A composite Feature that has an ownedTyping relationship to a Class, and whose ownedType is a Class or another Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureValuationSpecialization Public If a Feature has a FeatureValue, no ownedSpecializations that are not implied, and is not directed, then it must specialize the result of the value Expression of the FeatureValue. OCL2.0: direction = null and ownedSpecializations->forAll(isImplied) implies ownedMembership-> selectByKind(FeatureValue)-> forAll(fv | specializes(fv.value.result)) Feature
checkOccurrenceUsageSnapshotSpecialization Public If an OccurrenceUsage has portionKind = snapshot, then it must directly or indirectly specialize Occurrences::Occurrence::snapshots from the Kernel Semantic Library. OCL2.0: portionKind = PortionKind::snapshot implies specializesFromLibrary('Occurrences::Occurrence::snapshots') OccurrenceUsage
checkOccurrenceUsageSpecialization Public An OccurrenceUsage must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Occurrences::occurrences') OccurrenceUsage
checkOccurrenceUsageSuboccurrenceSpecialization Public A composite OccurrenceUsage, whose ownedType is a Class, another OccurrenceUsage, or any kind of Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(OccurrenceUsage) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKind(Class))) implies specializesFromLibrary('Occurrences::Occurrence::suboccurrences') OccurrenceUsage
checkOccurrenceUsageTimeSliceSpecialization Public If an OccurrenceUsage has portionKind = timeslice, then it must directly or indirectly specialize Occurrences::Occurrence::timeSlices from the Kernel Semantic Library. OCL2.0: portionKind = PortionKind::timeslice implies specializesFromLibrary('Occurrences::Occurrence::timeSlices') OccurrenceUsage
checkStepEnclosedPerformanceSpecialization Public AStep whose owningType is a Behavior or another Step must directly or indirectly specialize the Step Performances::Performance::enclosedPerformance. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step)) implies specializesFromLibrary('Performances::Performance::enclosedPerformance') Step
checkStepOwnedPerformanceSpecialization Public A composite Step whose owningType is a Structure or a Feature typed by a Structure must directly or indirectly specialize the Step Objects::Object::ownedPerformance. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Structure)) implies specializesFromLibrary('Objects::Object::ownedPerformance') Step
checkStepSpecialization Public A Step must directly or indirectly specialize the base Step Performances::performances from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::performances') Step
checkStepSubperformanceSpecialization Public AStep whose owningType is a Behavior or another Step, and which is composite, must directly or indirectly specialize the Step Performances::Performance::subperformance. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step)) and self.isComposite implies specializesFromLibrary('Performances::Performance::subperformance') Step
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
checkUsageVariationDefinitionSpecialization Public If a Usage has an owningVariationDefinition, then it must directly or indirectly specialize that Definition. OCL2.0: owningVariationDefinition <> null implies specializes(owningVariationDefinition) Usage
checkUsageVariationUsageSpecialization Public If a Usage has an owningVariationUsage, then it must directly or indirectly specialize that Usage. OCL2.0: owningVariationUsage <> null implies specializes(owningVariationUsage) Usage
checkUsageVariationUsageTypeFeaturing Public If a Usage has an owningVariationUsage, then it must have the same featuringTypes as that Usage. OCL2.0: owningVariationUsage <> null implies featuringType->asSet() = owningVariationUsage.featuringType->asSet() Usage
deriveAnalysisCaseUsageResultExpression Public The resultExpression of a AnalysisCaseUsage is the ownedResultExpression of its ResultExpressionMembership, if any. OCL2.0: resultExpression = let results : OrderedSet(ResultExpressionMembership) = featureMembersip-> selectByKind(ResultExpressionMembership) in if results->isEmpty() then null else results->first().ownedResultExpression endif AnalysisCaseUsage
deriveCaseUsageActorParameter Public The actorParameters of a CaseUsage are the ownedActorParameters of the ActorMemberships of the CaseUsage. OCL2.0: actorParameter = featureMembership-> selectByKind(ActorMembership). ownedActorParameter CaseUsage
deriveCaseUsageObjectiveRequirement Public The objectiveRequirement of a CaseUsage is the RequirementUsage it owns via an ObjectiveMembership, if any. OCL2.0: objectiveRequirement = let objectives: OrderedSet(RequirementUsage) = featureMembership-> selectByKind(ObjectiveMembership). ownedRequirement in if objectives->isEmpty() then null else objectives->first().ownedObjectiveRequirement endif CaseUsage
deriveCaseUsageSubjectParameter Public The subjectParameter of a CaseUsage is the ownedSubjectParameter of its SubjectMembership (if any). OCL2.0: subjectParameter = let subjects : OrderedSet(SubjectMembership) = featureMembership->selectByKind(SubjectMembership) in if subjects->isEmpty() then null else subjects->first().ownedSubjectParameter endif CaseUsage
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveExpressionIsModelLevelEvaluable Public Whether an Expression isModelLevelEvaluable is determined by the modelLevelEvaluable() operation. OCL2.0: isModelLevelEvaluable = modelLevelEvaluable(Set(Element){}) Expression
deriveExpressionResult Public The result parameter of an Expression is its parameter owned (possibly in a supertype) via a ReturnParameterMembership (if any). OCL2.0: result = let resultParams : Sequence(Feature) = featureMemberships-> selectByKind(ReturnParameterMembership). ownedMemberParameter in if resultParams->notEmpty() then resultParams->first() else null endif Expression
deriveFeatureChainingFeature Public The chainingFeatures of a Feature are the chainingFeatures of its ownedFeatureChainings. OCL2.0: chainingFeature = ownedFeatureChaining.chainingFeature Feature
deriveFeatureCrossFeature Public The crossFeature of a Feature is the second chainingFeature of the crossedFeature of the ownedCrossSubsetting of the Feature, if any. OCL2.0: crossFeature = if ownedCrossSubsetting = null then null else let chainingFeatures: Sequence(Feature) = ownedCrossSubsetting.crossedFeature.chainingFeature in if chainingFeatures->size() < 2 then null else chainingFeatures->at(2) endif Feature
deriveFeatureFeatureTarget Public If a Feature has no chainingFeatures, then its featureTarget is the Feature itself, otherwise the featureTarget is the last of the chainingFeatures. OCL2.0: featureTarget = if chainingFeature->isEmpty() then self else chainingFeature->last() endif Feature
deriveFeatureFeaturingType Public The featuringTypes of a Feature include the featuringTypes of all the typeFeaturings of the Feature. If the Feature has chainingFeatures, then its featuringTypes also include the featuringTypes of the first chainingFeature. OCL2.0: featuringType = let featuringTypes : OrderedSet(Type) = featuring.type->asOrderedSet() in if chainingFeature->isEmpty() then featuringTypes else featuringTypes-> union(chainingFeature->first().featuringType)-> asOrderedSet() endif Feature
deriveFeatureOwnedCrossSubsetting Public The ownedCrossSubsetting of a Feature is the ownedSubsetting that is a CrossSubsetting, if any. OCL2.0: ownedCrossSubsetting = let crossSubsettings: Sequence(CrossSubsetting) = ownedSubsetting->selectByKind(CrossSubsetting) in if crossSubsettings->isEmpty() then null else crossSubsettings->first() endif Feature
deriveFeatureOwnedFeatureChaining Public The ownedFeatureChainings of a Feature are the ownedRelationships that are FeatureChainings. OCL2.0: ownedFeatureChaining = ownedRelationship->selectByKind(FeatureChaining) Feature
deriveFeatureOwnedFeatureInverting Public The ownedFeatureInvertings of a Feature are its ownedRelationships that are FeatureInvertings. OCL2.0: ownedFeatureInverting = ownedRelationship->selectByKind(FeatureInverting)-> select(fi | fi.featureInverted = self) Feature
deriveFeatureOwnedRedefinition Public The ownedRedefinitions of a Feature are its ownedSubsettings that are Redefinitions. OCL2.0: ownedRedefinition = ownedSubsetting->selectByKind(Redefinition) Feature
deriveFeatureOwnedReferenceSubsetting Public The ownedReferenceSubsetting of a Feature is the first ownedSubsetting that is a ReferenceSubsetting (if any). OCL2.0: ownedReferenceSubsetting = let referenceSubsettings : OrderedSet(ReferenceSubsetting) = ownedSubsetting->selectByKind(ReferenceSubsetting) in if referenceSubsettings->isEmpty() then null else referenceSubsettings->first() endif Feature
deriveFeatureOwnedSubsetting Public The ownedSubsettings of a Feature are its ownedSpecializations that are Subsettings. OCL2.0: ownedSubsetting = ownedSpecialization->selectByKind(Subsetting) Feature
deriveFeatureOwnedTypeFeaturing Public The ownedTypeFeaturings of a Feature are its ownedRelationships that are TypeFeaturings and which have the Feature as their featureOfType. OCL2.0: ownedTypeFeaturing = ownedRelationship->selectByKind(TypeFeaturing)-> select(tf | tf.featureOfType = self) Feature
deriveFeatureOwnedTyping Public The ownedTypings of a Feature are its ownedSpecializations that are FeatureTypings. OCL2.0: ownedTyping = ownedGeneralization->selectByKind(FeatureTyping) Feature
deriveFeatureType Public The types of a Feature are the union of the types of its typings and the types of the Features it subsets, with all redundant supertypes removed. If the Feature has chainingFeatures, then the union also includes the types of the last chainingFeature. OCL2.0: type = let types : OrderedSet(Types) = OrderedSet{self}-> -- Note: The closure operation automatically handles circular relationships. closure(typingFeatures()).typing.type->asOrderedSet() in types->reject(t1 | types->exist(t2 | t2 <> t1 and t2.specializes(t1))) Feature
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOccurrenceUsageIndividualDefinition Public The individualDefinition of an OccurrenceUsage is the occurrenceDefinition that is an OccurrenceDefinition with isIndividual = true, if any. OCL2.0: individualDefinition = let individualDefinitions : OrderedSet(OccurrenceDefinition) = occurrenceDefinition-> selectByKind(OccurrenceDefinition)-> select(isIndividual) in if individualDefinitions->isEmpty() then null else individualDefinitions->first() endif OccurrenceUsage
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveStepBehavior Public The behaviors of a Step are all its types that are Behaviors. OCL2.0: behavior = type->selectByKind(Behavior) Step
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
deriveUsageDirectedUsage Public The directedUsages of a Usage are all its directedFeatures that are Usages. OCL2.0: directedUsage = directedFeature->selectByKind(Usage) Usage
deriveUsageIsReference Public A Usage is referential if it is not composite. OCL2.0: isReference = not isComposite Usage
deriveUsageMayTimeVary Public A Usage mayTimeVary if and only if all of the following are true
  • It has an owningType that specializes Occurrences::Occurrence (from the Kernel Semantic Library).
  • It is not a portion.
  • It does not specialize Links::SelfLink or Occurrences::HappensLink (from the Kernel Semantic Library).
  • If isComposite = true, it does not specialize Actions::Action (from the Systems Model Library).
OCL2.0: mayTimeVary = owningType <> null and owningType.specializesFromLibrary('Occurrences::Occurrence') and not ( isPortion or specializesFromLibrary('Links::SelfLink') or specializesFromLibrary('Occurrences::HappensLink') or isComposite and specializesFromLibrary('Actions::Action') ) Usage
deriveUsageNestedAction Public The ownedActions of a Usage are all its ownedUsages that are ActionUsages. OCL2.0: nestedAction = nestedUsage->selectByKind(ActionUsage) Usage
deriveUsageNestedAllocation Public The ownedAllocations of a Usage are all its ownedUsages that are AllocationUsages. OCL2.0: nestedAllocation = nestedUsage->selectByKind(AllocationUsage) Usage
deriveUsageNestedAnalysisCase Public The ownedAnalysisCases of a Usage are all its ownedUsages that are AnalysisCaseUsages. OCL2.0: nestedAnalysisCase = nestedUsage->selectByKind(AnalysisCaseUsage) Usage
deriveUsageNestedAttribute Public The ownedAttributes of a Usage are all its ownedUsages that are AttributeUsages. OCL2.0: nestedAttribute = nestedUsage->selectByKind(AttributeUsage) Usage
deriveUsageNestedCalculation Public The ownedCalculations of a Usage are all its ownedUsages that are CalculationUsages. OCL2.0: nestedCalculation = nestedUsage->selectByKind(CalculationUsage) Usage
deriveUsageNestedCase Public The ownedCases of a Usage are all its ownedUsages that are CaseUsages. OCL2.0: nestedCase = nestedUsage->selectByKind(CaseUsage) Usage
deriveUsageNestedConcern Public The ownedConcerns of a Usage are all its ownedUsages that are ConcernUsages. OCL2.0: nestedConcern = nestedUsage->selectByKind(ConcernUsage) Usage
deriveUsageNestedConnection Public The ownedConnections of a Usage are all its ownedUsages that are ConnectorAsUsages. OCL2.0: nestedConnection = nestedUsage->selectByKind(ConnectorAsUsage) Usage
deriveUsageNestedConstraint Public The ownedConstraints of a Usage are all its ownedUsages that are ConstraintUsages. OCL2.0: nestedConstraint = nestedUsage->selectByKind(ConstraintUsage) Usage
deriveUsageNestedEnumeration Public The ownedEnumerations of a Usage are all its ownedUsages that are EnumerationUsages. OCL2.0: ownedNested = nestedUsage->selectByKind(EnumerationUsage) Usage
deriveUsageNestedFlow Public The ownedFlows of a Usage are all its ownedUsages that are FlowConnectionUsages. OCL2.0: nestedFlow = nestedUsage->selectByKind(FlowConnectionUsage) Usage
deriveUsageNestedInterface Public The ownedInterfaces of a Usage are all its ownedUsages that are InterfaceUsages. OCL2.0: nestedInterface = nestedUsage->selectByKind(ReferenceUsage) Usage
deriveUsageNestedItem Public The ownedItems of a Usage are all its ownedUsages that are ItemUsages. OCL2.0: nestedItem = nestedUsage->selectByKind(ItemUsage) Usage
deriveUsageNestedMetadata Public The ownedMetadata of a Usage are all its ownedUsages that are MetadataUsages. OCL2.0: nestedMetadata = nestedUsage->selectByKind(MetadataUsage) Usage
deriveUsageNestedOccurrence Public The ownedOccurrences of a Usage are all its ownedUsages that are OccurrenceUsages. OCL2.0: nestedOccurrence = nestedUsage->selectByKind(OccurrenceUsage) Usage
deriveUsageNestedPart Public The ownedParts of a Usage are all its ownedUsages that are PartUsages. OCL2.0: nestedPart = nestedUsage->selectByKind(PartUsage) Usage
deriveUsageNestedPort Public The ownedPorts of a Usage are all its ownedUsages that are PortUsages. OCL2.0: nestedPort = nestedUsage->selectByKind(PortUsage) Usage
deriveUsageNestedReference Public The ownedReferences of a Usage are all its ownedUsages that are ReferenceUsages. OCL2.0: nestedReference = nestedUsage->selectByKind(ReferenceUsage) Usage
deriveUsageNestedRendering Public The ownedRenderings of a Usage are all its ownedUsages that are RenderingUsages. OCL2.0: nestedRendering = nestedUsage->selectByKind(RenderingUsage) Usage
deriveUsageNestedRequirement Public The ownedRequirements of a Usage are all its ownedUsages that are RequirementUsages. OCL2.0: nestedRequirement = nestedUsage->selectByKind(RequirementUsage) Usage
deriveUsageNestedState Public The ownedStates of a Usage are all its ownedUsages that are StateUsages. OCL2.0: nestedState = nestedUsage->selectByKind(StateUsage) Usage
deriveUsageNestedTransition Public The ownedTransitions of a Usage are all its ownedUsages that are TransitionUsages. OCL2.0: nestedTransition = nestedUsage->selectByKind(TransitionUsage) Usage
deriveUsageNestedUsage Public The ownedUsages of a Usage are all its ownedFeatures that are Usages. OCL2.0: nestedUsage = ownedFeature->selectByKind(Usage) Usage
deriveUsageNestedUseCase Public The ownedUseCases of a Usage are all its ownedUsages that are UseCaseUsages. OCL2.0: nestedUseCase = nestedUsage->selectByKind(UseCaseUsage) Usage
deriveUsageNestedVerificationCase Public The ownedValidationCases of a Usage are all its ownedUsages that are ValidationCaseUsages. OCL2.0: nestedVerificationCase = nestedUsage->selectByKind(VerificationCaseUsage) Usage
deriveUsageNestedView Public The ownedViews of a Usage are all its ownedUsages that are ViewUsages. OCL2.0: nestedView = nestedUsage->selectByKind(ViewUsage) Usage
deriveUsageNestedViewpoint Public The ownedViewpoints of a Usage are all its ownedUsages that are ViewpointUsages. OCL2.0: nestedViewpoint = nestedUsage->selectByKind(ViewpointUsage) Usage
deriveUsageUsage Public The usages of a Usage are all its features that are Usages. OCL2.0: usage = feature->selectByKind(Usage) Usage
deriveUsageVariant Public The variants of a Usage are the ownedVariantUsages of its variantMemberships. OCL2.0: variant = variantMembership.ownedVariantUsage Usage
deriveUsageVariantMembership Public The variantMemberships of a Usage are those ownedMemberships that are VariantMemberships. OCL2.0: variantMembership = ownedMembership->selectByKind(VariantMembership) Usage
validateCaseUsageOnlyOneObjective Public A CaseUsage must have at most one featureMembership that is a ObjectiveMembership. OCL2.0: featureMembership-> selectByKind(ObjectiveMembership)-> size() <= 1 CaseUsage
validateCaseUsageOnlyOneSubject Public A CaseUsage must have at most one featureMembership that is a SubjectMembership. OCL2.0: featureMembership-> selectByKind(SubjectMembership)-> size() <= 1 CaseUsage
validateCaseUsageSubjectParameterPosition Public The subjectParameter of a CaseUsage must be its first input. OCL2.0: input->notEmpty() and input->first() = subjectParameter CaseUsage
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateExpressionResultExpressionMembership Public An Expression must have at most one ResultExpressionMembership. OCL2.0: membership->selectByKind(ResultExpressionMembership)->size() <= 1 Expression
validateExpressionResultParameterMembership Public An Expression must have exactly one featureMembership (owned or inherited) that is a ResultParameterMembership. OCL2.0: featureMembership-> selectByKind(ReturnParameterMembership)-> size() = 1 Expression
validateFeatureChainingFeatureConformance Public Each chainingFeature (other than the first) must be featured within the previous chainingFeature. OCL2.0: Sequence{2..chainingFeature->size()}->forAll(i | chainingFeature->at(i).isFeaturedWithin(chainingFeature->at(i-1))) Feature
validateFeatureChainingFeatureNotOne Public A Feature must have either no chainingFeatures or more than one. OCL2.0: chainingFeature->size() <> 1 Feature
validateFeatureChainingFeaturesNotSelf Public A Feature cannot be one of its own chainingFeatures. English: chainingFeature->excludes(self) Feature
validateFeatureConstantIsVariable Public A Feature with isConstant = true must have isVariable = true. OCL2.0: isConstant implies isVariable Feature
validateFeatureCrossFeatureSpecialization Public If this Feature has a crossFeature, then, for any Feature that is redefined by this Feature, the crossFeature must specialize the crossFeature of the redefined end Feature, if this exists. OCL2.0: crossFeature <> null implies ownedRedefinition.redefinedFeature.crossFeature-> forAll(f | f <> null implies crossFeature.specializes(f)) Feature
validateFeatureCrossFeatureType Public The crossFeature of a Feature must have the same types as the Feature. OCL2.0: crossFeature <> null implies crossFeature.type->asSet() = type->asSet() Feature
validateFeatureEndIsConstant Public A Feature with isEnd = true and isVariable = true must have isConstant = true. OCL2.0: isEnd and isVariable implies isConstant Feature
validateFeatureEndMultiplicity Public If a Feature has isEnd = true, then it must have multiplicity 1..1. OCL2.0: isEnd implies multiplicities().allSuperTypes()->flatten()-> selectByKind(MultiplicityRange)->exists(hasBounds(1,1)) Feature
validateFeatureEndNoDirection Public A Feature with isEnd = true must have no direction. OCL2.0: isEnd implied direction = null Feature
validateFeatureEndNotDerivedAbstractCompositeOrPortion Public A Feature with isEnd = true must have all of isDerived = false, isAbstract = false, isComposite = false, and isPortion = false. OCL2.0: isEnd implies not (isDerived or isAbstract or isComposite or isPortion) Feature
validateFeatureIsVariable Public A Feature with isVariable = true must have an owningType that directly or indirectly specializes the Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: isVariable implies owningType <> null and owningType.specializes('Occurrences::Occurrence') Feature
validateFeatureMultiplicityDomain Public If a Feature has a multiplicity, then the featuringTypes of the multiplicity must be the same as those of the Feature itself. OCL2.0: multiplicity <> null implies multiplicity.featuringType = featuringType Feature
validateFeatureOwnedCrossSubsetting Public A Feature must have at most one ownedSubsetting that is a CrossSubsetting. OCL2.0: ownedSubsetting->selectByKind(CrossSubsetting)->size() <= 1 Feature
validateFeatureOwnedReferenceSubsetting Public A Feature must have at most one ownedSubsetting that is an ReferenceSubsetting. OCL2.0: ownedSubsetting->selectByKind(ReferenceSubsetting)->size() <= 1 Feature
validateFeaturePortionNotVariable Public No Documentation Provided OCL2.0: isPortion implies not isVariable Feature
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateOccurrenceUsageIndividualDefinition Public An OccurrenceUsage must have at most one occurrenceDefinition with isIndividual = true. OCL2.0: occurrenceDefinition-> selectByKind(OccurrenceDefinition)-> select(isIndividual).size() <= 1 OccurrenceUsage
validateOccurrenceUsageIndividualUsage Public If an OccurrenceUsage has isIndividual = true, then it must have an individualDefinition. OCL2.0: isIndividual implies individualDefinition <> null OccurrenceUsage
validateOccurrenceUsageIsPortion Public If an OccurrenceUsage has a non-null portionKind, then it must have isPortion = true. OCL2.0: portionKind <> null implies isPortion OccurrenceUsage
validateOccurrenceUsagePortionKind Public If an OccurrenceUsage has a non-null portionKind, then its owningType must be an OccurrenceDefinition or an OccurrenceUsage. OCL2.0: portionKind <> null implies owningType <> null and (owningType.oclIsKindOf(OccurrenceDefinition) or owningType.oclIsKindOf(OccurrenceUsage)) OccurrenceUsage
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type
validateUsageIsReferential Public A Usage that is directed, an end feature or has no featuringTypes must be referential. OCL2.0: direction <> null or isEnd or featuringType->isEmpty() implies isReference Usage
validateUsageVariationIsAbstract Public If a Usage is a variation, then it must be abstract. OCL2.0: isVariation implies isAbstract Usage
validateUsageVariationOwnedFeatureMembership Public If a Usage is a variation, then it must not have any ownedFeatureMemberships. OCL2.0: isVariation implies ownedFeatureMembership->isEmpty() Usage
validateUsageVariationSpecialization Public A variation Usage may not specialize any variation Definition or Usage. OCL2.0: isVariation implies not ownedSpecialization.specific->exists( oclIsKindOf(Definition) and oclAsType(Definition).isVariation or oclIsKindOf(Usage) and oclAsType(Usage).isVariation) Usage

Properties

Name Visibility Type Default Description Owner
actionDefinition Public Behavior [0..*] {derived} {ordered} {redefines: Step.behavior} {many-to-many:ActionUsage.definedAction} null The Behaviors that are the types of this ActionUsage. Nominally, these would be ActionDefinitions, but other kinds of Kernel Behaviors are also allowed, to permit use of Behaviors from the Kernel Model Libraries. ActionUsage
actorParameter Public PartUsage [0..*] {derived} {ordered} {subsetted: Step.parameter} null The parameters of this CaseUsage that represent actors involved in the case. CaseUsage
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
analysisCaseDefinition Public AnalysisCaseDefinition [0..1] {derived} {redefines: CaseUsage.caseDefinition} null The AnalysisCaseDefinition that is the definition of this AnalysisCaseUsage. AnalysisCaseUsage
behavior Public Behavior [0..*] {derived} {ordered} {redefined by: Expression.function} {subsetted: Feature.type} {many-to-many:Step.typedStep} null The Behaviors that type this Step. Step
calculationDefinition Public Function [0..1] {derived} {ordered} {redefines: Expression.function} {redefined by: CaseUsage.caseDefinition} null The Function that is the type of this CalculationUsage. Nominally, this would be a CalculationDefinition, but a kernel Function is also allowed, to permit use of Functions from the Kernel Model Libraries. CalculationUsage
caseDefinition Public CaseDefinition [0..1] {derived} {redefines: CalculationUsage.calculationDefinition} {redefined by: AnalysisCaseUsage.analysisCaseDefinition} null The CaseDefinition that is the type of this CaseUsage. CaseUsage
chainingFeature Public Feature [0..*] {derived} {ordered} {many-to-many:Feature.chainedFeature} null The Feature that are chained together to determine the values of this Feature, derived from the chainingFeatures of the ownedFeatureChainings of this Feature, in the same order. The values of a Feature with chainingFeatures are the same as values of the last Feature in the chain, which can be found by starting with the values of the first Feature (for each instance of the domain of the original Feature), then using each of those as domain instances to find the values of the second Feature in chainingFeatures, and so on, to values of the last Feature. Feature
crossFeature Public Feature [0..1] {derived} null The second chainingFeature of the crossedFeature of the ownedCrossSubsetting of this Feature, if it has one. Semantically, the values of the crossFeature of an end Feature must include all values of the end Feature obtained when navigating from values of the other end Features of the same owningType. Feature
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
definition Public Classifier [0..*] {derived} {ordered} {redefines: Feature.type} {redefined by: OccurrenceUsage.occurrenceDefinition} {many-to-many:Usage.definedUsage} null The Classifiers that are the types of this Usage. Nominally, these are Definitions, but other kinds of Kernel Classifiers are also allowed, to permit use of Classifiers from the Kernel Model Libraries. Usage
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {redefined by: Step.parameter} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
directedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Usage.usageWithDirectedUsage} null The usages of this Usage that are directedFeatures. Usage
direction Public FeatureDirectionKind [0..1] null Indicates how values of this Feature are determined or used (as specified for the FeatureDirectionKind). Feature
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
endOwningType Public Type [0..1] {derived} {subsetted: A_endFeature_typeWithEndFeature.typeWithEndFeature} {subsetted: Feature.owningType} null The Type that is related to this Feature by an EndFeatureMembership in which the Feature is an ownedMemberFeature. Feature
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
featureTarget Public Feature [1..1] {derived} null The last of the chainingFeatures of this Feature, if it has any. Otherwise, this Feature itself. Feature
featuringType Public Type [0..*] {derived} {ordered} {many-to-many:Feature.featureOfType} null Types that feature this Feature, such that any instance in the domain of the Feature must be classified by all of these Types, including at least all the featuringTypes of its typeFeaturings. If the Feature is chained, then the featuringTypes of the first Feature in the chain are also featuringTypes of the chained Feature. Feature
function Public Function [0..1] {derived} {redefines: Step.behavior} {redefined by: CalculationUsage.calculationDefinition} null The Function that types this Expression. Expression
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
individualDefinition Public OccurrenceDefinition [0..1] {derived} {subsetted: OccurrenceUsage.occurrenceDefinition} null The at most one occurrenceDefinition that has isIndividual = true. OccurrenceUsage
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isComposite Public Boolean [1..1] false Whether the Feature is a composite feature of its featuringType. If so, the values of the Feature cannot exist after its featuring instance no longer does and cannot be values of another composite feature that is not on the same featuring instance. Feature
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isConstant Public Boolean [1..1] false If isVariable is true, then whether the value of this Feature nevertheless does not change over all snapshots of its owningType. Feature
isDerived Public Boolean [1..1] false Whether the values of this Feature can always be computed from the values of other Features. Feature
isEnd Public Boolean [1..1] false Whether or not this Feature is an end Feature. An end Feature always has multiplicity 1, mapping each of its domain instances to a single co-domain instance. However, it may have a crossFeature, in which case values of the crossFeature must be the same as those found by navigation across instances of the owningType from values of other end Features to values of this Feature. If the owningType has n end Features, then the multiplicity, ordering, and uniqueness declared for the crossFeature of any one of these end Features constrains the cardinality, ordering, and uniqueness of the collection of values of that Feature reached by navigation when the values of the other n-1 end Features are held fixed. Feature
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isIndividual Public Boolean [1..1] false Whether this OccurrenceUsage represents the usage of the specific individual represented by its individualDefinition. OccurrenceUsage
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isModelLevelEvaluable Public Boolean [1..1] {derived} null Whether this Expression meets the constraints necessary to be evaluated at model level, that is, using metadata within the model. Expression
isOrdered Public Boolean [1..1] false Whether an order exists for the values of this Feature or not. Feature
isPortion Public Boolean [1..1] false Whether the values of this Feature are contained in the space and time of instances of the domain of the Feature and represent the same thing as those instances. Feature
isReference Public Boolean [1..1] {derived} null Whether this Usage is a referential Usage, that is, it has isComposite = false. Usage
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
isUnique Public Boolean [1..1] true Whether or not values for this Feature must have no duplicates or not. Feature
isVariable Public Boolean [1..1] {redefined by: Usage.mayTimeVary} false Whether the value of this Feature might vary over time. That is, whether the Feature may have a different value for each snapshot of an owningType that is an Occurrence. Feature
isVariation Public Boolean [1..1] null Whether this Usage is for a variation point or not. If true, then all the memberships of the Usage must be VariantMemberships. Usage
mayTimeVary Public Boolean [1..1] {derived} {redefines: Feature.isVariable} null Whether this Usage may be time varying (that is, whether it is featured by the snapshots of its owningType, rather than being featured by the owningType itself). However, if isConstant is also true, then the value of the Usage is nevertheless constant over the entire duration of an instance of its owningType (that is, it has the same value on all snapshots). The property mayTimeVary redefines the KerML property Feature::isVariable, making it derived. The property isConstant is inherited from Feature. Usage
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
nestedAction Public ActionUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ActionUsages that are nestedUsages of this Usage. Usage
nestedAllocation Public AllocationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConnection} null The AllocationUsages that are nestedUsages of this Usage. Usage
nestedAnalysisCase Public AnalysisCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The AnalysisCaseUsages that are nestedUsages of this Usage. Usage
nestedAttribute Public AttributeUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The code>AttributeUsages that are nestedUsages of this Usage. Usage
nestedCalculation Public CalculationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAction} null The CalculationUsage that are nestedUsages of this Usage. Usage
nestedCase Public CaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCalculation} null The CaseUsages that are nestedUsages of this Usage. Usage
nestedConcern Public ConcernUsage [0..*] {derived} {subsetted: Usage.nestedRequirement} null The ConcernUsages that are nestedUsages of this Usage. Usage
nestedConnection Public ConnectorAsUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The ConnectorAsUsages that are nestedUsages of this Usage. Note that this list includes BindingConnectorAsUsages, SuccessionAsUsages, and FlowConnectionUsages because these are ConnectorAsUsages even though they are not ConnectionUsages. Usage
nestedConstraint Public ConstraintUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ConstraintUsages that are nestedUsages of this Usage. Usage
nestedEnumeration Public EnumerationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAttribute} null The code>EnumerationUsages that are nestedUsages of this Usage. Usage
nestedFlow Public FlowUsage [0..*] {derived} {subsetted: Usage.nestedConnection} null The code>FlowUsages that are nestedUsages of this Usage. Usage
nestedInterface Public InterfaceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConnection} null The InterfaceUsages that are nestedUsages of this Usage. Usage
nestedItem Public ItemUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ItemUsages that are nestedUsages of this Usage. Usage
nestedMetadata Public MetadataUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedItem} null The MetadataUsages that are nestedUsages of this of this Usage. Usage
nestedOccurrence Public OccurrenceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The OccurrenceUsages that are nestedUsages of this Usage. Usage
nestedPart Public PartUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedItem} null The PartUsages that are nestedUsages of this Usage. Usage
nestedPort Public PortUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The PortUsages that are nestedUsages of this Usage. Usage
nestedReference Public ReferenceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The ReferenceUsages that are nestedUsages of this Usage. Usage
nestedRendering Public RenderingUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedPart} null The RenderingUsages that are nestedUsages of this Usage. Usage
nestedRequirement Public RequirementUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConstraint} null The RequirementUsages that are nestedUsages of this Usage. Usage
nestedState Public StateUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAction} null The StateUsages that are nestedUsages of this Usage. Usage
nestedTransition Public TransitionUsage [0..*] {derived} {subsetted: Usage.nestedUsage} null The TransitionUsages that are nestedUsages of this Usage. Usage
nestedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.ownedFeature} null The Usages that are ownedFeatures of this Usage. Usage
nestedUseCase Public UseCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The UseCaseUsages that are nestedUsages of this Usage. Usage
nestedVerificationCase Public VerificationCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The VerificationCaseUsages that are nestedUsages of this Usage. Usage
nestedView Public ViewUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedPart} null The ViewUsages that are nestedUsages of this Usage. Usage
nestedViewpoint Public ViewpointUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedRequirement} null The ViewpointUsages that are nestedUsages of this Usage. Usage
objectiveRequirement Public RequirementUsage [0..1] {derived} {ordered} {subsetted: Usage.usage} null The RequirementUsage representing the objective of this CaseUsage. CaseUsage
occurrenceDefinition Public Class [0..*] {derived} {ordered} {redefines: Usage.definition} {many-to-many:OccurrenceUsage.definedOccurrence} null The Classes that are the types of this OccurrenceUsage. Nominally, these are OccurrenceDefinitions, but other kinds of kernel Classes are also allowed, to permit use of Classes from the Kernel Model Libraries. OccurrenceUsage
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedCrossSubsetting Public CrossSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a CrossSubsetting}, for which the Feature is the crossingFeature. Feature
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureChaining Public FeatureChaining [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Feature that are FeatureChainings, for which the Feature will be the featureChained. Feature
ownedFeatureInverting Public FeatureInverting [0..*] {composite} {derived} {subsetted: A_invertingFeatureInverting_featureInverted.invertingFeatureInverting} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are FeatureInvertings and for which the Feature is the featureInverted. Feature
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedRedefinition Public Redefinition [0..*] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The ownedSubsettings of this Feature that are Redefinitions, for which the Feature is the redefiningFeature. Feature
ownedReferenceSubsetting Public ReferenceSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a ReferenceSubsetting, for which the Feature is the referencingFeature. Feature
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedSubsetting Public Subsetting [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} {subsetted: A_subsettingFeature_subsetting.subsetting} null The ownedSpecializations of this Feature that are Subsettings, for which the Feature is the subsettingFeature. Feature
ownedTypeFeaturing Public TypeFeaturing [0..*] {composite} {derived} {ordered} {subsetted: A_featureOfType_typeFeaturing.typeFeaturing} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are TypeFeaturings and for which the Feature is the featureOfType. Feature
ownedTyping Public FeatureTyping [0..*] {composite} {derived} {ordered} {subsetted: Type.ownedSpecialization} {subsetted: A_typing_typedFeature.typing} null The ownedSpecializations of this Feature that are FeatureTypings, for which the Feature is the typedFeature. Feature
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningDefinition Public Definition [0..1] {derived} {subsetted: Feature.owningType} null The Definition that owns this Usage (if any). Usage
owningFeatureMembership Public FeatureMembership [0..1] {derived} {subsetted: Element.owningMembership} null The FeatureMembership that owns this Feature as an ownedMemberFeature, determining its owningType. Feature
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
owningType Public Type [0..1] {derived} {subsetted: A_typeWithFeature_feature.typeWithFeature} {subsetted: Element.owningNamespace} {subsetted: Feature.featuringType} null The Type that is the owningType of the owningFeatureMembership of this Feature. Feature
owningUsage Public Usage [0..1] {derived} {subsetted: Feature.owningType} null The Usage in which this Usage is nested (if any). Usage
parameter Public Feature [0..*] {derived} {ordered} {redefines: Type.directedFeature} {many-to-many:Step.parameteredStep} null The parameters of this Step, which are defined as its directedFeatures, whose values are passed into and/or out of a performance of the Step. Step
portionKind Public PortionKind [0..1] null The kind of temporal portion (time slice or snapshot) is represented by this OccurrenceUsage. If portionKind is not null, then the owningType of the OccurrenceUsage must be non-null, and the OccurrenceUsage represents portions of the featuring instance of the owningType. OccurrenceUsage
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
result Public Feature [1..1] {derived} {subsetted: Type.output} {subsetted: Step.parameter} null An output parameter of the Expression whose value is the result of the Expression. The result of an Expression is either inherited from its function or it is related to the Expression via a ReturnParameterMembership, in which case it redefines the result parameter of its function. Expression
resultExpression Public Expression [0..1] {derived} {subsetted: Type.ownedFeature} null An Expression used to compute the result of the AnalysisCaseUsage, owned via a ResultExpressionMembership. AnalysisCaseUsage
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
subjectParameter Public Usage [1..1] {derived} {subsetted: Step.parameter} null The parameter of this CaseUsage that represents its subject. CaseUsage
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
type Public Type [0..*] {derived} {ordered} {redefined by: Usage.definition} {many-to-many:Feature.typedFeature} null Types that restrict the values of this Feature, such that the values must be instances of all the types. The types of a Feature are derived from its typings and the types of its subsettings. If the Feature is chained, then the types of the last Feature in the chain are also types of the chained Feature. Feature
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type
usage Public Usage [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Usage.featuringUsage} null The Usages that are features of this Usage (not necessarily owned). Usage
variant Public Usage [0..*] {derived} {subsetted: Namespace.ownedMember} null The Usages which represent the variants of this Usage as a variation point Usage, if isVariation = true. If isVariation = false, then there must be no variants. Usage
variantMembership Public VariantMembership [0..*] {composite} {derived} {subsetted: Namespace.ownedMembership} null The ownedMemberships of this Usage that are VariantMemberships. If isVariation = true, then this must be all memberships of the Usage. If isVariation = false, then variantMembershipmust be empty. Usage

AnnotatingElement [Class]

Features

Name Description
Fully Qualified Name KerML::Root::Annotations::AnnotatingElement
Visibility Public
Definition An AnnotatingElement is an Element that provides additional description of or metadata on some other Element. An AnnotatingElement is either attached to its annotatedElements by Annotation Relationships, or it implicitly annotates its owningNamespace.
Is Abstract FALSE
Generalizations Element
Specializations Comment MetadataFeature TextualRepresentation
Containers Annotation

Rules

Name Visibilty Description Specification Owner
deriveAnnotatingElementAnnotatedElement Public If an AnnotatingElement has annotations, then its annotatedElements are the annotatedElements of all its annotations. Otherwise, it's single annotatedElement is its owningNamespace. OCL2.0: annotatedElement = if annotation->notEmpty() then annotation.annotatedElement else Sequence{owningNamespace} endif AnnotatingElement
deriveAnnotatingElementAnnotation Public The annotations of an AnnotatingElement are its owningAnnotatingRelationship (if any) followed by all its ownedAnnotatingRelationships. OCL2.0: annotation = if owningAnnotatingRelationship = null then ownedAnnotatingRelationship else owningAnnotatingRelationship->prepend(owningAnnotatingRelationship) endif AnnotatingElement
deriveAnnotatingElementOwnedAnnotatingRelationship Public The ownedAnnotatingRelationships of an AnnotatingElement are its ownedRelationships that are Annotations, for which the AnnotatingElement is not the annotatedElement. OCL2.0: ownedAnnotatingRelationship = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement <> self) AnnotatingElement
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element

Properties

Name Visibility Type Default Description Owner
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
annotatedElement Public Element [1..*] {derived} {ordered} {many-to-many:AnnotatingElement.annotatingElement} null The Elements that are annotated by this AnnotatingElement. If annotation is not empty, these are the annotatedElements of the annotations. If annotation is empty, then it is the owningNamespace of the AnnotatingElement. AnnotatingElement
annotation Public Annotation [0..*] {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} null The Annotations that relate this AnnotatingElement to its annotatedElements. This includes the owningAnnotatingRelationship (if any) followed by all the ownedAnnotatingRelationshps. AnnotatingElement
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
ownedAnnotatingRelationship Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: AnnotatingElement.annotation} {subsetted: Element.ownedRelationship} null The ownedRelationships of this AnnotatingElement that are Annotations, for which this AnnotatingElement is the annotatingElement. AnnotatingElement
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningAnnotatingRelationship Public Annotation [0..1] {derived} {subsetted: Element.owningRelationship} {subsetted: AnnotatingElement.annotation} null The owningRelationship of this AnnotatingRelationship, if it is an Annotation AnnotatingElement
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element

Annotation [Class]

Features

Name Description
Fully Qualified Name KerML::Root::Annotations::Annotation
Visibility Public
Definition An Annotation is a Relationship between an AnnotatingElement and the Element that is annotated by that AnnotatingElement.
Is Abstract FALSE
Generalizations Relationship
Specializations
Containers AnnotatingElement Element

Rules

Name Visibilty Description Specification Owner
deriveAnnotationAnnotatingElement Public The annotatingElement of an Annotation is either its ownedAnnotatingElement or its owningAnnotatingElement. OCL2.0: annotatingElement = if ownedAnnotatingElement <> null then ownedAnnotatingElement else owningAnnotatingElement endif Annotation
deriveAnnotationOwnedAnnotatingElement Public The ownedAnnotatingElement of an Annotation is the first ownedRelatedElement that is an AnnotatingElement, if any. OCL2.0: ownedAnnotatingElement = let ownedAnnotatingElements : Sequence(AnnotatingElement) = ownedRelatedElement->selectByKind(AnnotatingElement) in if ownedAnnotatingElements->isEmpty() then null else ownedAnnotatingElements->first() endif Annotation
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveRelationshipRelatedElement Public The relatedElements of a Relationship consist of all of its source Elements followed by all of its target Elements. OCL2.0: relatedElement = source->union(target) Relationship
validateAnnotationAnnotatedElementOwnership Public An Annotation owns its annotatingElement if and only if it is owned by its annotatedElement. OCL2.0: (owningAnnotatedElement <> null) = (ownedAnnotatingElement <> null) Annotation
validateAnnotationAnnotatingElement Public Either the ownedAnnotatingElement of an Annotation must be non-null, or the owningAnnotatingElement must be non-null, but not both. OCL2.0: ownedAnnotatingElement <> null xor owningAnnotatingElement <> null Annotation
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element

Properties

Name Visibility Type Default Description Owner
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
annotatedElement Public Element [1..1] {redefines: Relationship.target} null The Element that is annotated by the annotatingElement of this Annotation. Annotation
annotatingElement Public AnnotatingElement [1..1] {derived} {redefines: Relationship.source} null The AnnotatingElement that annotates the annotatedElement of this Annotation. This is always either the ownedAnnotatingElement or the owningAnnotatingElement. Annotation
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
isImplied Public Boolean [1..1] false Whether this Relationship was generated by tooling to meet semantic rules, rather than being directly created by a modeler. Relationship
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
ownedAnnotatingElement Public AnnotatingElement [0..1] {composite} {derived} {subsetted: Annotation.annotatingElement} {subsetted: Relationship.ownedRelatedElement} null The annotatingElement of this Annotation, when it is an ownedRelatedElement. Annotation
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedRelatedElement Public Element [0..*] {composite} {ordered} {subsetted: Relationship.relatedElement} null The relatedElements of this Relationship that are owned by the Relationship. Relationship
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningAnnotatedElement Public Element [0..1] {derived} {subsetted: Annotation.annotatedElement} {subsetted: Relationship.owningRelatedElement} null The annotatedElement of this Annotation, when it is also the owningRelatedElement. Annotation
owningAnnotatingElement Public AnnotatingElement [0..1] {derived} {subsetted: Annotation.annotatingElement} {subsetted: Relationship.owningRelatedElement} null The annotatingElement of this Annotation, when it is the owningRelatedElement. Annotation
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelatedElement Public Element [0..1] {subsetted: Relationship.relatedElement} null The relatedElement of this Relationship that owns the Relationship, if any. Relationship
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
relatedElement Public Element [0..*] {derived} {ordered} {many-to-many:Relationship.relationship} null The Elements that are related by this Relationship, derived as the union of the source and target Elements of the Relationship. Relationship
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
source Public Element [0..*] {ordered} {redefined by: Annotation.annotatingElement} {subsetted: Relationship.relatedElement} {many-to-many:Relationship.sourceRelationship} null The relatedElements from which this Relationship is considered to be directed. Relationship
target Public Element [0..*] {ordered} {redefined by: Annotation.annotatedElement} {subsetted: Relationship.relatedElement} {many-to-many:Relationship.targetRelationship} null The relatedElements to which this Relationship is considered to be directed. Relationship
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element

AssertConstraintUsage [Class]

Features

Name Description
Fully Qualified Name SysML::Systems::Constraints::AssertConstraintUsage
Visibility Public
Definition An AssertConstraintUsage is a ConstraintUsage that is also an Invariant and, so, is asserted to be true (by default). Unless it is the AssertConstraintUsage itself, the asserted ConstraintUsage is related to the AssertConstraintUsage by a ReferenceSubsetting Relationship.
Is Abstract FALSE
Generalizations ConstraintUsage Invariant
Specializations SatisfyRequirementUsage
Containers

Rules

Name Visibilty Description Specification Owner
checkAssertConstraintUsageSpecialization Public If a AssertConstraintUsage is negated, then it must directly or indirectly specialize the ConstraintUsage Constraints::negatedConstraintChecks. Otherwise, it must directly or indirectly specialize the ConstraintUsage Constraints::assertedConstraintChecks. OCL2.0: if isNegated then specializesFromLibrary('Constraints::negatedConstraintChecks') else specializesFromLibrary('Constraints::assertedConstraintChecks') endif AssertConstraintUsage
checkBooleanExpressionSpecialization Public A BooleanExpression must directly or indirectly specialize the base BooleanExpression Performances::booleanEvaluations from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::booleanEvaluations') BooleanExpression
checkConstraintUsageCheckedConstraintSpecialization Public A ConstraintUsage whose owningType is an ItemDefinition or ItemUsage must directly or indirectly specialize the ConstraintUsage Items::Item::checkedConstraints. OCL2.0: owningType <> null and (owningType.oclIsKindOf(ItemDefinition) or owningType.oclIsKindOf(ItemUsage)) implies specializesFromLibrary('Items::Item::checkedConstraints') ConstraintUsage
checkConstraintUsageRequirementConstraintSpecialization Public A ConstraintUsage whose owningFeatureMembership is a RequirementConstraintMembership must directly or indirectly specialize on the ConstraintUsages assumptions or constraints from the ConstraintDefinition Requirements::RequirementCheck in the Systems Model Library, depending on whether the kind of the RequirementConstraintMembership is assumption or requirement, respectively. OCL2.0: owningFeatureMembership <> null and owningFeatureMembership.oclIsKindOf(RequirementConstraintMembership) implies if owningFeatureMembership.oclAsType(RequirementConstraintMembership).kind = RequirementConstraintKind::assumption then specializesFromLibrary('Requirements::RequirementCheck::assumptions') else specializesFromLibrary('Requirements::RequirementCheck::constraints') endif ConstraintUsage
checkConstraintUsageSpecialization Public A ConstraintUsage must directly or indirectly specialize the base ConstraintUsage Constraints::constraintChecks from the Systems Model Library. OCL2.0: specializesFromLibrary('Constraints::constraintChecks') ConstraintUsage
checkExpressionResultBindingConnector Public If an Expression has an Expression owned via a ResultExpressionMembership, then the owning Expression must also own a BindingConnector between its result parameter and the result parameter of the result Expression. OCL2.0: ownedMembership.selectByKind(ResultExpressionMembership)-> forAll(mem | ownedFeature.selectByKind(BindingConnector)-> exists(binding | binding.relatedFeature->includes(result) and binding.relatedFeature->includes(mem.ownedResultExpression.result))) Expression
checkExpressionSpecialization Public An Expression must directly or indirectly specialize the base Expression Performances::evaluations from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::evaluations') Expression
checkExpressionTypeFeaturing Public If this Expression is owned by a FeatureValue, then it must have the same featuringTypes as the featureWithValue of the FeatureValue. OCL2.0: owningMembership <> null and owningMembership.oclIsKindOf(FeatureValue) implies let featureWithValue : Feature = owningMembership.oclAsType(FeatureValue).featureWithValue in featuringType = featureWithValue.featuringType Expression
checkFeatureCrossingSpecialization Public If this Feature has isEnd = true and ownedCrossFeature returns a non-null value, then the crossFeature of the Feature must be the Feature returned from ownedCrossFeature (which implies that this Feature has an appropriate ownedCrossSubsetting to realize this). OCL2.0: ownedCrossFeature() <> null implies crossFeature = ownedCrossFeature() Feature
checkFeatureDataValueSpecialization Public If a Feature has an ownedTyping relationship to a DataType, then it must directly or indirectly specialize Base::dataValues from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(DataType)) implies specializesFromLibrary('Base::dataValues') Feature
checkFeatureEndRedefinition Public If a Feature has isEnd = true and an owningType that is not empty, then, for each direct supertype of its owningType, it must redefine the endFeature at the same position, if any. OCL2.0: isEnd and owningType <> null implies let i : Integer = owningType.ownedEndFeature->indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | supertype.endFeature->size() >= i implies redefines(supertype.endFeature->at(i)) Feature
checkFeatureEndSpecialization Public If a Feature has isEnd = true and an owningType that is an Association or a Connector, then it must directly or indirectly specialize Links::Link::participant from the Kernel Semantic Library. OCL2.0: isEnd and owningType <> null and (owningType.oclIsKindOf(Association) or owningType.oclIsKindOf(Connector)) implies specializesFromLibrary('Links::Link::participant') Feature
checkFeatureFeatureMembershipTypeFeaturing Public If a Feature is owned via a FeatureMembership, then it must have a featuringType for which the operation isFeaturingType returns true. OCL2.0: owningFeatureMembership <> null implies featuringTypes->exists(t | isFeaturingType(t)) Feature
checkFeatureFlowFeatureRedefinition Public If a Feature is the first ownedFeature of a first or second FlowEnd, then it must directly or indirectly specialize either Transfers::Transfer::source::sourceOutput or Transfers::Transfer::target::targetInput, respectively, from the Kernel Semantic Library. OCL2.0: owningType <> null and owningType.oclIsKindOf(FlowEnd) and owningType.ownedFeature->at(1) = self implies let flowType : Type = owningType.owningType in flowType <> null implies let i : Integer = flowType.ownedFeature.indexOf(owningType) in (i = 1 implies redefinesFromLibrary('Transfers::Transfer::source::sourceOutput')) and (i = 2 implies redefinesFromLibrary('Transfers::Transfer::source::targetInput')) Feature
checkFeatureObjectSpecialization Public If a Feature has an ownedTyping relationship to a Structure, then it must directly or indirectly specialize Objects::objects from the Kernel Semantics Library. OCL2.0: ownedTyping.type->exists(selectByKind(Structure)) implies specializesFromLibary('Objects::objects') Feature
checkFeatureOccurrenceSpecialization Public If a Feature has an ownedTyping relationship to a Class, then it must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(Class)) implies specializesFromLibrary('Occurrences::occurrences') Feature
checkFeatureOwnedCrossFeatureRedefinitionSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then, for any end Feature that is redefined by the owning end Feature of this Feature, this Feature must subset the crossFeature of the redefined end Feature, if this exists. OCL2.0: isOwnedCrossFeature() implies ownedSubsetting.subsettedFeature->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature <> null).crossFeature) Feature
checkFeatureOwnedCrossFeatureSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then it must directly or indirectly specialize the types of its owning end Feature. OCL2.0: isOwnedCrossFeature() implies owner.oclAsType(Feature).type->forAll(t | self.specializes(t)) Feature
checkFeatureOwnedCrossFeatureTypeFeaturing Public If this Feature is the ownedCrossFeature of an end Feature, then it must have featuringTypes consistent with the crossing from other end Features of the owningType of its end Feature. OCL2.0: isOwnedCrossFeature() implies let otherEnds : OrderedSet(Feature) = owner.oclAsType(Feature).owningType.endFeature->excluding(self) in if (otherEnds->size() = 1) then featuringType = otherEnds->first().type else featuringType->size() = 1 and featuringType->first().isCartesianProduct() and featuringType->first().asCartesianProduct() = otherEnds.type and featuringType->first().allSupertypes()->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature() <> null).crossFeature().featuringType) endif Feature
checkFeatureParameterRedefinition Public If a Feature is a parameter of an owningType that is a Behavior or Step, but not
  • A result parameter
  • A parameter of an InvocationExpression, with at least one non-implied ownedRedefinition
then, for each direct supertype of its owningType that is also a Behavior or Step, it must redefine the parameter at the same position, if any.
OCL2.0: owningType <> null and not owningFeatureMembership. oclIsKindOf(ReturnParameterMembership) and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step) and (owningType.oclIsKindOf(InvocationExpression) implies not ownedRedefinition->exists(not isImplied)) implies let i : Integer = owningType.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership))-> indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | let ownedParameters : Sequence(Feature) = supertype.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership)) in ownedParameters->size() >= i implies redefines(ownedParameters->at(i)) Feature
checkFeaturePortionSpecialization Public If a Feature has isPortion = true, an ownedTyping relationship to a Class, and an owningType that is a Class or another Feature typed by a Class, then it must directly or indirectly specialize Occurrences::Occurrence::portions from the Kernel Semantic Library. OCL2.0: isPortion and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::portions') Feature
checkFeatureResultRedefinition Public If a Feature is a result parameter of an owningType that is a Function or Expression, then, for each direct supertype of its owningType that is also a Function or Expression, it must redefine the result parameter. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Function) and self = owningType.oclAsType(Function).result or owningType.oclIsKindOf(Expression) and self = owningType.oclAsType(Expression).result) implies owningType.ownedSpecialization.general-> select(oclIsKindOf(Function) or oclIsKindOf(Expression))-> forAll(supertype | redefines( if superType.oclIsKindOf(Function) then superType.oclAsType(Function).result else superType.oclAsType(Expression).result endif) Feature
checkFeatureSpecialization Public A Feature must directly or indirectly specialize Base::things from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::things') Feature
checkFeatureSubobjectSpecialization Public A composite Feature typed by a Structure, and whose ownedType is a Structure or another Feature typed by a Structure must directly or indirectly specialize Objects::Object::subobjects. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Structure)) and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.type->includes(oclIsKindOf(Structure))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureSuboccurrenceSpecialization Public A composite Feature that has an ownedTyping relationship to a Class, and whose ownedType is a Class or another Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureValuationSpecialization Public If a Feature has a FeatureValue, no ownedSpecializations that are not implied, and is not directed, then it must specialize the result of the value Expression of the FeatureValue. OCL2.0: direction = null and ownedSpecializations->forAll(isImplied) implies ownedMembership-> selectByKind(FeatureValue)-> forAll(fv | specializes(fv.value.result)) Feature
checkInvariantSpecialization Public An Invariant must directly or indirectly specialize either of the following BooleanExpressions from the Kernel Semantic Library: Performances::trueEvaluations, if isNegated = false, or Performances::falseEvaluations, if isNegated = true. OCL2.0: if isNegated then specializesFromLibrary('Performances::falseEvaluations') else specializesFromLibrary('Performances::trueEvaluations') endif Invariant
checkOccurrenceUsageSnapshotSpecialization Public If an OccurrenceUsage has portionKind = snapshot, then it must directly or indirectly specialize Occurrences::Occurrence::snapshots from the Kernel Semantic Library. OCL2.0: portionKind = PortionKind::snapshot implies specializesFromLibrary('Occurrences::Occurrence::snapshots') OccurrenceUsage
checkOccurrenceUsageSpecialization Public An OccurrenceUsage must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Occurrences::occurrences') OccurrenceUsage
checkOccurrenceUsageSuboccurrenceSpecialization Public A composite OccurrenceUsage, whose ownedType is a Class, another OccurrenceUsage, or any kind of Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(OccurrenceUsage) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKind(Class))) implies specializesFromLibrary('Occurrences::Occurrence::suboccurrences') OccurrenceUsage
checkOccurrenceUsageTimeSliceSpecialization Public If an OccurrenceUsage has portionKind = timeslice, then it must directly or indirectly specialize Occurrences::Occurrence::timeSlices from the Kernel Semantic Library. OCL2.0: portionKind = PortionKind::timeslice implies specializesFromLibrary('Occurrences::Occurrence::timeSlices') OccurrenceUsage
checkStepEnclosedPerformanceSpecialization Public AStep whose owningType is a Behavior or another Step must directly or indirectly specialize the Step Performances::Performance::enclosedPerformance. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step)) implies specializesFromLibrary('Performances::Performance::enclosedPerformance') Step
checkStepOwnedPerformanceSpecialization Public A composite Step whose owningType is a Structure or a Feature typed by a Structure must directly or indirectly specialize the Step Objects::Object::ownedPerformance. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Structure)) implies specializesFromLibrary('Objects::Object::ownedPerformance') Step
checkStepSpecialization Public A Step must directly or indirectly specialize the base Step Performances::performances from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::performances') Step
checkStepSubperformanceSpecialization Public AStep whose owningType is a Behavior or another Step, and which is composite, must directly or indirectly specialize the Step Performances::Performance::subperformance. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step)) and self.isComposite implies specializesFromLibrary('Performances::Performance::subperformance') Step
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
checkUsageVariationDefinitionSpecialization Public If a Usage has an owningVariationDefinition, then it must directly or indirectly specialize that Definition. OCL2.0: owningVariationDefinition <> null implies specializes(owningVariationDefinition) Usage
checkUsageVariationUsageSpecialization Public If a Usage has an owningVariationUsage, then it must directly or indirectly specialize that Usage. OCL2.0: owningVariationUsage <> null implies specializes(owningVariationUsage) Usage
checkUsageVariationUsageTypeFeaturing Public If a Usage has an owningVariationUsage, then it must have the same featuringTypes as that Usage. OCL2.0: owningVariationUsage <> null implies featuringType->asSet() = owningVariationUsage.featuringType->asSet() Usage
deriveAssertConstraintUsageAssertedConstraint Public If an AssertConstraintUsage has no ownedReferenceSubsetting, then its assertedConstraint is the AssertConstraintUsage itself. Otherwise, the assertedConstraint is the featureTarget of the referencedFeature of the ownedReferenceSubsetting, which must be a ConstraintUsage. OCL2.0: assertedConstraint = if referencedFeatureTarget() = null then self else if referencedFeatureTarget().oclIsKindOf(ConstraintUsage) then referencedFeatureTarget().oclAsType(ConstraintUsage) else null endif endif AssertConstraintUsage
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveExpressionIsModelLevelEvaluable Public Whether an Expression isModelLevelEvaluable is determined by the modelLevelEvaluable() operation. OCL2.0: isModelLevelEvaluable = modelLevelEvaluable(Set(Element){}) Expression
deriveExpressionResult Public The result parameter of an Expression is its parameter owned (possibly in a supertype) via a ReturnParameterMembership (if any). OCL2.0: result = let resultParams : Sequence(Feature) = featureMemberships-> selectByKind(ReturnParameterMembership). ownedMemberParameter in if resultParams->notEmpty() then resultParams->first() else null endif Expression
deriveFeatureChainingFeature Public The chainingFeatures of a Feature are the chainingFeatures of its ownedFeatureChainings. OCL2.0: chainingFeature = ownedFeatureChaining.chainingFeature Feature
deriveFeatureCrossFeature Public The crossFeature of a Feature is the second chainingFeature of the crossedFeature of the ownedCrossSubsetting of the Feature, if any. OCL2.0: crossFeature = if ownedCrossSubsetting = null then null else let chainingFeatures: Sequence(Feature) = ownedCrossSubsetting.crossedFeature.chainingFeature in if chainingFeatures->size() < 2 then null else chainingFeatures->at(2) endif Feature
deriveFeatureFeatureTarget Public If a Feature has no chainingFeatures, then its featureTarget is the Feature itself, otherwise the featureTarget is the last of the chainingFeatures. OCL2.0: featureTarget = if chainingFeature->isEmpty() then self else chainingFeature->last() endif Feature
deriveFeatureFeaturingType Public The featuringTypes of a Feature include the featuringTypes of all the typeFeaturings of the Feature. If the Feature has chainingFeatures, then its featuringTypes also include the featuringTypes of the first chainingFeature. OCL2.0: featuringType = let featuringTypes : OrderedSet(Type) = featuring.type->asOrderedSet() in if chainingFeature->isEmpty() then featuringTypes else featuringTypes-> union(chainingFeature->first().featuringType)-> asOrderedSet() endif Feature
deriveFeatureOwnedCrossSubsetting Public The ownedCrossSubsetting of a Feature is the ownedSubsetting that is a CrossSubsetting, if any. OCL2.0: ownedCrossSubsetting = let crossSubsettings: Sequence(CrossSubsetting) = ownedSubsetting->selectByKind(CrossSubsetting) in if crossSubsettings->isEmpty() then null else crossSubsettings->first() endif Feature
deriveFeatureOwnedFeatureChaining Public The ownedFeatureChainings of a Feature are the ownedRelationships that are FeatureChainings. OCL2.0: ownedFeatureChaining = ownedRelationship->selectByKind(FeatureChaining) Feature
deriveFeatureOwnedFeatureInverting Public The ownedFeatureInvertings of a Feature are its ownedRelationships that are FeatureInvertings. OCL2.0: ownedFeatureInverting = ownedRelationship->selectByKind(FeatureInverting)-> select(fi | fi.featureInverted = self) Feature
deriveFeatureOwnedRedefinition Public The ownedRedefinitions of a Feature are its ownedSubsettings that are Redefinitions. OCL2.0: ownedRedefinition = ownedSubsetting->selectByKind(Redefinition) Feature
deriveFeatureOwnedReferenceSubsetting Public The ownedReferenceSubsetting of a Feature is the first ownedSubsetting that is a ReferenceSubsetting (if any). OCL2.0: ownedReferenceSubsetting = let referenceSubsettings : OrderedSet(ReferenceSubsetting) = ownedSubsetting->selectByKind(ReferenceSubsetting) in if referenceSubsettings->isEmpty() then null else referenceSubsettings->first() endif Feature
deriveFeatureOwnedSubsetting Public The ownedSubsettings of a Feature are its ownedSpecializations that are Subsettings. OCL2.0: ownedSubsetting = ownedSpecialization->selectByKind(Subsetting) Feature
deriveFeatureOwnedTypeFeaturing Public The ownedTypeFeaturings of a Feature are its ownedRelationships that are TypeFeaturings and which have the Feature as their featureOfType. OCL2.0: ownedTypeFeaturing = ownedRelationship->selectByKind(TypeFeaturing)-> select(tf | tf.featureOfType = self) Feature
deriveFeatureOwnedTyping Public The ownedTypings of a Feature are its ownedSpecializations that are FeatureTypings. OCL2.0: ownedTyping = ownedGeneralization->selectByKind(FeatureTyping) Feature
deriveFeatureType Public The types of a Feature are the union of the types of its typings and the types of the Features it subsets, with all redundant supertypes removed. If the Feature has chainingFeatures, then the union also includes the types of the last chainingFeature. OCL2.0: type = let types : OrderedSet(Types) = OrderedSet{self}-> -- Note: The closure operation automatically handles circular relationships. closure(typingFeatures()).typing.type->asOrderedSet() in types->reject(t1 | types->exist(t2 | t2 <> t1 and t2.specializes(t1))) Feature
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOccurrenceUsageIndividualDefinition Public The individualDefinition of an OccurrenceUsage is the occurrenceDefinition that is an OccurrenceDefinition with isIndividual = true, if any. OCL2.0: individualDefinition = let individualDefinitions : OrderedSet(OccurrenceDefinition) = occurrenceDefinition-> selectByKind(OccurrenceDefinition)-> select(isIndividual) in if individualDefinitions->isEmpty() then null else individualDefinitions->first() endif OccurrenceUsage
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveStepBehavior Public The behaviors of a Step are all its types that are Behaviors. OCL2.0: behavior = type->selectByKind(Behavior) Step
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
deriveUsageDirectedUsage Public The directedUsages of a Usage are all its directedFeatures that are Usages. OCL2.0: directedUsage = directedFeature->selectByKind(Usage) Usage
deriveUsageIsReference Public A Usage is referential if it is not composite. OCL2.0: isReference = not isComposite Usage
deriveUsageMayTimeVary Public A Usage mayTimeVary if and only if all of the following are true
  • It has an owningType that specializes Occurrences::Occurrence (from the Kernel Semantic Library).
  • It is not a portion.
  • It does not specialize Links::SelfLink or Occurrences::HappensLink (from the Kernel Semantic Library).
  • If isComposite = true, it does not specialize Actions::Action (from the Systems Model Library).
OCL2.0: mayTimeVary = owningType <> null and owningType.specializesFromLibrary('Occurrences::Occurrence') and not ( isPortion or specializesFromLibrary('Links::SelfLink') or specializesFromLibrary('Occurrences::HappensLink') or isComposite and specializesFromLibrary('Actions::Action') ) Usage
deriveUsageNestedAction Public The ownedActions of a Usage are all its ownedUsages that are ActionUsages. OCL2.0: nestedAction = nestedUsage->selectByKind(ActionUsage) Usage
deriveUsageNestedAllocation Public The ownedAllocations of a Usage are all its ownedUsages that are AllocationUsages. OCL2.0: nestedAllocation = nestedUsage->selectByKind(AllocationUsage) Usage
deriveUsageNestedAnalysisCase Public The ownedAnalysisCases of a Usage are all its ownedUsages that are AnalysisCaseUsages. OCL2.0: nestedAnalysisCase = nestedUsage->selectByKind(AnalysisCaseUsage) Usage
deriveUsageNestedAttribute Public The ownedAttributes of a Usage are all its ownedUsages that are AttributeUsages. OCL2.0: nestedAttribute = nestedUsage->selectByKind(AttributeUsage) Usage
deriveUsageNestedCalculation Public The ownedCalculations of a Usage are all its ownedUsages that are CalculationUsages. OCL2.0: nestedCalculation = nestedUsage->selectByKind(CalculationUsage) Usage
deriveUsageNestedCase Public The ownedCases of a Usage are all its ownedUsages that are CaseUsages. OCL2.0: nestedCase = nestedUsage->selectByKind(CaseUsage) Usage
deriveUsageNestedConcern Public The ownedConcerns of a Usage are all its ownedUsages that are ConcernUsages. OCL2.0: nestedConcern = nestedUsage->selectByKind(ConcernUsage) Usage
deriveUsageNestedConnection Public The ownedConnections of a Usage are all its ownedUsages that are ConnectorAsUsages. OCL2.0: nestedConnection = nestedUsage->selectByKind(ConnectorAsUsage) Usage
deriveUsageNestedConstraint Public The ownedConstraints of a Usage are all its ownedUsages that are ConstraintUsages. OCL2.0: nestedConstraint = nestedUsage->selectByKind(ConstraintUsage) Usage
deriveUsageNestedEnumeration Public The ownedEnumerations of a Usage are all its ownedUsages that are EnumerationUsages. OCL2.0: ownedNested = nestedUsage->selectByKind(EnumerationUsage) Usage
deriveUsageNestedFlow Public The ownedFlows of a Usage are all its ownedUsages that are FlowConnectionUsages. OCL2.0: nestedFlow = nestedUsage->selectByKind(FlowConnectionUsage) Usage
deriveUsageNestedInterface Public The ownedInterfaces of a Usage are all its ownedUsages that are InterfaceUsages. OCL2.0: nestedInterface = nestedUsage->selectByKind(ReferenceUsage) Usage
deriveUsageNestedItem Public The ownedItems of a Usage are all its ownedUsages that are ItemUsages. OCL2.0: nestedItem = nestedUsage->selectByKind(ItemUsage) Usage
deriveUsageNestedMetadata Public The ownedMetadata of a Usage are all its ownedUsages that are MetadataUsages. OCL2.0: nestedMetadata = nestedUsage->selectByKind(MetadataUsage) Usage
deriveUsageNestedOccurrence Public The ownedOccurrences of a Usage are all its ownedUsages that are OccurrenceUsages. OCL2.0: nestedOccurrence = nestedUsage->selectByKind(OccurrenceUsage) Usage
deriveUsageNestedPart Public The ownedParts of a Usage are all its ownedUsages that are PartUsages. OCL2.0: nestedPart = nestedUsage->selectByKind(PartUsage) Usage
deriveUsageNestedPort Public The ownedPorts of a Usage are all its ownedUsages that are PortUsages. OCL2.0: nestedPort = nestedUsage->selectByKind(PortUsage) Usage
deriveUsageNestedReference Public The ownedReferences of a Usage are all its ownedUsages that are ReferenceUsages. OCL2.0: nestedReference = nestedUsage->selectByKind(ReferenceUsage) Usage
deriveUsageNestedRendering Public The ownedRenderings of a Usage are all its ownedUsages that are RenderingUsages. OCL2.0: nestedRendering = nestedUsage->selectByKind(RenderingUsage) Usage
deriveUsageNestedRequirement Public The ownedRequirements of a Usage are all its ownedUsages that are RequirementUsages. OCL2.0: nestedRequirement = nestedUsage->selectByKind(RequirementUsage) Usage
deriveUsageNestedState Public The ownedStates of a Usage are all its ownedUsages that are StateUsages. OCL2.0: nestedState = nestedUsage->selectByKind(StateUsage) Usage
deriveUsageNestedTransition Public The ownedTransitions of a Usage are all its ownedUsages that are TransitionUsages. OCL2.0: nestedTransition = nestedUsage->selectByKind(TransitionUsage) Usage
deriveUsageNestedUsage Public The ownedUsages of a Usage are all its ownedFeatures that are Usages. OCL2.0: nestedUsage = ownedFeature->selectByKind(Usage) Usage
deriveUsageNestedUseCase Public The ownedUseCases of a Usage are all its ownedUsages that are UseCaseUsages. OCL2.0: nestedUseCase = nestedUsage->selectByKind(UseCaseUsage) Usage
deriveUsageNestedVerificationCase Public The ownedValidationCases of a Usage are all its ownedUsages that are ValidationCaseUsages. OCL2.0: nestedVerificationCase = nestedUsage->selectByKind(VerificationCaseUsage) Usage
deriveUsageNestedView Public The ownedViews of a Usage are all its ownedUsages that are ViewUsages. OCL2.0: nestedView = nestedUsage->selectByKind(ViewUsage) Usage
deriveUsageNestedViewpoint Public The ownedViewpoints of a Usage are all its ownedUsages that are ViewpointUsages. OCL2.0: nestedViewpoint = nestedUsage->selectByKind(ViewpointUsage) Usage
deriveUsageUsage Public The usages of a Usage are all its features that are Usages. OCL2.0: usage = feature->selectByKind(Usage) Usage
deriveUsageVariant Public The variants of a Usage are the ownedVariantUsages of its variantMemberships. OCL2.0: variant = variantMembership.ownedVariantUsage Usage
deriveUsageVariantMembership Public The variantMemberships of a Usage are those ownedMemberships that are VariantMemberships. OCL2.0: variantMembership = ownedMembership->selectByKind(VariantMembership) Usage
validateAssertConstraintUsageReference Public If an AssertConstraintUsage has an ownedReferenceSubsetting, then the featureTarget of its referencedFeature must be a ConstraintUsage. OCL2.0: referencedFeaureTarget() <> null implies referencedFeatureTarget().oclIsKindOf(ConstraintUsage) AssertConstraintUsage
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateExpressionResultExpressionMembership Public An Expression must have at most one ResultExpressionMembership. OCL2.0: membership->selectByKind(ResultExpressionMembership)->size() <= 1 Expression
validateExpressionResultParameterMembership Public An Expression must have exactly one featureMembership (owned or inherited) that is a ResultParameterMembership. OCL2.0: featureMembership-> selectByKind(ReturnParameterMembership)-> size() = 1 Expression
validateFeatureChainingFeatureConformance Public Each chainingFeature (other than the first) must be featured within the previous chainingFeature. OCL2.0: Sequence{2..chainingFeature->size()}->forAll(i | chainingFeature->at(i).isFeaturedWithin(chainingFeature->at(i-1))) Feature
validateFeatureChainingFeatureNotOne Public A Feature must have either no chainingFeatures or more than one. OCL2.0: chainingFeature->size() <> 1 Feature
validateFeatureChainingFeaturesNotSelf Public A Feature cannot be one of its own chainingFeatures. English: chainingFeature->excludes(self) Feature
validateFeatureConstantIsVariable Public A Feature with isConstant = true must have isVariable = true. OCL2.0: isConstant implies isVariable Feature
validateFeatureCrossFeatureSpecialization Public If this Feature has a crossFeature, then, for any Feature that is redefined by this Feature, the crossFeature must specialize the crossFeature of the redefined end Feature, if this exists. OCL2.0: crossFeature <> null implies ownedRedefinition.redefinedFeature.crossFeature-> forAll(f | f <> null implies crossFeature.specializes(f)) Feature
validateFeatureCrossFeatureType Public The crossFeature of a Feature must have the same types as the Feature. OCL2.0: crossFeature <> null implies crossFeature.type->asSet() = type->asSet() Feature
validateFeatureEndIsConstant Public A Feature with isEnd = true and isVariable = true must have isConstant = true. OCL2.0: isEnd and isVariable implies isConstant Feature
validateFeatureEndMultiplicity Public If a Feature has isEnd = true, then it must have multiplicity 1..1. OCL2.0: isEnd implies multiplicities().allSuperTypes()->flatten()-> selectByKind(MultiplicityRange)->exists(hasBounds(1,1)) Feature
validateFeatureEndNoDirection Public A Feature with isEnd = true must have no direction. OCL2.0: isEnd implied direction = null Feature
validateFeatureEndNotDerivedAbstractCompositeOrPortion Public A Feature with isEnd = true must have all of isDerived = false, isAbstract = false, isComposite = false, and isPortion = false. OCL2.0: isEnd implies not (isDerived or isAbstract or isComposite or isPortion) Feature
validateFeatureIsVariable Public A Feature with isVariable = true must have an owningType that directly or indirectly specializes the Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: isVariable implies owningType <> null and owningType.specializes('Occurrences::Occurrence') Feature
validateFeatureMultiplicityDomain Public If a Feature has a multiplicity, then the featuringTypes of the multiplicity must be the same as those of the Feature itself. OCL2.0: multiplicity <> null implies multiplicity.featuringType = featuringType Feature
validateFeatureOwnedCrossSubsetting Public A Feature must have at most one ownedSubsetting that is a CrossSubsetting. OCL2.0: ownedSubsetting->selectByKind(CrossSubsetting)->size() <= 1 Feature
validateFeatureOwnedReferenceSubsetting Public A Feature must have at most one ownedSubsetting that is an ReferenceSubsetting. OCL2.0: ownedSubsetting->selectByKind(ReferenceSubsetting)->size() <= 1 Feature
validateFeaturePortionNotVariable Public No Documentation Provided OCL2.0: isPortion implies not isVariable Feature
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateOccurrenceUsageIndividualDefinition Public An OccurrenceUsage must have at most one occurrenceDefinition with isIndividual = true. OCL2.0: occurrenceDefinition-> selectByKind(OccurrenceDefinition)-> select(isIndividual).size() <= 1 OccurrenceUsage
validateOccurrenceUsageIndividualUsage Public If an OccurrenceUsage has isIndividual = true, then it must have an individualDefinition. OCL2.0: isIndividual implies individualDefinition <> null OccurrenceUsage
validateOccurrenceUsageIsPortion Public If an OccurrenceUsage has a non-null portionKind, then it must have isPortion = true. OCL2.0: portionKind <> null implies isPortion OccurrenceUsage
validateOccurrenceUsagePortionKind Public If an OccurrenceUsage has a non-null portionKind, then its owningType must be an OccurrenceDefinition or an OccurrenceUsage. OCL2.0: portionKind <> null implies owningType <> null and (owningType.oclIsKindOf(OccurrenceDefinition) or owningType.oclIsKindOf(OccurrenceUsage)) OccurrenceUsage
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type
validateUsageIsReferential Public A Usage that is directed, an end feature or has no featuringTypes must be referential. OCL2.0: direction <> null or isEnd or featuringType->isEmpty() implies isReference Usage
validateUsageVariationIsAbstract Public If a Usage is a variation, then it must be abstract. OCL2.0: isVariation implies isAbstract Usage
validateUsageVariationOwnedFeatureMembership Public If a Usage is a variation, then it must not have any ownedFeatureMemberships. OCL2.0: isVariation implies ownedFeatureMembership->isEmpty() Usage
validateUsageVariationSpecialization Public A variation Usage may not specialize any variation Definition or Usage. OCL2.0: isVariation implies not ownedSpecialization.specific->exists( oclIsKindOf(Definition) and oclAsType(Definition).isVariation or oclIsKindOf(Usage) and oclAsType(Usage).isVariation) Usage

Properties

Name Visibility Type Default Description Owner
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
assertedConstraint Public ConstraintUsage [1..1] {derived} null The ConstraintUsage to be performed by the AssertConstraintUsage. It is the referenceFeature of the ownedReferenceSubsetting for the AssertConstraintUsage, if there is one, and, otherwise, the AssertConstraintUsage itself. AssertConstraintUsage
behavior Public Behavior [0..*] {derived} {ordered} {redefined by: Expression.function} {subsetted: Feature.type} {many-to-many:Step.typedStep} null The Behaviors that type this Step. Step
chainingFeature Public Feature [0..*] {derived} {ordered} {many-to-many:Feature.chainedFeature} null The Feature that are chained together to determine the values of this Feature, derived from the chainingFeatures of the ownedFeatureChainings of this Feature, in the same order. The values of a Feature with chainingFeatures are the same as values of the last Feature in the chain, which can be found by starting with the values of the first Feature (for each instance of the domain of the original Feature), then using each of those as domain instances to find the values of the second Feature in chainingFeatures, and so on, to values of the last Feature. Feature
constraintDefinition Public Predicate [0..1] {derived} {redefines: BooleanExpression.predicate} null The (single) Predicate that is the type of this ConstraintUsage. Nominally, this will be a ConstraintDefinition, but other kinds of Predicates are also allowed, to permit use of Predicates from the Kernel Model Libraries. ConstraintUsage
crossFeature Public Feature [0..1] {derived} null The second chainingFeature of the crossedFeature of the ownedCrossSubsetting of this Feature, if it has one. Semantically, the values of the crossFeature of an end Feature must include all values of the end Feature obtained when navigating from values of the other end Features of the same owningType. Feature
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
definition Public Classifier [0..*] {derived} {ordered} {redefines: Feature.type} {redefined by: OccurrenceUsage.occurrenceDefinition} {many-to-many:Usage.definedUsage} null The Classifiers that are the types of this Usage. Nominally, these are Definitions, but other kinds of Kernel Classifiers are also allowed, to permit use of Classifiers from the Kernel Model Libraries. Usage
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {redefined by: Step.parameter} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
directedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Usage.usageWithDirectedUsage} null The usages of this Usage that are directedFeatures. Usage
direction Public FeatureDirectionKind [0..1] null Indicates how values of this Feature are determined or used (as specified for the FeatureDirectionKind). Feature
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
endOwningType Public Type [0..1] {derived} {subsetted: A_endFeature_typeWithEndFeature.typeWithEndFeature} {subsetted: Feature.owningType} null The Type that is related to this Feature by an EndFeatureMembership in which the Feature is an ownedMemberFeature. Feature
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
featureTarget Public Feature [1..1] {derived} null The last of the chainingFeatures of this Feature, if it has any. Otherwise, this Feature itself. Feature
featuringType Public Type [0..*] {derived} {ordered} {many-to-many:Feature.featureOfType} null Types that feature this Feature, such that any instance in the domain of the Feature must be classified by all of these Types, including at least all the featuringTypes of its typeFeaturings. If the Feature is chained, then the featuringTypes of the first Feature in the chain are also featuringTypes of the chained Feature. Feature
function Public Function [0..1] {derived} {redefines: Step.behavior} {redefined by: BooleanExpression.predicate} null The Function that types this Expression. Expression
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
individualDefinition Public OccurrenceDefinition [0..1] {derived} {subsetted: OccurrenceUsage.occurrenceDefinition} null The at most one occurrenceDefinition that has isIndividual = true. OccurrenceUsage
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isComposite Public Boolean [1..1] false Whether the Feature is a composite feature of its featuringType. If so, the values of the Feature cannot exist after its featuring instance no longer does and cannot be values of another composite feature that is not on the same featuring instance. Feature
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isConstant Public Boolean [1..1] false If isVariable is true, then whether the value of this Feature nevertheless does not change over all snapshots of its owningType. Feature
isDerived Public Boolean [1..1] false Whether the values of this Feature can always be computed from the values of other Features. Feature
isEnd Public Boolean [1..1] false Whether or not this Feature is an end Feature. An end Feature always has multiplicity 1, mapping each of its domain instances to a single co-domain instance. However, it may have a crossFeature, in which case values of the crossFeature must be the same as those found by navigation across instances of the owningType from values of other end Features to values of this Feature. If the owningType has n end Features, then the multiplicity, ordering, and uniqueness declared for the crossFeature of any one of these end Features constrains the cardinality, ordering, and uniqueness of the collection of values of that Feature reached by navigation when the values of the other n-1 end Features are held fixed. Feature
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isIndividual Public Boolean [1..1] false Whether this OccurrenceUsage represents the usage of the specific individual represented by its individualDefinition. OccurrenceUsage
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isModelLevelEvaluable Public Boolean [1..1] {derived} null Whether this Expression meets the constraints necessary to be evaluated at model level, that is, using metadata within the model. Expression
isNegated Public Boolean [1..1] false Whether this Invariant is asserted to be false rather than true. Invariant
isOrdered Public Boolean [1..1] false Whether an order exists for the values of this Feature or not. Feature
isPortion Public Boolean [1..1] false Whether the values of this Feature are contained in the space and time of instances of the domain of the Feature and represent the same thing as those instances. Feature
isReference Public Boolean [1..1] {derived} null Whether this Usage is a referential Usage, that is, it has isComposite = false. Usage
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
isUnique Public Boolean [1..1] true Whether or not values for this Feature must have no duplicates or not. Feature
isVariable Public Boolean [1..1] {redefined by: Usage.mayTimeVary} false Whether the value of this Feature might vary over time. That is, whether the Feature may have a different value for each snapshot of an owningType that is an Occurrence. Feature
isVariation Public Boolean [1..1] null Whether this Usage is for a variation point or not. If true, then all the memberships of the Usage must be VariantMemberships. Usage
mayTimeVary Public Boolean [1..1] {derived} {redefines: Feature.isVariable} null Whether this Usage may be time varying (that is, whether it is featured by the snapshots of its owningType, rather than being featured by the owningType itself). However, if isConstant is also true, then the value of the Usage is nevertheless constant over the entire duration of an instance of its owningType (that is, it has the same value on all snapshots). The property mayTimeVary redefines the KerML property Feature::isVariable, making it derived. The property isConstant is inherited from Feature. Usage
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
nestedAction Public ActionUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ActionUsages that are nestedUsages of this Usage. Usage
nestedAllocation Public AllocationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConnection} null The AllocationUsages that are nestedUsages of this Usage. Usage
nestedAnalysisCase Public AnalysisCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The AnalysisCaseUsages that are nestedUsages of this Usage. Usage
nestedAttribute Public AttributeUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The code>AttributeUsages that are nestedUsages of this Usage. Usage
nestedCalculation Public CalculationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAction} null The CalculationUsage that are nestedUsages of this Usage. Usage
nestedCase Public CaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCalculation} null The CaseUsages that are nestedUsages of this Usage. Usage
nestedConcern Public ConcernUsage [0..*] {derived} {subsetted: Usage.nestedRequirement} null The ConcernUsages that are nestedUsages of this Usage. Usage
nestedConnection Public ConnectorAsUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The ConnectorAsUsages that are nestedUsages of this Usage. Note that this list includes BindingConnectorAsUsages, SuccessionAsUsages, and FlowConnectionUsages because these are ConnectorAsUsages even though they are not ConnectionUsages. Usage
nestedConstraint Public ConstraintUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ConstraintUsages that are nestedUsages of this Usage. Usage
nestedEnumeration Public EnumerationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAttribute} null The code>EnumerationUsages that are nestedUsages of this Usage. Usage
nestedFlow Public FlowUsage [0..*] {derived} {subsetted: Usage.nestedConnection} null The code>FlowUsages that are nestedUsages of this Usage. Usage
nestedInterface Public InterfaceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConnection} null The InterfaceUsages that are nestedUsages of this Usage. Usage
nestedItem Public ItemUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ItemUsages that are nestedUsages of this Usage. Usage
nestedMetadata Public MetadataUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedItem} null The MetadataUsages that are nestedUsages of this of this Usage. Usage
nestedOccurrence Public OccurrenceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The OccurrenceUsages that are nestedUsages of this Usage. Usage
nestedPart Public PartUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedItem} null The PartUsages that are nestedUsages of this Usage. Usage
nestedPort Public PortUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The PortUsages that are nestedUsages of this Usage. Usage
nestedReference Public ReferenceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The ReferenceUsages that are nestedUsages of this Usage. Usage
nestedRendering Public RenderingUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedPart} null The RenderingUsages that are nestedUsages of this Usage. Usage
nestedRequirement Public RequirementUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConstraint} null The RequirementUsages that are nestedUsages of this Usage. Usage
nestedState Public StateUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAction} null The StateUsages that are nestedUsages of this Usage. Usage
nestedTransition Public TransitionUsage [0..*] {derived} {subsetted: Usage.nestedUsage} null The TransitionUsages that are nestedUsages of this Usage. Usage
nestedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.ownedFeature} null The Usages that are ownedFeatures of this Usage. Usage
nestedUseCase Public UseCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The UseCaseUsages that are nestedUsages of this Usage. Usage
nestedVerificationCase Public VerificationCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The VerificationCaseUsages that are nestedUsages of this Usage. Usage
nestedView Public ViewUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedPart} null The ViewUsages that are nestedUsages of this Usage. Usage
nestedViewpoint Public ViewpointUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedRequirement} null The ViewpointUsages that are nestedUsages of this Usage. Usage
occurrenceDefinition Public Class [0..*] {derived} {ordered} {redefines: Usage.definition} {many-to-many:OccurrenceUsage.definedOccurrence} null The Classes that are the types of this OccurrenceUsage. Nominally, these are OccurrenceDefinitions, but other kinds of kernel Classes are also allowed, to permit use of Classes from the Kernel Model Libraries. OccurrenceUsage
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedCrossSubsetting Public CrossSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a CrossSubsetting}, for which the Feature is the crossingFeature. Feature
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureChaining Public FeatureChaining [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Feature that are FeatureChainings, for which the Feature will be the featureChained. Feature
ownedFeatureInverting Public FeatureInverting [0..*] {composite} {derived} {subsetted: A_invertingFeatureInverting_featureInverted.invertingFeatureInverting} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are FeatureInvertings and for which the Feature is the featureInverted. Feature
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedRedefinition Public Redefinition [0..*] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The ownedSubsettings of this Feature that are Redefinitions, for which the Feature is the redefiningFeature. Feature
ownedReferenceSubsetting Public ReferenceSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a ReferenceSubsetting, for which the Feature is the referencingFeature. Feature
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedSubsetting Public Subsetting [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} {subsetted: A_subsettingFeature_subsetting.subsetting} null The ownedSpecializations of this Feature that are Subsettings, for which the Feature is the subsettingFeature. Feature
ownedTypeFeaturing Public TypeFeaturing [0..*] {composite} {derived} {ordered} {subsetted: A_featureOfType_typeFeaturing.typeFeaturing} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are TypeFeaturings and for which the Feature is the featureOfType. Feature
ownedTyping Public FeatureTyping [0..*] {composite} {derived} {ordered} {subsetted: Type.ownedSpecialization} {subsetted: A_typing_typedFeature.typing} null The ownedSpecializations of this Feature that are FeatureTypings, for which the Feature is the typedFeature. Feature
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningDefinition Public Definition [0..1] {derived} {subsetted: Feature.owningType} null The Definition that owns this Usage (if any). Usage
owningFeatureMembership Public FeatureMembership [0..1] {derived} {subsetted: Element.owningMembership} null The FeatureMembership that owns this Feature as an ownedMemberFeature, determining its owningType. Feature
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
owningType Public Type [0..1] {derived} {subsetted: A_typeWithFeature_feature.typeWithFeature} {subsetted: Element.owningNamespace} {subsetted: Feature.featuringType} null The Type that is the owningType of the owningFeatureMembership of this Feature. Feature
owningUsage Public Usage [0..1] {derived} {subsetted: Feature.owningType} null The Usage in which this Usage is nested (if any). Usage
parameter Public Feature [0..*] {derived} {ordered} {redefines: Type.directedFeature} {many-to-many:Step.parameteredStep} null The parameters of this Step, which are defined as its directedFeatures, whose values are passed into and/or out of a performance of the Step. Step
portionKind Public PortionKind [0..1] null The kind of temporal portion (time slice or snapshot) is represented by this OccurrenceUsage. If portionKind is not null, then the owningType of the OccurrenceUsage must be non-null, and the OccurrenceUsage represents portions of the featuring instance of the owningType. OccurrenceUsage
predicate Public Predicate [0..1] {derived} {redefines: Expression.function} {redefined by: ConstraintUsage.constraintDefinition} null The Predicate that types the Expression. BooleanExpression
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
result Public Feature [1..1] {derived} {subsetted: Type.output} {subsetted: Step.parameter} null An output parameter of the Expression whose value is the result of the Expression. The result of an Expression is either inherited from its function or it is related to the Expression via a ReturnParameterMembership, in which case it redefines the result parameter of its function. Expression
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
type Public Type [0..*] {derived} {ordered} {redefined by: Usage.definition} {many-to-many:Feature.typedFeature} null Types that restrict the values of this Feature, such that the values must be instances of all the types. The types of a Feature are derived from its typings and the types of its subsettings. If the Feature is chained, then the types of the last Feature in the chain are also types of the chained Feature. Feature
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type
usage Public Usage [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Usage.featuringUsage} null The Usages that are features of this Usage (not necessarily owned). Usage
variant Public Usage [0..*] {derived} {subsetted: Namespace.ownedMember} null The Usages which represent the variants of this Usage as a variation point Usage, if isVariation = true. If isVariation = false, then there must be no variants. Usage
variantMembership Public VariantMembership [0..*] {composite} {derived} {subsetted: Namespace.ownedMembership} null The ownedMemberships of this Usage that are VariantMemberships. If isVariation = true, then this must be all memberships of the Usage. If isVariation = false, then variantMembershipmust be empty. Usage

AssignmentActionUsage [Class]

Features

Name Description
Fully Qualified Name SysML::Systems::Actions::AssignmentActionUsage
Visibility Public
Definition An AssignmentActionUsage is an ActionUsage that is defined, directly or indirectly, by the ActionDefinition AssignmentAction from the Systems Model Library. It specifies that the value of the referent Feature, relative to the target given by the result of the targetArgument Expression, should be set to the result of the valueExpression.
Is Abstract FALSE
Generalizations ActionUsage
Specializations
Containers

Rules

Name Visibilty Description Specification Owner
checkActionUsageOwnedActionSpecialization Public A composite ActionUsage whose owningType is PartDefinition or PartUsage must directly or indirectly specialize the ActionUsage Parts::Part::ownedActions from the Systems Model Library. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(PartDefinition) or owningType.oclIsKindOf(PartUsage)) implies specializesFromLibrary('Parts::Part::ownedActions') ActionUsage
checkActionUsageSpecialization Public An ActionUsage must directly or indirectly specialize the ActionUsage Actions::actions from the Systems Model Library. OCL2.0: specializesFromLibrary('Actions::actions') ActionUsage
checkActionUsageStateActionRedefinition Public An ActionUsage that is the entry, do, or exit Action of a StateDefinition or StateUsage must redefine the entryAction, doAction, or exitAction feature, respectively, of the StateDefinition States::StateAction from the Systems Model Library. OCL2.0: owningFeatureMembership <> null and owningFeatureMembership.oclIsKindOf(StateSubactionMembership) implies let kind : StateSubactionKind = owningFeatureMembership.oclAsType(StateSubactionMembership).kind in if kind = StateSubactionKind::entry then redefinesFromLibrary('States::StateAction::entryAction') else if kind = StateSubactionKind::do then redefinesFromLibrary('States::StateAction::doAction') else redefinesFromLibrary('States::StateAction::exitAction') endif endif ActionUsage
checkActionUsageSubactionSpecialization Public A composite ActionUsage that is a subaction usage must directly or indirectly specialize the ActionUsage Actions::Action::subactions from the Systems Model Library. OCL2.0: isSubactionUsage() implies specializesFromLibrary('Actions::Action::subactions') ActionUsage
checkAssignmentActionUsageAccessedFeatureRedefinition Public The first ownedFeature of the first ownedFeature of the first parameter of an AssignmentActionUsage must redefine AssignmentAction::target::startingAt::accessedFeature. OCL2.0: let targetParameter : Feature = inputParameter(1) in targetParameter <> null and targetParameter.ownedFeature->notEmpty() and targetParameter->first().ownedFeature->notEmpty() and targetParameter->first().ownedFeature->first(). redefines('AssigmentAction::target::startingAt::accessedFeature') AssignmentActionUsage
checkAssignmentActionUsageReferentRedefinition Public The first ownedFeature of the first ownedFeature of the first parameter of an AssignmentActionUsage must redefine the referent of the AssignmentActionUsage. OCL2.0: let targetParameter : Feature = inputParameter(1) in targetParameter <> null and targetParameter.ownedFeature->notEmpty() and targetParameter->first().ownedFeature->notEmpty() and targetParameter->first().ownedFeature->first().redefines(referent) AssignmentActionUsage
checkAssignmentActionUsageSpecialization Public An AssignmentActionUsage must directly or indirectly specialize the ActionUsage Actions::assignmentActions from the Systems Model Library. OCL2.0: specializesFromLibrary('Actions::assignmentActions') AssignmentActionUsage
checkAssignmentActionUsageStartingAtRedefinition Public The first ownedFeature of the first parameter of an AssignmentActionUsage must redefine AssignmentAction::target::startingAt. OCL2.0: let targetParameter : Feature = inputParameter(1) in targetParameter <> null and targetParameter.ownedFeature->notEmpty() and targetParameter.ownedFeature->first(). redefines('AssignmentAction::target::startingAt') AssignmentActionUsage
checkAssignmentActionUsageSubactionSpecialization Public A composite AssignmentActionUsage that is a subaction usage must directly or indirectly specialize the ActionUsage Actions::Action::assignments from the Systems Model Library. OCL2.0: isSubactionUsage() implies specializesFromLibrary('Actions::Action::assignments') AssignmentActionUsage
checkFeatureCrossingSpecialization Public If this Feature has isEnd = true and ownedCrossFeature returns a non-null value, then the crossFeature of the Feature must be the Feature returned from ownedCrossFeature (which implies that this Feature has an appropriate ownedCrossSubsetting to realize this). OCL2.0: ownedCrossFeature() <> null implies crossFeature = ownedCrossFeature() Feature
checkFeatureDataValueSpecialization Public If a Feature has an ownedTyping relationship to a DataType, then it must directly or indirectly specialize Base::dataValues from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(DataType)) implies specializesFromLibrary('Base::dataValues') Feature
checkFeatureEndRedefinition Public If a Feature has isEnd = true and an owningType that is not empty, then, for each direct supertype of its owningType, it must redefine the endFeature at the same position, if any. OCL2.0: isEnd and owningType <> null implies let i : Integer = owningType.ownedEndFeature->indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | supertype.endFeature->size() >= i implies redefines(supertype.endFeature->at(i)) Feature
checkFeatureEndSpecialization Public If a Feature has isEnd = true and an owningType that is an Association or a Connector, then it must directly or indirectly specialize Links::Link::participant from the Kernel Semantic Library. OCL2.0: isEnd and owningType <> null and (owningType.oclIsKindOf(Association) or owningType.oclIsKindOf(Connector)) implies specializesFromLibrary('Links::Link::participant') Feature
checkFeatureFeatureMembershipTypeFeaturing Public If a Feature is owned via a FeatureMembership, then it must have a featuringType for which the operation isFeaturingType returns true. OCL2.0: owningFeatureMembership <> null implies featuringTypes->exists(t | isFeaturingType(t)) Feature
checkFeatureFlowFeatureRedefinition Public If a Feature is the first ownedFeature of a first or second FlowEnd, then it must directly or indirectly specialize either Transfers::Transfer::source::sourceOutput or Transfers::Transfer::target::targetInput, respectively, from the Kernel Semantic Library. OCL2.0: owningType <> null and owningType.oclIsKindOf(FlowEnd) and owningType.ownedFeature->at(1) = self implies let flowType : Type = owningType.owningType in flowType <> null implies let i : Integer = flowType.ownedFeature.indexOf(owningType) in (i = 1 implies redefinesFromLibrary('Transfers::Transfer::source::sourceOutput')) and (i = 2 implies redefinesFromLibrary('Transfers::Transfer::source::targetInput')) Feature
checkFeatureObjectSpecialization Public If a Feature has an ownedTyping relationship to a Structure, then it must directly or indirectly specialize Objects::objects from the Kernel Semantics Library. OCL2.0: ownedTyping.type->exists(selectByKind(Structure)) implies specializesFromLibary('Objects::objects') Feature
checkFeatureOccurrenceSpecialization Public If a Feature has an ownedTyping relationship to a Class, then it must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(Class)) implies specializesFromLibrary('Occurrences::occurrences') Feature
checkFeatureOwnedCrossFeatureRedefinitionSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then, for any end Feature that is redefined by the owning end Feature of this Feature, this Feature must subset the crossFeature of the redefined end Feature, if this exists. OCL2.0: isOwnedCrossFeature() implies ownedSubsetting.subsettedFeature->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature <> null).crossFeature) Feature
checkFeatureOwnedCrossFeatureSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then it must directly or indirectly specialize the types of its owning end Feature. OCL2.0: isOwnedCrossFeature() implies owner.oclAsType(Feature).type->forAll(t | self.specializes(t)) Feature
checkFeatureOwnedCrossFeatureTypeFeaturing Public If this Feature is the ownedCrossFeature of an end Feature, then it must have featuringTypes consistent with the crossing from other end Features of the owningType of its end Feature. OCL2.0: isOwnedCrossFeature() implies let otherEnds : OrderedSet(Feature) = owner.oclAsType(Feature).owningType.endFeature->excluding(self) in if (otherEnds->size() = 1) then featuringType = otherEnds->first().type else featuringType->size() = 1 and featuringType->first().isCartesianProduct() and featuringType->first().asCartesianProduct() = otherEnds.type and featuringType->first().allSupertypes()->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature() <> null).crossFeature().featuringType) endif Feature
checkFeatureParameterRedefinition Public If a Feature is a parameter of an owningType that is a Behavior or Step, but not
  • A result parameter
  • A parameter of an InvocationExpression, with at least one non-implied ownedRedefinition
then, for each direct supertype of its owningType that is also a Behavior or Step, it must redefine the parameter at the same position, if any.
OCL2.0: owningType <> null and not owningFeatureMembership. oclIsKindOf(ReturnParameterMembership) and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step) and (owningType.oclIsKindOf(InvocationExpression) implies not ownedRedefinition->exists(not isImplied)) implies let i : Integer = owningType.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership))-> indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | let ownedParameters : Sequence(Feature) = supertype.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership)) in ownedParameters->size() >= i implies redefines(ownedParameters->at(i)) Feature
checkFeaturePortionSpecialization Public If a Feature has isPortion = true, an ownedTyping relationship to a Class, and an owningType that is a Class or another Feature typed by a Class, then it must directly or indirectly specialize Occurrences::Occurrence::portions from the Kernel Semantic Library. OCL2.0: isPortion and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::portions') Feature
checkFeatureResultRedefinition Public If a Feature is a result parameter of an owningType that is a Function or Expression, then, for each direct supertype of its owningType that is also a Function or Expression, it must redefine the result parameter. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Function) and self = owningType.oclAsType(Function).result or owningType.oclIsKindOf(Expression) and self = owningType.oclAsType(Expression).result) implies owningType.ownedSpecialization.general-> select(oclIsKindOf(Function) or oclIsKindOf(Expression))-> forAll(supertype | redefines( if superType.oclIsKindOf(Function) then superType.oclAsType(Function).result else superType.oclAsType(Expression).result endif) Feature
checkFeatureSpecialization Public A Feature must directly or indirectly specialize Base::things from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::things') Feature
checkFeatureSubobjectSpecialization Public A composite Feature typed by a Structure, and whose ownedType is a Structure or another Feature typed by a Structure must directly or indirectly specialize Objects::Object::subobjects. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Structure)) and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.type->includes(oclIsKindOf(Structure))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureSuboccurrenceSpecialization Public A composite Feature that has an ownedTyping relationship to a Class, and whose ownedType is a Class or another Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureValuationSpecialization Public If a Feature has a FeatureValue, no ownedSpecializations that are not implied, and is not directed, then it must specialize the result of the value Expression of the FeatureValue. OCL2.0: direction = null and ownedSpecializations->forAll(isImplied) implies ownedMembership-> selectByKind(FeatureValue)-> forAll(fv | specializes(fv.value.result)) Feature
checkOccurrenceUsageSnapshotSpecialization Public If an OccurrenceUsage has portionKind = snapshot, then it must directly or indirectly specialize Occurrences::Occurrence::snapshots from the Kernel Semantic Library. OCL2.0: portionKind = PortionKind::snapshot implies specializesFromLibrary('Occurrences::Occurrence::snapshots') OccurrenceUsage
checkOccurrenceUsageSpecialization Public An OccurrenceUsage must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Occurrences::occurrences') OccurrenceUsage
checkOccurrenceUsageSuboccurrenceSpecialization Public A composite OccurrenceUsage, whose ownedType is a Class, another OccurrenceUsage, or any kind of Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(OccurrenceUsage) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKind(Class))) implies specializesFromLibrary('Occurrences::Occurrence::suboccurrences') OccurrenceUsage
checkOccurrenceUsageTimeSliceSpecialization Public If an OccurrenceUsage has portionKind = timeslice, then it must directly or indirectly specialize Occurrences::Occurrence::timeSlices from the Kernel Semantic Library. OCL2.0: portionKind = PortionKind::timeslice implies specializesFromLibrary('Occurrences::Occurrence::timeSlices') OccurrenceUsage
checkStepEnclosedPerformanceSpecialization Public AStep whose owningType is a Behavior or another Step must directly or indirectly specialize the Step Performances::Performance::enclosedPerformance. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step)) implies specializesFromLibrary('Performances::Performance::enclosedPerformance') Step
checkStepOwnedPerformanceSpecialization Public A composite Step whose owningType is a Structure or a Feature typed by a Structure must directly or indirectly specialize the Step Objects::Object::ownedPerformance. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Structure)) implies specializesFromLibrary('Objects::Object::ownedPerformance') Step
checkStepSpecialization Public A Step must directly or indirectly specialize the base Step Performances::performances from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::performances') Step
checkStepSubperformanceSpecialization Public AStep whose owningType is a Behavior or another Step, and which is composite, must directly or indirectly specialize the Step Performances::Performance::subperformance. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step)) and self.isComposite implies specializesFromLibrary('Performances::Performance::subperformance') Step
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
checkUsageVariationDefinitionSpecialization Public If a Usage has an owningVariationDefinition, then it must directly or indirectly specialize that Definition. OCL2.0: owningVariationDefinition <> null implies specializes(owningVariationDefinition) Usage
checkUsageVariationUsageSpecialization Public If a Usage has an owningVariationUsage, then it must directly or indirectly specialize that Usage. OCL2.0: owningVariationUsage <> null implies specializes(owningVariationUsage) Usage
checkUsageVariationUsageTypeFeaturing Public If a Usage has an owningVariationUsage, then it must have the same featuringTypes as that Usage. OCL2.0: owningVariationUsage <> null implies featuringType->asSet() = owningVariationUsage.featuringType->asSet() Usage
deriveAssignmentActionUsageReferent Public The referent of an AssignmentActionUsage is the first Feature that is the memberElement of a ownedMembership that is not a FeatureMembership. OCL2.0: referent = let unownedFeatures : Sequence(Feature) = ownedMembership-> reject(oclIsKindOf(FeatureMembership)).memberElement-> selectByKind(Feature) in if unownedFeatures->isEmpty() then null else unownedFeatures->first().oclAsType(Feature) endif AssignmentActionUsage
deriveAssignmentActionUsageValueExpression Public The valueExpression of a AssignmentActionUsage is its second argument Expression. OCL2.0: valueExpression = argument(2) AssignmentActionUsage
deriveAssignmentUsageTargetArgument Public The targetArgument of a AssignmentActionUsage is its first argument Expression. OCL2.0: targetArgument = argument(1) AssignmentActionUsage
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveFeatureChainingFeature Public The chainingFeatures of a Feature are the chainingFeatures of its ownedFeatureChainings. OCL2.0: chainingFeature = ownedFeatureChaining.chainingFeature Feature
deriveFeatureCrossFeature Public The crossFeature of a Feature is the second chainingFeature of the crossedFeature of the ownedCrossSubsetting of the Feature, if any. OCL2.0: crossFeature = if ownedCrossSubsetting = null then null else let chainingFeatures: Sequence(Feature) = ownedCrossSubsetting.crossedFeature.chainingFeature in if chainingFeatures->size() < 2 then null else chainingFeatures->at(2) endif Feature
deriveFeatureFeatureTarget Public If a Feature has no chainingFeatures, then its featureTarget is the Feature itself, otherwise the featureTarget is the last of the chainingFeatures. OCL2.0: featureTarget = if chainingFeature->isEmpty() then self else chainingFeature->last() endif Feature
deriveFeatureFeaturingType Public The featuringTypes of a Feature include the featuringTypes of all the typeFeaturings of the Feature. If the Feature has chainingFeatures, then its featuringTypes also include the featuringTypes of the first chainingFeature. OCL2.0: featuringType = let featuringTypes : OrderedSet(Type) = featuring.type->asOrderedSet() in if chainingFeature->isEmpty() then featuringTypes else featuringTypes-> union(chainingFeature->first().featuringType)-> asOrderedSet() endif Feature
deriveFeatureOwnedCrossSubsetting Public The ownedCrossSubsetting of a Feature is the ownedSubsetting that is a CrossSubsetting, if any. OCL2.0: ownedCrossSubsetting = let crossSubsettings: Sequence(CrossSubsetting) = ownedSubsetting->selectByKind(CrossSubsetting) in if crossSubsettings->isEmpty() then null else crossSubsettings->first() endif Feature
deriveFeatureOwnedFeatureChaining Public The ownedFeatureChainings of a Feature are the ownedRelationships that are FeatureChainings. OCL2.0: ownedFeatureChaining = ownedRelationship->selectByKind(FeatureChaining) Feature
deriveFeatureOwnedFeatureInverting Public The ownedFeatureInvertings of a Feature are its ownedRelationships that are FeatureInvertings. OCL2.0: ownedFeatureInverting = ownedRelationship->selectByKind(FeatureInverting)-> select(fi | fi.featureInverted = self) Feature
deriveFeatureOwnedRedefinition Public The ownedRedefinitions of a Feature are its ownedSubsettings that are Redefinitions. OCL2.0: ownedRedefinition = ownedSubsetting->selectByKind(Redefinition) Feature
deriveFeatureOwnedReferenceSubsetting Public The ownedReferenceSubsetting of a Feature is the first ownedSubsetting that is a ReferenceSubsetting (if any). OCL2.0: ownedReferenceSubsetting = let referenceSubsettings : OrderedSet(ReferenceSubsetting) = ownedSubsetting->selectByKind(ReferenceSubsetting) in if referenceSubsettings->isEmpty() then null else referenceSubsettings->first() endif Feature
deriveFeatureOwnedSubsetting Public The ownedSubsettings of a Feature are its ownedSpecializations that are Subsettings. OCL2.0: ownedSubsetting = ownedSpecialization->selectByKind(Subsetting) Feature
deriveFeatureOwnedTypeFeaturing Public The ownedTypeFeaturings of a Feature are its ownedRelationships that are TypeFeaturings and which have the Feature as their featureOfType. OCL2.0: ownedTypeFeaturing = ownedRelationship->selectByKind(TypeFeaturing)-> select(tf | tf.featureOfType = self) Feature
deriveFeatureOwnedTyping Public The ownedTypings of a Feature are its ownedSpecializations that are FeatureTypings. OCL2.0: ownedTyping = ownedGeneralization->selectByKind(FeatureTyping) Feature
deriveFeatureType Public The types of a Feature are the union of the types of its typings and the types of the Features it subsets, with all redundant supertypes removed. If the Feature has chainingFeatures, then the union also includes the types of the last chainingFeature. OCL2.0: type = let types : OrderedSet(Types) = OrderedSet{self}-> -- Note: The closure operation automatically handles circular relationships. closure(typingFeatures()).typing.type->asOrderedSet() in types->reject(t1 | types->exist(t2 | t2 <> t1 and t2.specializes(t1))) Feature
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOccurrenceUsageIndividualDefinition Public The individualDefinition of an OccurrenceUsage is the occurrenceDefinition that is an OccurrenceDefinition with isIndividual = true, if any. OCL2.0: individualDefinition = let individualDefinitions : OrderedSet(OccurrenceDefinition) = occurrenceDefinition-> selectByKind(OccurrenceDefinition)-> select(isIndividual) in if individualDefinitions->isEmpty() then null else individualDefinitions->first() endif OccurrenceUsage
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveStepBehavior Public The behaviors of a Step are all its types that are Behaviors. OCL2.0: behavior = type->selectByKind(Behavior) Step
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
deriveUsageDirectedUsage Public The directedUsages of a Usage are all its directedFeatures that are Usages. OCL2.0: directedUsage = directedFeature->selectByKind(Usage) Usage
deriveUsageIsReference Public A Usage is referential if it is not composite. OCL2.0: isReference = not isComposite Usage
deriveUsageMayTimeVary Public A Usage mayTimeVary if and only if all of the following are true
  • It has an owningType that specializes Occurrences::Occurrence (from the Kernel Semantic Library).
  • It is not a portion.
  • It does not specialize Links::SelfLink or Occurrences::HappensLink (from the Kernel Semantic Library).
  • If isComposite = true, it does not specialize Actions::Action (from the Systems Model Library).
OCL2.0: mayTimeVary = owningType <> null and owningType.specializesFromLibrary('Occurrences::Occurrence') and not ( isPortion or specializesFromLibrary('Links::SelfLink') or specializesFromLibrary('Occurrences::HappensLink') or isComposite and specializesFromLibrary('Actions::Action') ) Usage
deriveUsageNestedAction Public The ownedActions of a Usage are all its ownedUsages that are ActionUsages. OCL2.0: nestedAction = nestedUsage->selectByKind(ActionUsage) Usage
deriveUsageNestedAllocation Public The ownedAllocations of a Usage are all its ownedUsages that are AllocationUsages. OCL2.0: nestedAllocation = nestedUsage->selectByKind(AllocationUsage) Usage
deriveUsageNestedAnalysisCase Public The ownedAnalysisCases of a Usage are all its ownedUsages that are AnalysisCaseUsages. OCL2.0: nestedAnalysisCase = nestedUsage->selectByKind(AnalysisCaseUsage) Usage
deriveUsageNestedAttribute Public The ownedAttributes of a Usage are all its ownedUsages that are AttributeUsages. OCL2.0: nestedAttribute = nestedUsage->selectByKind(AttributeUsage) Usage
deriveUsageNestedCalculation Public The ownedCalculations of a Usage are all its ownedUsages that are CalculationUsages. OCL2.0: nestedCalculation = nestedUsage->selectByKind(CalculationUsage) Usage
deriveUsageNestedCase Public The ownedCases of a Usage are all its ownedUsages that are CaseUsages. OCL2.0: nestedCase = nestedUsage->selectByKind(CaseUsage) Usage
deriveUsageNestedConcern Public The ownedConcerns of a Usage are all its ownedUsages that are ConcernUsages. OCL2.0: nestedConcern = nestedUsage->selectByKind(ConcernUsage) Usage
deriveUsageNestedConnection Public The ownedConnections of a Usage are all its ownedUsages that are ConnectorAsUsages. OCL2.0: nestedConnection = nestedUsage->selectByKind(ConnectorAsUsage) Usage
deriveUsageNestedConstraint Public The ownedConstraints of a Usage are all its ownedUsages that are ConstraintUsages. OCL2.0: nestedConstraint = nestedUsage->selectByKind(ConstraintUsage) Usage
deriveUsageNestedEnumeration Public The ownedEnumerations of a Usage are all its ownedUsages that are EnumerationUsages. OCL2.0: ownedNested = nestedUsage->selectByKind(EnumerationUsage) Usage
deriveUsageNestedFlow Public The ownedFlows of a Usage are all its ownedUsages that are FlowConnectionUsages. OCL2.0: nestedFlow = nestedUsage->selectByKind(FlowConnectionUsage) Usage
deriveUsageNestedInterface Public The ownedInterfaces of a Usage are all its ownedUsages that are InterfaceUsages. OCL2.0: nestedInterface = nestedUsage->selectByKind(ReferenceUsage) Usage
deriveUsageNestedItem Public The ownedItems of a Usage are all its ownedUsages that are ItemUsages. OCL2.0: nestedItem = nestedUsage->selectByKind(ItemUsage) Usage
deriveUsageNestedMetadata Public The ownedMetadata of a Usage are all its ownedUsages that are MetadataUsages. OCL2.0: nestedMetadata = nestedUsage->selectByKind(MetadataUsage) Usage
deriveUsageNestedOccurrence Public The ownedOccurrences of a Usage are all its ownedUsages that are OccurrenceUsages. OCL2.0: nestedOccurrence = nestedUsage->selectByKind(OccurrenceUsage) Usage
deriveUsageNestedPart Public The ownedParts of a Usage are all its ownedUsages that are PartUsages. OCL2.0: nestedPart = nestedUsage->selectByKind(PartUsage) Usage
deriveUsageNestedPort Public The ownedPorts of a Usage are all its ownedUsages that are PortUsages. OCL2.0: nestedPort = nestedUsage->selectByKind(PortUsage) Usage
deriveUsageNestedReference Public The ownedReferences of a Usage are all its ownedUsages that are ReferenceUsages. OCL2.0: nestedReference = nestedUsage->selectByKind(ReferenceUsage) Usage
deriveUsageNestedRendering Public The ownedRenderings of a Usage are all its ownedUsages that are RenderingUsages. OCL2.0: nestedRendering = nestedUsage->selectByKind(RenderingUsage) Usage
deriveUsageNestedRequirement Public The ownedRequirements of a Usage are all its ownedUsages that are RequirementUsages. OCL2.0: nestedRequirement = nestedUsage->selectByKind(RequirementUsage) Usage
deriveUsageNestedState Public The ownedStates of a Usage are all its ownedUsages that are StateUsages. OCL2.0: nestedState = nestedUsage->selectByKind(StateUsage) Usage
deriveUsageNestedTransition Public The ownedTransitions of a Usage are all its ownedUsages that are TransitionUsages. OCL2.0: nestedTransition = nestedUsage->selectByKind(TransitionUsage) Usage
deriveUsageNestedUsage Public The ownedUsages of a Usage are all its ownedFeatures that are Usages. OCL2.0: nestedUsage = ownedFeature->selectByKind(Usage) Usage
deriveUsageNestedUseCase Public The ownedUseCases of a Usage are all its ownedUsages that are UseCaseUsages. OCL2.0: nestedUseCase = nestedUsage->selectByKind(UseCaseUsage) Usage
deriveUsageNestedVerificationCase Public The ownedValidationCases of a Usage are all its ownedUsages that are ValidationCaseUsages. OCL2.0: nestedVerificationCase = nestedUsage->selectByKind(VerificationCaseUsage) Usage
deriveUsageNestedView Public The ownedViews of a Usage are all its ownedUsages that are ViewUsages. OCL2.0: nestedView = nestedUsage->selectByKind(ViewUsage) Usage
deriveUsageNestedViewpoint Public The ownedViewpoints of a Usage are all its ownedUsages that are ViewpointUsages. OCL2.0: nestedViewpoint = nestedUsage->selectByKind(ViewpointUsage) Usage
deriveUsageUsage Public The usages of a Usage are all its features that are Usages. OCL2.0: usage = feature->selectByKind(Usage) Usage
deriveUsageVariant Public The variants of a Usage are the ownedVariantUsages of its variantMemberships. OCL2.0: variant = variantMembership.ownedVariantUsage Usage
deriveUsageVariantMembership Public The variantMemberships of a Usage are those ownedMemberships that are VariantMemberships. OCL2.0: variantMembership = ownedMembership->selectByKind(VariantMembership) Usage
validateAssignmentActionUsage Public The featureTarget of the referent of an AssignmentActionUsage must be able to have time-varying values. OCL2.0: referent <> null implies referent.featureTarget.mayTimeVary AssignmentActionUsage
validateAssignmentActionUsageReferent Public An AssignmentActionUsage must have an ownedMembership that is not an OwningMembership and whose memberElement is a Feature. OCL2.0: ownedMembership->exists( not oclIsKindOf(OwningMembership) and memberElement.oclIsKindOf(Feature)) AssignmentActionUsage
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateFeatureChainingFeatureConformance Public Each chainingFeature (other than the first) must be featured within the previous chainingFeature. OCL2.0: Sequence{2..chainingFeature->size()}->forAll(i | chainingFeature->at(i).isFeaturedWithin(chainingFeature->at(i-1))) Feature
validateFeatureChainingFeatureNotOne Public A Feature must have either no chainingFeatures or more than one. OCL2.0: chainingFeature->size() <> 1 Feature
validateFeatureChainingFeaturesNotSelf Public A Feature cannot be one of its own chainingFeatures. English: chainingFeature->excludes(self) Feature
validateFeatureConstantIsVariable Public A Feature with isConstant = true must have isVariable = true. OCL2.0: isConstant implies isVariable Feature
validateFeatureCrossFeatureSpecialization Public If this Feature has a crossFeature, then, for any Feature that is redefined by this Feature, the crossFeature must specialize the crossFeature of the redefined end Feature, if this exists. OCL2.0: crossFeature <> null implies ownedRedefinition.redefinedFeature.crossFeature-> forAll(f | f <> null implies crossFeature.specializes(f)) Feature
validateFeatureCrossFeatureType Public The crossFeature of a Feature must have the same types as the Feature. OCL2.0: crossFeature <> null implies crossFeature.type->asSet() = type->asSet() Feature
validateFeatureEndIsConstant Public A Feature with isEnd = true and isVariable = true must have isConstant = true. OCL2.0: isEnd and isVariable implies isConstant Feature
validateFeatureEndMultiplicity Public If a Feature has isEnd = true, then it must have multiplicity 1..1. OCL2.0: isEnd implies multiplicities().allSuperTypes()->flatten()-> selectByKind(MultiplicityRange)->exists(hasBounds(1,1)) Feature
validateFeatureEndNoDirection Public A Feature with isEnd = true must have no direction. OCL2.0: isEnd implied direction = null Feature
validateFeatureEndNotDerivedAbstractCompositeOrPortion Public A Feature with isEnd = true must have all of isDerived = false, isAbstract = false, isComposite = false, and isPortion = false. OCL2.0: isEnd implies not (isDerived or isAbstract or isComposite or isPortion) Feature
validateFeatureIsVariable Public A Feature with isVariable = true must have an owningType that directly or indirectly specializes the Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: isVariable implies owningType <> null and owningType.specializes('Occurrences::Occurrence') Feature
validateFeatureMultiplicityDomain Public If a Feature has a multiplicity, then the featuringTypes of the multiplicity must be the same as those of the Feature itself. OCL2.0: multiplicity <> null implies multiplicity.featuringType = featuringType Feature
validateFeatureOwnedCrossSubsetting Public A Feature must have at most one ownedSubsetting that is a CrossSubsetting. OCL2.0: ownedSubsetting->selectByKind(CrossSubsetting)->size() <= 1 Feature
validateFeatureOwnedReferenceSubsetting Public A Feature must have at most one ownedSubsetting that is an ReferenceSubsetting. OCL2.0: ownedSubsetting->selectByKind(ReferenceSubsetting)->size() <= 1 Feature
validateFeaturePortionNotVariable Public No Documentation Provided OCL2.0: isPortion implies not isVariable Feature
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateOccurrenceUsageIndividualDefinition Public An OccurrenceUsage must have at most one occurrenceDefinition with isIndividual = true. OCL2.0: occurrenceDefinition-> selectByKind(OccurrenceDefinition)-> select(isIndividual).size() <= 1 OccurrenceUsage
validateOccurrenceUsageIndividualUsage Public If an OccurrenceUsage has isIndividual = true, then it must have an individualDefinition. OCL2.0: isIndividual implies individualDefinition <> null OccurrenceUsage
validateOccurrenceUsageIsPortion Public If an OccurrenceUsage has a non-null portionKind, then it must have isPortion = true. OCL2.0: portionKind <> null implies isPortion OccurrenceUsage
validateOccurrenceUsagePortionKind Public If an OccurrenceUsage has a non-null portionKind, then its owningType must be an OccurrenceDefinition or an OccurrenceUsage. OCL2.0: portionKind <> null implies owningType <> null and (owningType.oclIsKindOf(OccurrenceDefinition) or owningType.oclIsKindOf(OccurrenceUsage)) OccurrenceUsage
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type
validateUsageIsReferential Public A Usage that is directed, an end feature or has no featuringTypes must be referential. OCL2.0: direction <> null or isEnd or featuringType->isEmpty() implies isReference Usage
validateUsageVariationIsAbstract Public If a Usage is a variation, then it must be abstract. OCL2.0: isVariation implies isAbstract Usage
validateUsageVariationOwnedFeatureMembership Public If a Usage is a variation, then it must not have any ownedFeatureMemberships. OCL2.0: isVariation implies ownedFeatureMembership->isEmpty() Usage
validateUsageVariationSpecialization Public A variation Usage may not specialize any variation Definition or Usage. OCL2.0: isVariation implies not ownedSpecialization.specific->exists( oclIsKindOf(Definition) and oclAsType(Definition).isVariation or oclIsKindOf(Usage) and oclAsType(Usage).isVariation) Usage

Properties

Name Visibility Type Default Description Owner
actionDefinition Public Behavior [0..*] {derived} {ordered} {redefines: Step.behavior} {many-to-many:ActionUsage.definedAction} null The Behaviors that are the types of this ActionUsage. Nominally, these would be ActionDefinitions, but other kinds of Kernel Behaviors are also allowed, to permit use of Behaviors from the Kernel Model Libraries. ActionUsage
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
behavior Public Behavior [0..*] {derived} {ordered} {redefined by: ActionUsage.actionDefinition} {subsetted: Feature.type} {many-to-many:Step.typedStep} null The Behaviors that type this Step. Step
chainingFeature Public Feature [0..*] {derived} {ordered} {many-to-many:Feature.chainedFeature} null The Feature that are chained together to determine the values of this Feature, derived from the chainingFeatures of the ownedFeatureChainings of this Feature, in the same order. The values of a Feature with chainingFeatures are the same as values of the last Feature in the chain, which can be found by starting with the values of the first Feature (for each instance of the domain of the original Feature), then using each of those as domain instances to find the values of the second Feature in chainingFeatures, and so on, to values of the last Feature. Feature
crossFeature Public Feature [0..1] {derived} null The second chainingFeature of the crossedFeature of the ownedCrossSubsetting of this Feature, if it has one. Semantically, the values of the crossFeature of an end Feature must include all values of the end Feature obtained when navigating from values of the other end Features of the same owningType. Feature
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
definition Public Classifier [0..*] {derived} {ordered} {redefines: Feature.type} {redefined by: OccurrenceUsage.occurrenceDefinition} {many-to-many:Usage.definedUsage} null The Classifiers that are the types of this Usage. Nominally, these are Definitions, but other kinds of Kernel Classifiers are also allowed, to permit use of Classifiers from the Kernel Model Libraries. Usage
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {redefined by: Step.parameter} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
directedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Usage.usageWithDirectedUsage} null The usages of this Usage that are directedFeatures. Usage
direction Public FeatureDirectionKind [0..1] null Indicates how values of this Feature are determined or used (as specified for the FeatureDirectionKind). Feature
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
endOwningType Public Type [0..1] {derived} {subsetted: A_endFeature_typeWithEndFeature.typeWithEndFeature} {subsetted: Feature.owningType} null The Type that is related to this Feature by an EndFeatureMembership in which the Feature is an ownedMemberFeature. Feature
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
featureTarget Public Feature [1..1] {derived} null The last of the chainingFeatures of this Feature, if it has any. Otherwise, this Feature itself. Feature
featuringType Public Type [0..*] {derived} {ordered} {many-to-many:Feature.featureOfType} null Types that feature this Feature, such that any instance in the domain of the Feature must be classified by all of these Types, including at least all the featuringTypes of its typeFeaturings. If the Feature is chained, then the featuringTypes of the first Feature in the chain are also featuringTypes of the chained Feature. Feature
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
individualDefinition Public OccurrenceDefinition [0..1] {derived} {subsetted: OccurrenceUsage.occurrenceDefinition} null The at most one occurrenceDefinition that has isIndividual = true. OccurrenceUsage
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isComposite Public Boolean [1..1] false Whether the Feature is a composite feature of its featuringType. If so, the values of the Feature cannot exist after its featuring instance no longer does and cannot be values of another composite feature that is not on the same featuring instance. Feature
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isConstant Public Boolean [1..1] false If isVariable is true, then whether the value of this Feature nevertheless does not change over all snapshots of its owningType. Feature
isDerived Public Boolean [1..1] false Whether the values of this Feature can always be computed from the values of other Features. Feature
isEnd Public Boolean [1..1] false Whether or not this Feature is an end Feature. An end Feature always has multiplicity 1, mapping each of its domain instances to a single co-domain instance. However, it may have a crossFeature, in which case values of the crossFeature must be the same as those found by navigation across instances of the owningType from values of other end Features to values of this Feature. If the owningType has n end Features, then the multiplicity, ordering, and uniqueness declared for the crossFeature of any one of these end Features constrains the cardinality, ordering, and uniqueness of the collection of values of that Feature reached by navigation when the values of the other n-1 end Features are held fixed. Feature
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isIndividual Public Boolean [1..1] false Whether this OccurrenceUsage represents the usage of the specific individual represented by its individualDefinition. OccurrenceUsage
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isOrdered Public Boolean [1..1] false Whether an order exists for the values of this Feature or not. Feature
isPortion Public Boolean [1..1] false Whether the values of this Feature are contained in the space and time of instances of the domain of the Feature and represent the same thing as those instances. Feature
isReference Public Boolean [1..1] {derived} null Whether this Usage is a referential Usage, that is, it has isComposite = false. Usage
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
isUnique Public Boolean [1..1] true Whether or not values for this Feature must have no duplicates or not. Feature
isVariable Public Boolean [1..1] {redefined by: Usage.mayTimeVary} false Whether the value of this Feature might vary over time. That is, whether the Feature may have a different value for each snapshot of an owningType that is an Occurrence. Feature
isVariation Public Boolean [1..1] null Whether this Usage is for a variation point or not. If true, then all the memberships of the Usage must be VariantMemberships. Usage
mayTimeVary Public Boolean [1..1] {derived} {redefines: Feature.isVariable} null Whether this Usage may be time varying (that is, whether it is featured by the snapshots of its owningType, rather than being featured by the owningType itself). However, if isConstant is also true, then the value of the Usage is nevertheless constant over the entire duration of an instance of its owningType (that is, it has the same value on all snapshots). The property mayTimeVary redefines the KerML property Feature::isVariable, making it derived. The property isConstant is inherited from Feature. Usage
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
nestedAction Public ActionUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ActionUsages that are nestedUsages of this Usage. Usage
nestedAllocation Public AllocationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConnection} null The AllocationUsages that are nestedUsages of this Usage. Usage
nestedAnalysisCase Public AnalysisCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The AnalysisCaseUsages that are nestedUsages of this Usage. Usage
nestedAttribute Public AttributeUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The code>AttributeUsages that are nestedUsages of this Usage. Usage
nestedCalculation Public CalculationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAction} null The CalculationUsage that are nestedUsages of this Usage. Usage
nestedCase Public CaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCalculation} null The CaseUsages that are nestedUsages of this Usage. Usage
nestedConcern Public ConcernUsage [0..*] {derived} {subsetted: Usage.nestedRequirement} null The ConcernUsages that are nestedUsages of this Usage. Usage
nestedConnection Public ConnectorAsUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The ConnectorAsUsages that are nestedUsages of this Usage. Note that this list includes BindingConnectorAsUsages, SuccessionAsUsages, and FlowConnectionUsages because these are ConnectorAsUsages even though they are not ConnectionUsages. Usage
nestedConstraint Public ConstraintUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ConstraintUsages that are nestedUsages of this Usage. Usage
nestedEnumeration Public EnumerationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAttribute} null The code>EnumerationUsages that are nestedUsages of this Usage. Usage
nestedFlow Public FlowUsage [0..*] {derived} {subsetted: Usage.nestedConnection} null The code>FlowUsages that are nestedUsages of this Usage. Usage
nestedInterface Public InterfaceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConnection} null The InterfaceUsages that are nestedUsages of this Usage. Usage
nestedItem Public ItemUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ItemUsages that are nestedUsages of this Usage. Usage
nestedMetadata Public MetadataUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedItem} null The MetadataUsages that are nestedUsages of this of this Usage. Usage
nestedOccurrence Public OccurrenceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The OccurrenceUsages that are nestedUsages of this Usage. Usage
nestedPart Public PartUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedItem} null The PartUsages that are nestedUsages of this Usage. Usage
nestedPort Public PortUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The PortUsages that are nestedUsages of this Usage. Usage
nestedReference Public ReferenceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The ReferenceUsages that are nestedUsages of this Usage. Usage
nestedRendering Public RenderingUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedPart} null The RenderingUsages that are nestedUsages of this Usage. Usage
nestedRequirement Public RequirementUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConstraint} null The RequirementUsages that are nestedUsages of this Usage. Usage
nestedState Public StateUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAction} null The StateUsages that are nestedUsages of this Usage. Usage
nestedTransition Public TransitionUsage [0..*] {derived} {subsetted: Usage.nestedUsage} null The TransitionUsages that are nestedUsages of this Usage. Usage
nestedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.ownedFeature} null The Usages that are ownedFeatures of this Usage. Usage
nestedUseCase Public UseCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The UseCaseUsages that are nestedUsages of this Usage. Usage
nestedVerificationCase Public VerificationCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The VerificationCaseUsages that are nestedUsages of this Usage. Usage
nestedView Public ViewUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedPart} null The ViewUsages that are nestedUsages of this Usage. Usage
nestedViewpoint Public ViewpointUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedRequirement} null The ViewpointUsages that are nestedUsages of this Usage. Usage
occurrenceDefinition Public Class [0..*] {derived} {ordered} {redefines: Usage.definition} {many-to-many:OccurrenceUsage.definedOccurrence} null The Classes that are the types of this OccurrenceUsage. Nominally, these are OccurrenceDefinitions, but other kinds of kernel Classes are also allowed, to permit use of Classes from the Kernel Model Libraries. OccurrenceUsage
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedCrossSubsetting Public CrossSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a CrossSubsetting}, for which the Feature is the crossingFeature. Feature
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureChaining Public FeatureChaining [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Feature that are FeatureChainings, for which the Feature will be the featureChained. Feature
ownedFeatureInverting Public FeatureInverting [0..*] {composite} {derived} {subsetted: A_invertingFeatureInverting_featureInverted.invertingFeatureInverting} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are FeatureInvertings and for which the Feature is the featureInverted. Feature
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedRedefinition Public Redefinition [0..*] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The ownedSubsettings of this Feature that are Redefinitions, for which the Feature is the redefiningFeature. Feature
ownedReferenceSubsetting Public ReferenceSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a ReferenceSubsetting, for which the Feature is the referencingFeature. Feature
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedSubsetting Public Subsetting [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} {subsetted: A_subsettingFeature_subsetting.subsetting} null The ownedSpecializations of this Feature that are Subsettings, for which the Feature is the subsettingFeature. Feature
ownedTypeFeaturing Public TypeFeaturing [0..*] {composite} {derived} {ordered} {subsetted: A_featureOfType_typeFeaturing.typeFeaturing} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are TypeFeaturings and for which the Feature is the featureOfType. Feature
ownedTyping Public FeatureTyping [0..*] {composite} {derived} {ordered} {subsetted: Type.ownedSpecialization} {subsetted: A_typing_typedFeature.typing} null The ownedSpecializations of this Feature that are FeatureTypings, for which the Feature is the typedFeature. Feature
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningDefinition Public Definition [0..1] {derived} {subsetted: Feature.owningType} null The Definition that owns this Usage (if any). Usage
owningFeatureMembership Public FeatureMembership [0..1] {derived} {subsetted: Element.owningMembership} null The FeatureMembership that owns this Feature as an ownedMemberFeature, determining its owningType. Feature
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
owningType Public Type [0..1] {derived} {subsetted: A_typeWithFeature_feature.typeWithFeature} {subsetted: Element.owningNamespace} {subsetted: Feature.featuringType} null The Type that is the owningType of the owningFeatureMembership of this Feature. Feature
owningUsage Public Usage [0..1] {derived} {subsetted: Feature.owningType} null The Usage in which this Usage is nested (if any). Usage
parameter Public Feature [0..*] {derived} {ordered} {redefines: Type.directedFeature} {many-to-many:Step.parameteredStep} null The parameters of this Step, which are defined as its directedFeatures, whose values are passed into and/or out of a performance of the Step. Step
portionKind Public PortionKind [0..1] null The kind of temporal portion (time slice or snapshot) is represented by this OccurrenceUsage. If portionKind is not null, then the owningType of the OccurrenceUsage must be non-null, and the OccurrenceUsage represents portions of the featuring instance of the owningType. OccurrenceUsage
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
referent Public Feature [1..1] {derived} {subsetted: Namespace.member} null The Feature whose value is to be set. AssignmentActionUsage
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
targetArgument Public Expression [0..1] {derived} null The Expression whose value is an occurrence in the domain of the referent Feature, for which the value of the referent will be set to the result of the valueExpression by this AssignmentActionUsage. AssignmentActionUsage
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
type Public Type [0..*] {derived} {ordered} {redefined by: Usage.definition} {many-to-many:Feature.typedFeature} null Types that restrict the values of this Feature, such that the values must be instances of all the types. The types of a Feature are derived from its typings and the types of its subsettings. If the Feature is chained, then the types of the last Feature in the chain are also types of the chained Feature. Feature
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type
usage Public Usage [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Usage.featuringUsage} null The Usages that are features of this Usage (not necessarily owned). Usage
valueExpression Public Expression [0..1] {derived} null The Expression whose result is to be assigned to the referent Feature. AssignmentActionUsage
variant Public Usage [0..*] {derived} {subsetted: Namespace.ownedMember} null The Usages which represent the variants of this Usage as a variation point Usage, if isVariation = true. If isVariation = false, then there must be no variants. Usage
variantMembership Public VariantMembership [0..*] {composite} {derived} {subsetted: Namespace.ownedMembership} null The ownedMemberships of this Usage that are VariantMemberships. If isVariation = true, then this must be all memberships of the Usage. If isVariation = false, then variantMembershipmust be empty. Usage

Association [Class]

Features

Name Description
Fully Qualified Name KerML::Kernel::Associations::Association
Visibility Public
Definition An Association is a Relationship and a Classifier to enable classification of links between things (in the universe). The co-domains (types) of the associationEnd Features are the relatedTypes, as co-domain and participants (linked things) of an Association identify each other.
Is Abstract FALSE
Generalizations Classifier Relationship
Specializations AssociationStructure Interaction
Containers

Rules

Name Visibilty Description Specification Owner
checkAssociationBinarySpecialization Public A binary Association must directly or indirectly specialize the base Association Links::binaryLink from the Kernel Semantic Library. OCL2.0: associationEnd->size() = 2 implies specializesFromLibrary('Links::BinaryLink') Association
checkAssociationSpecialization Public An Association must directly or indirectly specialize the base Association Links::Link from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Links::Link') Association
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
deriveAssociationRelatedType Public The relatedTypes of an Association are the types of its associationEnds. OCL2.0: relatedType = associationEnd.type Association
deriveAssociationSourceType Public The sourceType of an Association is its first relatedType (if any). OCL2.0: sourceType = if relatedType->isEmpty() then null else relatedType->first() endif Association
deriveAssociationTargetType Public No Documentation Provided OCL2.0: targetType = if relatedType->size() < 2 then OrderedSet{} else relatedType-> subSequence(2, relatedType->size())-> asOrderedSet() endif Association
deriveClassifierOwnedSubclassification Public The ownedSubclassifications of a Classifier are its ownedSpecializations that are Subclassifications. OCL2.0: ownedSubclassification = ownedSpecialization->selectByKind(Subclassification) Classifier
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveRelationshipRelatedElement Public The relatedElements of a Relationship consist of all of its source Elements followed by all of its target Elements. OCL2.0: relatedElement = source->union(target) Relationship
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
validateAssociationBinarySpecialization Public If an Association has more than two associationEnds, then it must not specialize, directly or indirectly, the Association BinaryLink from the Kernel Semantic Library. OCL2.0: associationEnds->size() > 2 implies not specializesFromLibrary('Links::BinaryLink') Association
validateAssociationEndTypes Public The ownedEndFeatures of an Association must have exactly one type. OCL2.0: ownedEndFeature->forAll(type->size() = 1) Association
validateAssociationRelatedTypes Public If an Association is concrete (not abstract), then it must have at least two relatedTypes. OCL2.0: not isAbstract implies relatedType->size() >= 2 Association
validateAssociationStructureIntersection Public If an Association is also a kind of Structure, then it must be an AssociationStructure. English: oclIsKindOf(Structure) = oclIsKindOf(AssociationStructure) Association
validateClassifierMultiplicityDomain Public If a Classifier has a multiplicity, then the multiplicity must have no featuringTypes (meaning that its domain is implicitly Base::Anything). OCL2.0: multiplicity <> null implies multiplicity.featuringType->isEmpty() Classifier
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type

Properties

Name Visibility Type Default Description Owner
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
associationEnd Public Feature [0..*] {derived} {redefines: Type.endFeature} {many-to-many:Association.associationWithEnd} null The features of the Association that identify the things that can be related by it. A concrete Association must have at least two associationEnds. When it has exactly two, the Association is called a binary Association. Association
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {redefined by: Association.associationEnd} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isImplied Public Boolean [1..1] false Whether this Relationship was generated by tooling to meet semantic rules, rather than being directly created by a modeler. Relationship
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedRelatedElement Public Element [0..*] {composite} {ordered} {subsetted: Relationship.relatedElement} null The relatedElements of this Relationship that are owned by the Relationship. Relationship
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedSubclassification Public Subclassification [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} null The ownedSpecializations of this Classifier that are Subclassifications, for which this Classifier is the subclassifier. Classifier
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelatedElement Public Element [0..1] {subsetted: Relationship.relatedElement} null The relatedElement of this Relationship that owns the Relationship, if any. Relationship
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
relatedElement Public Element [0..*] {derived} {ordered} {redefined by: Association.relatedType} {many-to-many:Relationship.relationship} null The Elements that are related by this Relationship, derived as the union of the source and target Elements of the Relationship. Relationship
relatedType Public Type [0..*] {derived} {ordered} {redefines: Relationship.relatedElement} {many-to-many:Association.association} null The types of the associationEnds of the Association, which are the relatedElements of the Association considered as a Relationship. Association
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
source Public Element [0..*] {ordered} {redefined by: Association.sourceType} {subsetted: Relationship.relatedElement} {many-to-many:Relationship.sourceRelationship} null The relatedElements from which this Relationship is considered to be directed. Relationship
sourceType Public Type [0..1] {derived} {redefines: Relationship.source} {subsetted: Association.relatedType} null The source relatedType for this Association. It is the first relatedType of the Association. Association
target Public Element [0..*] {ordered} {redefined by: Association.targetType} {subsetted: Relationship.relatedElement} {many-to-many:Relationship.targetRelationship} null The relatedElements to which this Relationship is considered to be directed. Relationship
targetType Public Type [0..*] {derived} {redefines: Relationship.target} {subsetted: Association.relatedType} {many-to-many:Association.targetAssociation} null The target relatedTypes for this Association. This includes all the relatedTypes other than the sourceType. Association
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type

AssociationStructure [Class]

Features

Name Description
Fully Qualified Name KerML::Kernel::Associations::AssociationStructure
Visibility Public
Definition An AssociationStructure is an Association that is also a Structure, classifying link objects that are both links and objects. As objects, link objects can be created and destroyed, and their non-end Features can change over time. However, the values of the end Features of a link object are fixed and cannot change over its lifetime.
Is Abstract FALSE
Generalizations Association Structure
Specializations
Containers

Rules

Name Visibilty Description Specification Owner
checkAssociationBinarySpecialization Public A binary Association must directly or indirectly specialize the base Association Links::binaryLink from the Kernel Semantic Library. OCL2.0: associationEnd->size() = 2 implies specializesFromLibrary('Links::BinaryLink') Association
checkAssociationSpecialization Public An Association must directly or indirectly specialize the base Association Links::Link from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Links::Link') Association
checkAssociationStructureBinarySpecialization Public A binary AssociationStructure must directly or indirectly specialize the base AssociationStructure Objects::BinaryLinkObject from the Kernel Semantic Library. OCL2.0: endFeature->size() = 2 implies specializesFromLibrary('Objects::BinaryLinkObject') AssociationStructure
checkAssociationStructureSpecialization Public An AssociationStructure must directly or indirectly specialize the base AssociationStructure Objects::LinkObject from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Objects::LinkObject') AssociationStructure
checkClassSpecialization Public A Class must directly or indirectly specialize the base Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Occurrences::Occurrence') Class
checkStructureSpecialization Public A Structure must directly or indirectly specialize the base Structure Objects::Object from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Objects::Object') Structure
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
deriveAssociationRelatedType Public The relatedTypes of an Association are the types of its associationEnds. OCL2.0: relatedType = associationEnd.type Association
deriveAssociationSourceType Public The sourceType of an Association is its first relatedType (if any). OCL2.0: sourceType = if relatedType->isEmpty() then null else relatedType->first() endif Association
deriveAssociationTargetType Public No Documentation Provided OCL2.0: targetType = if relatedType->size() < 2 then OrderedSet{} else relatedType-> subSequence(2, relatedType->size())-> asOrderedSet() endif Association
deriveClassifierOwnedSubclassification Public The ownedSubclassifications of a Classifier are its ownedSpecializations that are Subclassifications. OCL2.0: ownedSubclassification = ownedSpecialization->selectByKind(Subclassification) Classifier
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveRelationshipRelatedElement Public The relatedElements of a Relationship consist of all of its source Elements followed by all of its target Elements. OCL2.0: relatedElement = source->union(target) Relationship
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
validateAssociationBinarySpecialization Public If an Association has more than two associationEnds, then it must not specialize, directly or indirectly, the Association BinaryLink from the Kernel Semantic Library. OCL2.0: associationEnds->size() > 2 implies not specializesFromLibrary('Links::BinaryLink') Association
validateAssociationEndTypes Public The ownedEndFeatures of an Association must have exactly one type. OCL2.0: ownedEndFeature->forAll(type->size() = 1) Association
validateAssociationRelatedTypes Public If an Association is concrete (not abstract), then it must have at least two relatedTypes. OCL2.0: not isAbstract implies relatedType->size() >= 2 Association
validateAssociationStructureIntersection Public If an Association is also a kind of Structure, then it must be an AssociationStructure. English: oclIsKindOf(Structure) = oclIsKindOf(AssociationStructure) Association
validateClassifierMultiplicityDomain Public If a Classifier has a multiplicity, then the multiplicity must have no featuringTypes (meaning that its domain is implicitly Base::Anything). OCL2.0: multiplicity <> null implies multiplicity.featuringType->isEmpty() Classifier
validateClassSpecialization Public A Class must not specialize a DataType and it can only specialize an Association if it is also itself a kind of Association (such as an AssociationStructure or Interaction). OCL2.0: ownedSpecialization.general-> forAll(not oclIsKindOf(DataType)) and not oclIsKindOf(Association) implies ownedSpecialization.general-> forAll(not oclIsKindOf(Association)) Class
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateStructureSpecialization Public A Structure must not specialize a Behavior. OCL2.0: ownedSpecialization.general->forAll(not oclIsKindOf(Behavior)) Structure
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type

Properties

Name Visibility Type Default Description Owner
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
associationEnd Public Feature [0..*] {derived} {redefines: Type.endFeature} {many-to-many:Association.associationWithEnd} null The features of the Association that identify the things that can be related by it. A concrete Association must have at least two associationEnds. When it has exactly two, the Association is called a binary Association. Association
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {redefined by: Association.associationEnd} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isImplied Public Boolean [1..1] false Whether this Relationship was generated by tooling to meet semantic rules, rather than being directly created by a modeler. Relationship
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedRelatedElement Public Element [0..*] {composite} {ordered} {subsetted: Relationship.relatedElement} null The relatedElements of this Relationship that are owned by the Relationship. Relationship
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedSubclassification Public Subclassification [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} null The ownedSpecializations of this Classifier that are Subclassifications, for which this Classifier is the subclassifier. Classifier
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelatedElement Public Element [0..1] {subsetted: Relationship.relatedElement} null The relatedElement of this Relationship that owns the Relationship, if any. Relationship
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
relatedElement Public Element [0..*] {derived} {ordered} {redefined by: Association.relatedType} {many-to-many:Relationship.relationship} null The Elements that are related by this Relationship, derived as the union of the source and target Elements of the Relationship. Relationship
relatedType Public Type [0..*] {derived} {ordered} {redefines: Relationship.relatedElement} {many-to-many:Association.association} null The types of the associationEnds of the Association, which are the relatedElements of the Association considered as a Relationship. Association
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
source Public Element [0..*] {ordered} {redefined by: Association.sourceType} {subsetted: Relationship.relatedElement} {many-to-many:Relationship.sourceRelationship} null The relatedElements from which this Relationship is considered to be directed. Relationship
sourceType Public Type [0..1] {derived} {redefines: Relationship.source} {subsetted: Association.relatedType} null The source relatedType for this Association. It is the first relatedType of the Association. Association
target Public Element [0..*] {ordered} {redefined by: Association.targetType} {subsetted: Relationship.relatedElement} {many-to-many:Relationship.targetRelationship} null The relatedElements to which this Relationship is considered to be directed. Relationship
targetType Public Type [0..*] {derived} {redefines: Relationship.target} {subsetted: Association.relatedType} {many-to-many:Association.targetAssociation} null The target relatedTypes for this Association. This includes all the relatedTypes other than the sourceType. Association
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type

AttributeDefinition [Class]

Features

Name Description
Fully Qualified Name SysML::Systems::Attributes::AttributeDefinition
Visibility Public
Definition An AttributeDefinition is a Definition and a DataType of information about a quality or characteristic of a system or part of a system that has no independent identity other than its value. All features of an AttributeDefinition must be referential (non-composite). As a DataType, an AttributeDefinition must specialize, directly or indirectly, the base DataType Base::DataValue from the Kernel Semantic Library.
Is Abstract FALSE
Generalizations DataType Definition
Specializations EnumerationDefinition
Containers

Rules

Name Visibilty Description Specification Owner
checkDataTypeSpecialization Public A DataType must directly or indirectly specialize the base DataType Base::DataValue from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::DataValue') DataType
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
deriveClassifierOwnedSubclassification Public The ownedSubclassifications of a Classifier are its ownedSpecializations that are Subclassifications. OCL2.0: ownedSubclassification = ownedSpecialization->selectByKind(Subclassification) Classifier
deriveDefinitionDirectedUsage Public The directedUsages of a Definition are all its directedFeatures that are Usages. OCL2.0: directedUsage = directedFeature->selectByKind(Usage) Definition
deriveDefinitionOwnedAction Public The ownedActions of a Definition are all its ownedUsages that are ActionUsages. OCL2.0: ownedAction = ownedUsage->selectByKind(ActionUsage) Definition
deriveDefinitionOwnedAllocation Public The ownedAllocations of a Definition are all its ownedUsages that are AllocationUsages. OCL2.0: ownedAllocation = ownedUsage->selectByKind(AllocationUsage) Definition
deriveDefinitionOwnedAnalysisCase Public The ownedAnalysisCases of a Definition are all its ownedUsages that are AnalysisCaseUsages. OCL2.0: ownedAnalysisCase = ownedUsage->selectByKind(AnalysisCaseUsage) Definition
deriveDefinitionOwnedAttribute Public The ownedAttributes of a Definition are all its ownedUsages that are AttributeUsages. OCL2.0: ownedAttribute = ownedUsage->selectByKind(AttributeUsage) Definition
deriveDefinitionOwnedCalculation Public The ownedCalculations of a Definition are all its ownedUsages that are CalculationUsages. OCL2.0: ownedCalculation = ownedUsage->selectByKind(CalculationUsage) Definition
deriveDefinitionOwnedCase Public The ownedCases of a Definition are all its ownedUsages that are CaseUsages. OCL2.0: ownedCase = ownedUsage->selectByKind(CaseUsage) Definition
deriveDefinitionOwnedConcern Public The ownedConcerns of a Definition are all its ownedUsages that are ConcernUsages. OCL2.0: ownedConcern = ownedUsage->selectByKind(ConcernUsage) Definition
deriveDefinitionOwnedConnection Public The ownedConnections of a Definition are all its ownedUsages that are ConnectorAsUsages. OCL2.0: ownedConnection = ownedUsage->selectByKind(ConnectorAsUsage) Definition
deriveDefinitionOwnedConstraint Public The ownedConstraints of a Definition are all its ownedUsages that are ConstraintUsages. OCL2.0: ownedConstraint = ownedUsage->selectByKind(ConstraintUsage) Definition
deriveDefinitionOwnedEnumeration Public The ownedEnumerations of a Definition are all its ownedUsages that are EnumerationUsages. OCL2.0: ownedEnumeration = ownedUsage->selectByKind(EnumerationUsage) Definition
deriveDefinitionOwnedFlow Public The ownedFlows of a Definition are all its ownedUsages that are FlowUsages. OCL2.0: ownedFlow = ownedUsage->selectByKind(FlowConnectionUsage) Definition
deriveDefinitionOwnedInterface Public The ownedInterfaces of a Definition are all its ownedUsages that are InterfaceUsages. OCL2.0: ownedInterface = ownedUsage->selectByKind(ReferenceUsage) Definition
deriveDefinitionOwnedItem Public The ownedItems of a Definition are all its ownedUsages that are ItemUsages. OCL2.0: ownedItem = ownedUsage->selectByKind(ItemUsage) Definition
deriveDefinitionOwnedMetadata Public The ownedMetadata of a Definition are all its ownedUsages that are MetadataUsages. OCL2.0: ownedMetadata = ownedUsage->selectByKind(MetadataUsage) Definition
deriveDefinitionOwnedOccurrence Public The ownedOccurrences of a Definition are all its ownedUsages that are OccurrenceUsages. OCL2.0: ownedOccurrence = ownedUsage->selectByKind(OccurrenceUsage) Definition
deriveDefinitionOwnedPart Public The ownedParts of a Definition are all its ownedUsages that are PartUsages. OCL2.0: ownedPart = ownedUsage->selectByKind(PartUsage) Definition
deriveDefinitionOwnedPort Public The ownedPorts of a Definition are all its ownedUsages that are PortUsages. OCL2.0: ownedPort = ownedUsage->selectByKind(PortUsage) Definition
deriveDefinitionOwnedReference Public The ownedReferences of a Definition are all its ownedUsages that are ReferenceUsages. OCL2.0: ownedReference = ownedUsage->selectByKind(ReferenceUsage) Definition
deriveDefinitionOwnedRendering Public The ownedRenderings of a Definition are all its ownedUsages that are RenderingUsages. OCL2.0: ownedRendering = ownedUsage->selectByKind(RenderingUsage) Definition
deriveDefinitionOwnedRequirement Public The ownedRequirements of a Definition are all its ownedUsages that are RequirementUsages. OCL2.0: ownedRequirement = ownedUsage->selectByKind(RequirementUsage) Definition
deriveDefinitionOwnedState Public The ownedStates of a Definition are all its ownedUsages that are StateUsages. OCL2.0: ownedState = ownedUsage->selectByKind(StateUsage) Definition
deriveDefinitionOwnedTransition Public The ownedTransitions of a Definition are all its ownedUsages that are TransitionUsages. OCL2.0: ownedTransition = ownedUsage->selectByKind(TransitionUsage) Definition
deriveDefinitionOwnedUsage Public The ownedUsages of a Definition are all its ownedFeatures that are Usages. OCL2.0: ownedUsage = ownedFeature->selectByKind(Usage) Definition
deriveDefinitionOwnedUseCase Public The ownedUseCases of a Definition are all its ownedUsages that are UseCaseUsages. OCL2.0: ownedUseCase = ownedUsage->selectByKind(UseCaseUsage) Definition
deriveDefinitionOwnedVerificationCase Public The ownedValidationCases of a Definition are all its ownedUsages that are ValidationCaseUsages. OCL2.0: ownedVerificationCase = ownedUsage->selectByKind(VerificationCaseUsage) Definition
deriveDefinitionOwnedView Public The ownedViews of a Definition are all its ownedUsages that are ViewUsages. OCL2.0: ownedView = ownedUsage->selectByKind(ViewUsage) Definition
deriveDefinitionOwnedViewpoint Public The ownedViewpoints of a Definition are all its ownedUsages that are ViewpointUsages. OCL2.0: ownedViewpoint = ownedUsage->selectByKind(ViewpointUsage) Definition
deriveDefinitionUsage Public The usages of a Definition are all its features that are Usages. OCL2.0: usage = feature->selectByKind(Usage) Definition
deriveDefinitionVariant Public The variants of a Definition are the ownedVariantUsages of its variantMemberships. OCL2.0: variant = variantMembership.ownedVariantUsage Definition
deriveDefinitionVariantMembership Public The variantMemberships of a Definition are those ownedMemberships that are VariantMemberships. OCL2.0: variantMembership = ownedMembership->selectByKind(VariantMembership) Definition
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
validateAttributeDefinitionFeatures Public All features of an AttributeDefinition must be non-composite. OCL2.0: feature->forAll(not isComposite) AttributeDefinition
validateClassifierMultiplicityDomain Public If a Classifier has a multiplicity, then the multiplicity must have no featuringTypes (meaning that its domain is implicitly Base::Anything). OCL2.0: multiplicity <> null implies multiplicity.featuringType->isEmpty() Classifier
validateDataTypeSpecialization Public A DataType must not specialize a Class or an Association. OCL2.0: ownedSpecialization.general-> forAll(not oclIsKindOf(Class) and not oclIsKindOf(Association)) DataType
validateDefinitionVariationIsAbstract Public If a Definition is a variation, then it must be abstract. OCL2.0: isVariation implies isAbstract Definition
validateDefinitionVariationOwnedFeatureMembership Public If a Definition is a variation, then all it must not have any ownedFeatureMemberships. OCL2.0: isVariation implies ownedFeatureMembership->isEmpty() Definition
validateDefinitionVariationSpecialization Public A variation Definition may not specialize any other variation Definition. OCL2.0: isVariation implies not ownedSpecialization.specific->exists( oclIsKindOf(Definition) and oclAsType(Definition).isVariation) Definition
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type

Properties

Name Visibility Type Default Description Owner
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
directedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Definition.definitionWithDirectedUsage} null The usages of this Definition that are directedFeatures. Definition
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
isVariation Public Boolean [1..1] null Whether this Definition is for a variation point or not. If true, then all the memberships of the Definition must be VariantMemberships. Definition
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAction Public ActionUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedOccurrence} null The ActionUsages that are ownedUsages of this Definition. Definition
ownedAllocation Public AllocationUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedConnection} null The AllocationUsages that are ownedUsages of this Definition. Definition
ownedAnalysisCase Public AnalysisCaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCase} null The AnalysisCaseUsages that are ownedUsages of this Definition. Definition
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedAttribute Public AttributeUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The AttributeUsages that are ownedUsages of this Definition. Definition
ownedCalculation Public CalculationUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedAction} null The CalculationUsages that are ownedUsages of this Definition. Definition
ownedCase Public CaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCalculation} null The code>CaseUsages that are ownedUsages of this Definition. Definition
ownedConcern Public ConcernUsage [0..*] {derived} {subsetted: Definition.ownedRequirement} null The ConcernUsages that are ownedUsages of this Definition. Definition
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedConnection Public ConnectorAsUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The ConnectorAsUsages that are ownedUsages of this Definition. Note that this list includes BindingConnectorAsUsages, SuccessionAsUsages, and FlowUsages because these are ConnectorAsUsages even though they are not ConnectionUsages. Definition
ownedConstraint Public ConstraintUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedOccurrence} null The ConstraintUsages that are ownedUsages of this Definition. Definition
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedEnumeration Public EnumerationUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedAttribute} null The EnumerationUsages that are ownedUsages of this Definition. Definition
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedFlow Public FlowUsage [0..*] {derived} {subsetted: Definition.ownedConnection} null The FlowUsages that are ownedUsages of this Definition. Definition
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedInterface Public InterfaceUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedConnection} null The InterfaceUsages that are ownedUsages of this Definition. Definition
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedItem Public ItemUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedOccurrence} null The ItemUsages that are ownedUsages of this Definition. Definition
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedMetadata Public MetadataUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedItem} null The MetadataUsages that are ownedUsages of this Definition. Definition
ownedOccurrence Public OccurrenceUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The OccurrenceUsages that are ownedUsages of this Definition. Definition
ownedPart Public PartUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedItem} null The PartUsages that are ownedUsages of this Definition. Definition
ownedPort Public PortUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The PortUsages that are ownedUsages of this Definition. Definition
ownedReference Public ReferenceUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The ReferenceUsages that are ownedUsages of this Definition. Definition
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedRendering Public RenderingUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedPart} null The RenderingUsages that are ownedUsages of this Definition. Definition
ownedRequirement Public RequirementUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedConstraint} null The RequirementUsages that are ownedUsages of this Definition. Definition
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedState Public StateUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedAction} null The StateUsages that are ownedUsages of this Definition. Definition
ownedSubclassification Public Subclassification [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} null The ownedSpecializations of this Classifier that are Subclassifications, for which this Classifier is the subclassifier. Classifier
ownedTransition Public TransitionUsage [0..*] {derived} {subsetted: Definition.ownedUsage} null The TransitionUsages that are ownedUsages of this Definition. Definition
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
ownedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.ownedFeature} null The Usages that are ownedFeatures of this Definition. Definition
ownedUseCase Public UseCaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCase} null The UseCaseUsages that are ownedUsages of this Definition. Definition
ownedVerificationCase Public VerificationCaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCase} null The VerificationCaseUsages that are ownedUsages of this Definition. Definition
ownedView Public ViewUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedPart} null The ViewUsages that are ownedUsages of this Definition. Definition
ownedViewpoint Public ViewpointUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedRequirement} null The ViewpointUsages that are ownedUsages of this Definition. Definition
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type
usage Public Usage [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Definition.featuringDefinition} null The Usages that are features of this Definition (not necessarily owned). Definition
variant Public Usage [0..*] {derived} {subsetted: Namespace.ownedMember} null The Usages which represent the variants of this Definition as a variation point Definition, if isVariation = true. If isVariation = false, the there must be no variants. Definition
variantMembership Public VariantMembership [0..*] {composite} {derived} {subsetted: Namespace.ownedMembership} null The ownedMemberships of this Definition that are VariantMemberships. If isVariation = true, then this must be all ownedMemberships of the Definition. If isVariation = false, then variantMembershipmust be empty. Definition

AttributeUsage [Class]

Features

Name Description
Fully Qualified Name SysML::Systems::Attributes::AttributeUsage
Visibility Public
Definition An AttributeUsage is a Usage whose type is a DataType. Nominally, if the type is an AttributeDefinition, an AttributeUsage is a usage of a AttributeDefinition to represent the value of some system quality or characteristic. However, other kinds of kernel DataTypes are also allowed, to permit use of DataTypes from the Kernel Model Libraries. An AttributeUsage itself as well as all its nested features must be referential (non-composite). An AttributeUsage must specialize, directly or indirectly, the base Feature Base::dataValues from the Kernel Semantic Library.
Is Abstract FALSE
Generalizations Usage
Specializations EnumerationUsage
Containers

Rules

Name Visibilty Description Specification Owner
checkAttributeUsageSpecialization Public An AttributeUsage must directly or indirectly specialize Base::dataValues from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::dataValues') AttributeUsage
checkFeatureCrossingSpecialization Public If this Feature has isEnd = true and ownedCrossFeature returns a non-null value, then the crossFeature of the Feature must be the Feature returned from ownedCrossFeature (which implies that this Feature has an appropriate ownedCrossSubsetting to realize this). OCL2.0: ownedCrossFeature() <> null implies crossFeature = ownedCrossFeature() Feature
checkFeatureDataValueSpecialization Public If a Feature has an ownedTyping relationship to a DataType, then it must directly or indirectly specialize Base::dataValues from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(DataType)) implies specializesFromLibrary('Base::dataValues') Feature
checkFeatureEndRedefinition Public If a Feature has isEnd = true and an owningType that is not empty, then, for each direct supertype of its owningType, it must redefine the endFeature at the same position, if any. OCL2.0: isEnd and owningType <> null implies let i : Integer = owningType.ownedEndFeature->indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | supertype.endFeature->size() >= i implies redefines(supertype.endFeature->at(i)) Feature
checkFeatureEndSpecialization Public If a Feature has isEnd = true and an owningType that is an Association or a Connector, then it must directly or indirectly specialize Links::Link::participant from the Kernel Semantic Library. OCL2.0: isEnd and owningType <> null and (owningType.oclIsKindOf(Association) or owningType.oclIsKindOf(Connector)) implies specializesFromLibrary('Links::Link::participant') Feature
checkFeatureFeatureMembershipTypeFeaturing Public If a Feature is owned via a FeatureMembership, then it must have a featuringType for which the operation isFeaturingType returns true. OCL2.0: owningFeatureMembership <> null implies featuringTypes->exists(t | isFeaturingType(t)) Feature
checkFeatureFlowFeatureRedefinition Public If a Feature is the first ownedFeature of a first or second FlowEnd, then it must directly or indirectly specialize either Transfers::Transfer::source::sourceOutput or Transfers::Transfer::target::targetInput, respectively, from the Kernel Semantic Library. OCL2.0: owningType <> null and owningType.oclIsKindOf(FlowEnd) and owningType.ownedFeature->at(1) = self implies let flowType : Type = owningType.owningType in flowType <> null implies let i : Integer = flowType.ownedFeature.indexOf(owningType) in (i = 1 implies redefinesFromLibrary('Transfers::Transfer::source::sourceOutput')) and (i = 2 implies redefinesFromLibrary('Transfers::Transfer::source::targetInput')) Feature
checkFeatureObjectSpecialization Public If a Feature has an ownedTyping relationship to a Structure, then it must directly or indirectly specialize Objects::objects from the Kernel Semantics Library. OCL2.0: ownedTyping.type->exists(selectByKind(Structure)) implies specializesFromLibary('Objects::objects') Feature
checkFeatureOccurrenceSpecialization Public If a Feature has an ownedTyping relationship to a Class, then it must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(Class)) implies specializesFromLibrary('Occurrences::occurrences') Feature
checkFeatureOwnedCrossFeatureRedefinitionSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then, for any end Feature that is redefined by the owning end Feature of this Feature, this Feature must subset the crossFeature of the redefined end Feature, if this exists. OCL2.0: isOwnedCrossFeature() implies ownedSubsetting.subsettedFeature->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature <> null).crossFeature) Feature
checkFeatureOwnedCrossFeatureSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then it must directly or indirectly specialize the types of its owning end Feature. OCL2.0: isOwnedCrossFeature() implies owner.oclAsType(Feature).type->forAll(t | self.specializes(t)) Feature
checkFeatureOwnedCrossFeatureTypeFeaturing Public If this Feature is the ownedCrossFeature of an end Feature, then it must have featuringTypes consistent with the crossing from other end Features of the owningType of its end Feature. OCL2.0: isOwnedCrossFeature() implies let otherEnds : OrderedSet(Feature) = owner.oclAsType(Feature).owningType.endFeature->excluding(self) in if (otherEnds->size() = 1) then featuringType = otherEnds->first().type else featuringType->size() = 1 and featuringType->first().isCartesianProduct() and featuringType->first().asCartesianProduct() = otherEnds.type and featuringType->first().allSupertypes()->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature() <> null).crossFeature().featuringType) endif Feature
checkFeatureParameterRedefinition Public If a Feature is a parameter of an owningType that is a Behavior or Step, but not
  • A result parameter
  • A parameter of an InvocationExpression, with at least one non-implied ownedRedefinition
then, for each direct supertype of its owningType that is also a Behavior or Step, it must redefine the parameter at the same position, if any.
OCL2.0: owningType <> null and not owningFeatureMembership. oclIsKindOf(ReturnParameterMembership) and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step) and (owningType.oclIsKindOf(InvocationExpression) implies not ownedRedefinition->exists(not isImplied)) implies let i : Integer = owningType.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership))-> indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | let ownedParameters : Sequence(Feature) = supertype.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership)) in ownedParameters->size() >= i implies redefines(ownedParameters->at(i)) Feature
checkFeaturePortionSpecialization Public If a Feature has isPortion = true, an ownedTyping relationship to a Class, and an owningType that is a Class or another Feature typed by a Class, then it must directly or indirectly specialize Occurrences::Occurrence::portions from the Kernel Semantic Library. OCL2.0: isPortion and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::portions') Feature
checkFeatureResultRedefinition Public If a Feature is a result parameter of an owningType that is a Function or Expression, then, for each direct supertype of its owningType that is also a Function or Expression, it must redefine the result parameter. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Function) and self = owningType.oclAsType(Function).result or owningType.oclIsKindOf(Expression) and self = owningType.oclAsType(Expression).result) implies owningType.ownedSpecialization.general-> select(oclIsKindOf(Function) or oclIsKindOf(Expression))-> forAll(supertype | redefines( if superType.oclIsKindOf(Function) then superType.oclAsType(Function).result else superType.oclAsType(Expression).result endif) Feature
checkFeatureSpecialization Public A Feature must directly or indirectly specialize Base::things from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::things') Feature
checkFeatureSubobjectSpecialization Public A composite Feature typed by a Structure, and whose ownedType is a Structure or another Feature typed by a Structure must directly or indirectly specialize Objects::Object::subobjects. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Structure)) and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.type->includes(oclIsKindOf(Structure))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureSuboccurrenceSpecialization Public A composite Feature that has an ownedTyping relationship to a Class, and whose ownedType is a Class or another Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureValuationSpecialization Public If a Feature has a FeatureValue, no ownedSpecializations that are not implied, and is not directed, then it must specialize the result of the value Expression of the FeatureValue. OCL2.0: direction = null and ownedSpecializations->forAll(isImplied) implies ownedMembership-> selectByKind(FeatureValue)-> forAll(fv | specializes(fv.value.result)) Feature
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
checkUsageVariationDefinitionSpecialization Public If a Usage has an owningVariationDefinition, then it must directly or indirectly specialize that Definition. OCL2.0: owningVariationDefinition <> null implies specializes(owningVariationDefinition) Usage
checkUsageVariationUsageSpecialization Public If a Usage has an owningVariationUsage, then it must directly or indirectly specialize that Usage. OCL2.0: owningVariationUsage <> null implies specializes(owningVariationUsage) Usage
checkUsageVariationUsageTypeFeaturing Public If a Usage has an owningVariationUsage, then it must have the same featuringTypes as that Usage. OCL2.0: owningVariationUsage <> null implies featuringType->asSet() = owningVariationUsage.featuringType->asSet() Usage
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveFeatureChainingFeature Public The chainingFeatures of a Feature are the chainingFeatures of its ownedFeatureChainings. OCL2.0: chainingFeature = ownedFeatureChaining.chainingFeature Feature
deriveFeatureCrossFeature Public The crossFeature of a Feature is the second chainingFeature of the crossedFeature of the ownedCrossSubsetting of the Feature, if any. OCL2.0: crossFeature = if ownedCrossSubsetting = null then null else let chainingFeatures: Sequence(Feature) = ownedCrossSubsetting.crossedFeature.chainingFeature in if chainingFeatures->size() < 2 then null else chainingFeatures->at(2) endif Feature
deriveFeatureFeatureTarget Public If a Feature has no chainingFeatures, then its featureTarget is the Feature itself, otherwise the featureTarget is the last of the chainingFeatures. OCL2.0: featureTarget = if chainingFeature->isEmpty() then self else chainingFeature->last() endif Feature
deriveFeatureFeaturingType Public The featuringTypes of a Feature include the featuringTypes of all the typeFeaturings of the Feature. If the Feature has chainingFeatures, then its featuringTypes also include the featuringTypes of the first chainingFeature. OCL2.0: featuringType = let featuringTypes : OrderedSet(Type) = featuring.type->asOrderedSet() in if chainingFeature->isEmpty() then featuringTypes else featuringTypes-> union(chainingFeature->first().featuringType)-> asOrderedSet() endif Feature
deriveFeatureOwnedCrossSubsetting Public The ownedCrossSubsetting of a Feature is the ownedSubsetting that is a CrossSubsetting, if any. OCL2.0: ownedCrossSubsetting = let crossSubsettings: Sequence(CrossSubsetting) = ownedSubsetting->selectByKind(CrossSubsetting) in if crossSubsettings->isEmpty() then null else crossSubsettings->first() endif Feature
deriveFeatureOwnedFeatureChaining Public The ownedFeatureChainings of a Feature are the ownedRelationships that are FeatureChainings. OCL2.0: ownedFeatureChaining = ownedRelationship->selectByKind(FeatureChaining) Feature
deriveFeatureOwnedFeatureInverting Public The ownedFeatureInvertings of a Feature are its ownedRelationships that are FeatureInvertings. OCL2.0: ownedFeatureInverting = ownedRelationship->selectByKind(FeatureInverting)-> select(fi | fi.featureInverted = self) Feature
deriveFeatureOwnedRedefinition Public The ownedRedefinitions of a Feature are its ownedSubsettings that are Redefinitions. OCL2.0: ownedRedefinition = ownedSubsetting->selectByKind(Redefinition) Feature
deriveFeatureOwnedReferenceSubsetting Public The ownedReferenceSubsetting of a Feature is the first ownedSubsetting that is a ReferenceSubsetting (if any). OCL2.0: ownedReferenceSubsetting = let referenceSubsettings : OrderedSet(ReferenceSubsetting) = ownedSubsetting->selectByKind(ReferenceSubsetting) in if referenceSubsettings->isEmpty() then null else referenceSubsettings->first() endif Feature
deriveFeatureOwnedSubsetting Public The ownedSubsettings of a Feature are its ownedSpecializations that are Subsettings. OCL2.0: ownedSubsetting = ownedSpecialization->selectByKind(Subsetting) Feature
deriveFeatureOwnedTypeFeaturing Public The ownedTypeFeaturings of a Feature are its ownedRelationships that are TypeFeaturings and which have the Feature as their featureOfType. OCL2.0: ownedTypeFeaturing = ownedRelationship->selectByKind(TypeFeaturing)-> select(tf | tf.featureOfType = self) Feature
deriveFeatureOwnedTyping Public The ownedTypings of a Feature are its ownedSpecializations that are FeatureTypings. OCL2.0: ownedTyping = ownedGeneralization->selectByKind(FeatureTyping) Feature
deriveFeatureType Public The types of a Feature are the union of the types of its typings and the types of the Features it subsets, with all redundant supertypes removed. If the Feature has chainingFeatures, then the union also includes the types of the last chainingFeature. OCL2.0: type = let types : OrderedSet(Types) = OrderedSet{self}-> -- Note: The closure operation automatically handles circular relationships. closure(typingFeatures()).typing.type->asOrderedSet() in types->reject(t1 | types->exist(t2 | t2 <> t1 and t2.specializes(t1))) Feature
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
deriveUsageDirectedUsage Public The directedUsages of a Usage are all its directedFeatures that are Usages. OCL2.0: directedUsage = directedFeature->selectByKind(Usage) Usage
deriveUsageIsReference Public A Usage is referential if it is not composite. OCL2.0: isReference = not isComposite Usage
deriveUsageMayTimeVary Public A Usage mayTimeVary if and only if all of the following are true
  • It has an owningType that specializes Occurrences::Occurrence (from the Kernel Semantic Library).
  • It is not a portion.
  • It does not specialize Links::SelfLink or Occurrences::HappensLink (from the Kernel Semantic Library).
  • If isComposite = true, it does not specialize Actions::Action (from the Systems Model Library).
OCL2.0: mayTimeVary = owningType <> null and owningType.specializesFromLibrary('Occurrences::Occurrence') and not ( isPortion or specializesFromLibrary('Links::SelfLink') or specializesFromLibrary('Occurrences::HappensLink') or isComposite and specializesFromLibrary('Actions::Action') ) Usage
deriveUsageNestedAction Public The ownedActions of a Usage are all its ownedUsages that are ActionUsages. OCL2.0: nestedAction = nestedUsage->selectByKind(ActionUsage) Usage
deriveUsageNestedAllocation Public The ownedAllocations of a Usage are all its ownedUsages that are AllocationUsages. OCL2.0: nestedAllocation = nestedUsage->selectByKind(AllocationUsage) Usage
deriveUsageNestedAnalysisCase Public The ownedAnalysisCases of a Usage are all its ownedUsages that are AnalysisCaseUsages. OCL2.0: nestedAnalysisCase = nestedUsage->selectByKind(AnalysisCaseUsage) Usage
deriveUsageNestedAttribute Public The ownedAttributes of a Usage are all its ownedUsages that are AttributeUsages. OCL2.0: nestedAttribute = nestedUsage->selectByKind(AttributeUsage) Usage
deriveUsageNestedCalculation Public The ownedCalculations of a Usage are all its ownedUsages that are CalculationUsages. OCL2.0: nestedCalculation = nestedUsage->selectByKind(CalculationUsage) Usage
deriveUsageNestedCase Public The ownedCases of a Usage are all its ownedUsages that are CaseUsages. OCL2.0: nestedCase = nestedUsage->selectByKind(CaseUsage) Usage
deriveUsageNestedConcern Public The ownedConcerns of a Usage are all its ownedUsages that are ConcernUsages. OCL2.0: nestedConcern = nestedUsage->selectByKind(ConcernUsage) Usage
deriveUsageNestedConnection Public The ownedConnections of a Usage are all its ownedUsages that are ConnectorAsUsages. OCL2.0: nestedConnection = nestedUsage->selectByKind(ConnectorAsUsage) Usage
deriveUsageNestedConstraint Public The ownedConstraints of a Usage are all its ownedUsages that are ConstraintUsages. OCL2.0: nestedConstraint = nestedUsage->selectByKind(ConstraintUsage) Usage
deriveUsageNestedEnumeration Public The ownedEnumerations of a Usage are all its ownedUsages that are EnumerationUsages. OCL2.0: ownedNested = nestedUsage->selectByKind(EnumerationUsage) Usage
deriveUsageNestedFlow Public The ownedFlows of a Usage are all its ownedUsages that are FlowConnectionUsages. OCL2.0: nestedFlow = nestedUsage->selectByKind(FlowConnectionUsage) Usage
deriveUsageNestedInterface Public The ownedInterfaces of a Usage are all its ownedUsages that are InterfaceUsages. OCL2.0: nestedInterface = nestedUsage->selectByKind(ReferenceUsage) Usage
deriveUsageNestedItem Public The ownedItems of a Usage are all its ownedUsages that are ItemUsages. OCL2.0: nestedItem = nestedUsage->selectByKind(ItemUsage) Usage
deriveUsageNestedMetadata Public The ownedMetadata of a Usage are all its ownedUsages that are MetadataUsages. OCL2.0: nestedMetadata = nestedUsage->selectByKind(MetadataUsage) Usage
deriveUsageNestedOccurrence Public The ownedOccurrences of a Usage are all its ownedUsages that are OccurrenceUsages. OCL2.0: nestedOccurrence = nestedUsage->selectByKind(OccurrenceUsage) Usage
deriveUsageNestedPart Public The ownedParts of a Usage are all its ownedUsages that are PartUsages. OCL2.0: nestedPart = nestedUsage->selectByKind(PartUsage) Usage
deriveUsageNestedPort Public The ownedPorts of a Usage are all its ownedUsages that are PortUsages. OCL2.0: nestedPort = nestedUsage->selectByKind(PortUsage) Usage
deriveUsageNestedReference Public The ownedReferences of a Usage are all its ownedUsages that are ReferenceUsages. OCL2.0: nestedReference = nestedUsage->selectByKind(ReferenceUsage) Usage
deriveUsageNestedRendering Public The ownedRenderings of a Usage are all its ownedUsages that are RenderingUsages. OCL2.0: nestedRendering = nestedUsage->selectByKind(RenderingUsage) Usage
deriveUsageNestedRequirement Public The ownedRequirements of a Usage are all its ownedUsages that are RequirementUsages. OCL2.0: nestedRequirement = nestedUsage->selectByKind(RequirementUsage) Usage
deriveUsageNestedState Public The ownedStates of a Usage are all its ownedUsages that are StateUsages. OCL2.0: nestedState = nestedUsage->selectByKind(StateUsage) Usage
deriveUsageNestedTransition Public The ownedTransitions of a Usage are all its ownedUsages that are TransitionUsages. OCL2.0: nestedTransition = nestedUsage->selectByKind(TransitionUsage) Usage
deriveUsageNestedUsage Public The ownedUsages of a Usage are all its ownedFeatures that are Usages. OCL2.0: nestedUsage = ownedFeature->selectByKind(Usage) Usage
deriveUsageNestedUseCase Public The ownedUseCases of a Usage are all its ownedUsages that are UseCaseUsages. OCL2.0: nestedUseCase = nestedUsage->selectByKind(UseCaseUsage) Usage
deriveUsageNestedVerificationCase Public The ownedValidationCases of a Usage are all its ownedUsages that are ValidationCaseUsages. OCL2.0: nestedVerificationCase = nestedUsage->selectByKind(VerificationCaseUsage) Usage
deriveUsageNestedView Public The ownedViews of a Usage are all its ownedUsages that are ViewUsages. OCL2.0: nestedView = nestedUsage->selectByKind(ViewUsage) Usage
deriveUsageNestedViewpoint Public The ownedViewpoints of a Usage are all its ownedUsages that are ViewpointUsages. OCL2.0: nestedViewpoint = nestedUsage->selectByKind(ViewpointUsage) Usage
deriveUsageUsage Public The usages of a Usage are all its features that are Usages. OCL2.0: usage = feature->selectByKind(Usage) Usage
deriveUsageVariant Public The variants of a Usage are the ownedVariantUsages of its variantMemberships. OCL2.0: variant = variantMembership.ownedVariantUsage Usage
deriveUsageVariantMembership Public The variantMemberships of a Usage are those ownedMemberships that are VariantMemberships. OCL2.0: variantMembership = ownedMembership->selectByKind(VariantMembership) Usage
validateAttributeUsageFeatures Public All features of an AttributeUsage must be non-composite. OCL2.0: feature->forAll(not isComposite) AttributeUsage
validateAttributeUsageIsReference Public An AttributeUsage is always referential. OCL2.0: isReference AttributeUsage
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateFeatureChainingFeatureConformance Public Each chainingFeature (other than the first) must be featured within the previous chainingFeature. OCL2.0: Sequence{2..chainingFeature->size()}->forAll(i | chainingFeature->at(i).isFeaturedWithin(chainingFeature->at(i-1))) Feature
validateFeatureChainingFeatureNotOne Public A Feature must have either no chainingFeatures or more than one. OCL2.0: chainingFeature->size() <> 1 Feature
validateFeatureChainingFeaturesNotSelf Public A Feature cannot be one of its own chainingFeatures. English: chainingFeature->excludes(self) Feature
validateFeatureConstantIsVariable Public A Feature with isConstant = true must have isVariable = true. OCL2.0: isConstant implies isVariable Feature
validateFeatureCrossFeatureSpecialization Public If this Feature has a crossFeature, then, for any Feature that is redefined by this Feature, the crossFeature must specialize the crossFeature of the redefined end Feature, if this exists. OCL2.0: crossFeature <> null implies ownedRedefinition.redefinedFeature.crossFeature-> forAll(f | f <> null implies crossFeature.specializes(f)) Feature
validateFeatureCrossFeatureType Public The crossFeature of a Feature must have the same types as the Feature. OCL2.0: crossFeature <> null implies crossFeature.type->asSet() = type->asSet() Feature
validateFeatureEndIsConstant Public A Feature with isEnd = true and isVariable = true must have isConstant = true. OCL2.0: isEnd and isVariable implies isConstant Feature
validateFeatureEndMultiplicity Public If a Feature has isEnd = true, then it must have multiplicity 1..1. OCL2.0: isEnd implies multiplicities().allSuperTypes()->flatten()-> selectByKind(MultiplicityRange)->exists(hasBounds(1,1)) Feature
validateFeatureEndNoDirection Public A Feature with isEnd = true must have no direction. OCL2.0: isEnd implied direction = null Feature
validateFeatureEndNotDerivedAbstractCompositeOrPortion Public A Feature with isEnd = true must have all of isDerived = false, isAbstract = false, isComposite = false, and isPortion = false. OCL2.0: isEnd implies not (isDerived or isAbstract or isComposite or isPortion) Feature
validateFeatureIsVariable Public A Feature with isVariable = true must have an owningType that directly or indirectly specializes the Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: isVariable implies owningType <> null and owningType.specializes('Occurrences::Occurrence') Feature
validateFeatureMultiplicityDomain Public If a Feature has a multiplicity, then the featuringTypes of the multiplicity must be the same as those of the Feature itself. OCL2.0: multiplicity <> null implies multiplicity.featuringType = featuringType Feature
validateFeatureOwnedCrossSubsetting Public A Feature must have at most one ownedSubsetting that is a CrossSubsetting. OCL2.0: ownedSubsetting->selectByKind(CrossSubsetting)->size() <= 1 Feature
validateFeatureOwnedReferenceSubsetting Public A Feature must have at most one ownedSubsetting that is an ReferenceSubsetting. OCL2.0: ownedSubsetting->selectByKind(ReferenceSubsetting)->size() <= 1 Feature
validateFeaturePortionNotVariable Public No Documentation Provided OCL2.0: isPortion implies not isVariable Feature
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type
validateUsageIsReferential Public A Usage that is directed, an end feature or has no featuringTypes must be referential. OCL2.0: direction <> null or isEnd or featuringType->isEmpty() implies isReference Usage
validateUsageVariationIsAbstract Public If a Usage is a variation, then it must be abstract. OCL2.0: isVariation implies isAbstract Usage
validateUsageVariationOwnedFeatureMembership Public If a Usage is a variation, then it must not have any ownedFeatureMemberships. OCL2.0: isVariation implies ownedFeatureMembership->isEmpty() Usage
validateUsageVariationSpecialization Public A variation Usage may not specialize any variation Definition or Usage. OCL2.0: isVariation implies not ownedSpecialization.specific->exists( oclIsKindOf(Definition) and oclAsType(Definition).isVariation or oclIsKindOf(Usage) and oclAsType(Usage).isVariation) Usage

Properties

Name Visibility Type Default Description Owner
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
attributeDefinition Public DataType [0..*] {derived} {ordered} {redefines: Usage.definition} {many-to-many:AttributeUsage.definedAttribute} null The DataTypes that are the types of this AttributeUsage. Nominally, these are AttributeDefinitions, but other kinds of kernel DataTypes are also allowed, to permit use of DataTypes from the Kernel Model Libraries. AttributeUsage
chainingFeature Public Feature [0..*] {derived} {ordered} {many-to-many:Feature.chainedFeature} null The Feature that are chained together to determine the values of this Feature, derived from the chainingFeatures of the ownedFeatureChainings of this Feature, in the same order. The values of a Feature with chainingFeatures are the same as values of the last Feature in the chain, which can be found by starting with the values of the first Feature (for each instance of the domain of the original Feature), then using each of those as domain instances to find the values of the second Feature in chainingFeatures, and so on, to values of the last Feature. Feature
crossFeature Public Feature [0..1] {derived} null The second chainingFeature of the crossedFeature of the ownedCrossSubsetting of this Feature, if it has one. Semantically, the values of the crossFeature of an end Feature must include all values of the end Feature obtained when navigating from values of the other end Features of the same owningType. Feature
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
definition Public Classifier [0..*] {derived} {ordered} {redefines: Feature.type} {redefined by: AttributeUsage.attributeDefinition} {many-to-many:Usage.definedUsage} null The Classifiers that are the types of this Usage. Nominally, these are Definitions, but other kinds of Kernel Classifiers are also allowed, to permit use of Classifiers from the Kernel Model Libraries. Usage
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
directedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Usage.usageWithDirectedUsage} null The usages of this Usage that are directedFeatures. Usage
direction Public FeatureDirectionKind [0..1] null Indicates how values of this Feature are determined or used (as specified for the FeatureDirectionKind). Feature
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
endOwningType Public Type [0..1] {derived} {subsetted: A_endFeature_typeWithEndFeature.typeWithEndFeature} {subsetted: Feature.owningType} null The Type that is related to this Feature by an EndFeatureMembership in which the Feature is an ownedMemberFeature. Feature
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
featureTarget Public Feature [1..1] {derived} null The last of the chainingFeatures of this Feature, if it has any. Otherwise, this Feature itself. Feature
featuringType Public Type [0..*] {derived} {ordered} {many-to-many:Feature.featureOfType} null Types that feature this Feature, such that any instance in the domain of the Feature must be classified by all of these Types, including at least all the featuringTypes of its typeFeaturings. If the Feature is chained, then the featuringTypes of the first Feature in the chain are also featuringTypes of the chained Feature. Feature
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isComposite Public Boolean [1..1] false Whether the Feature is a composite feature of its featuringType. If so, the values of the Feature cannot exist after its featuring instance no longer does and cannot be values of another composite feature that is not on the same featuring instance. Feature
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isConstant Public Boolean [1..1] false If isVariable is true, then whether the value of this Feature nevertheless does not change over all snapshots of its owningType. Feature
isDerived Public Boolean [1..1] false Whether the values of this Feature can always be computed from the values of other Features. Feature
isEnd Public Boolean [1..1] false Whether or not this Feature is an end Feature. An end Feature always has multiplicity 1, mapping each of its domain instances to a single co-domain instance. However, it may have a crossFeature, in which case values of the crossFeature must be the same as those found by navigation across instances of the owningType from values of other end Features to values of this Feature. If the owningType has n end Features, then the multiplicity, ordering, and uniqueness declared for the crossFeature of any one of these end Features constrains the cardinality, ordering, and uniqueness of the collection of values of that Feature reached by navigation when the values of the other n-1 end Features are held fixed. Feature
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isOrdered Public Boolean [1..1] false Whether an order exists for the values of this Feature or not. Feature
isPortion Public Boolean [1..1] false Whether the values of this Feature are contained in the space and time of instances of the domain of the Feature and represent the same thing as those instances. Feature
isReference Public Boolean [1..1] {derived} {redefines: Usage.isReference} true Always true for an AttributeUsage. AttributeUsage
isReference Public Boolean [1..1] {derived} {redefined by: AttributeUsage.isReference} null Whether this Usage is a referential Usage, that is, it has isComposite = false. Usage
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
isUnique Public Boolean [1..1] true Whether or not values for this Feature must have no duplicates or not. Feature
isVariable Public Boolean [1..1] {redefined by: Usage.mayTimeVary} false Whether the value of this Feature might vary over time. That is, whether the Feature may have a different value for each snapshot of an owningType that is an Occurrence. Feature
isVariation Public Boolean [1..1] null Whether this Usage is for a variation point or not. If true, then all the memberships of the Usage must be VariantMemberships. Usage
mayTimeVary Public Boolean [1..1] {derived} {redefines: Feature.isVariable} null Whether this Usage may be time varying (that is, whether it is featured by the snapshots of its owningType, rather than being featured by the owningType itself). However, if isConstant is also true, then the value of the Usage is nevertheless constant over the entire duration of an instance of its owningType (that is, it has the same value on all snapshots). The property mayTimeVary redefines the KerML property Feature::isVariable, making it derived. The property isConstant is inherited from Feature. Usage
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
nestedAction Public ActionUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ActionUsages that are nestedUsages of this Usage. Usage
nestedAllocation Public AllocationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConnection} null The AllocationUsages that are nestedUsages of this Usage. Usage
nestedAnalysisCase Public AnalysisCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The AnalysisCaseUsages that are nestedUsages of this Usage. Usage
nestedAttribute Public AttributeUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The code>AttributeUsages that are nestedUsages of this Usage. Usage
nestedCalculation Public CalculationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAction} null The CalculationUsage that are nestedUsages of this Usage. Usage
nestedCase Public CaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCalculation} null The CaseUsages that are nestedUsages of this Usage. Usage
nestedConcern Public ConcernUsage [0..*] {derived} {subsetted: Usage.nestedRequirement} null The ConcernUsages that are nestedUsages of this Usage. Usage
nestedConnection Public ConnectorAsUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The ConnectorAsUsages that are nestedUsages of this Usage. Note that this list includes BindingConnectorAsUsages, SuccessionAsUsages, and FlowConnectionUsages because these are ConnectorAsUsages even though they are not ConnectionUsages. Usage
nestedConstraint Public ConstraintUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ConstraintUsages that are nestedUsages of this Usage. Usage
nestedEnumeration Public EnumerationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAttribute} null The code>EnumerationUsages that are nestedUsages of this Usage. Usage
nestedFlow Public FlowUsage [0..*] {derived} {subsetted: Usage.nestedConnection} null The code>FlowUsages that are nestedUsages of this Usage. Usage
nestedInterface Public InterfaceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConnection} null The InterfaceUsages that are nestedUsages of this Usage. Usage
nestedItem Public ItemUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ItemUsages that are nestedUsages of this Usage. Usage
nestedMetadata Public MetadataUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedItem} null The MetadataUsages that are nestedUsages of this of this Usage. Usage
nestedOccurrence Public OccurrenceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The OccurrenceUsages that are nestedUsages of this Usage. Usage
nestedPart Public PartUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedItem} null The PartUsages that are nestedUsages of this Usage. Usage
nestedPort Public PortUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The PortUsages that are nestedUsages of this Usage. Usage
nestedReference Public ReferenceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The ReferenceUsages that are nestedUsages of this Usage. Usage
nestedRendering Public RenderingUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedPart} null The RenderingUsages that are nestedUsages of this Usage. Usage
nestedRequirement Public RequirementUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConstraint} null The RequirementUsages that are nestedUsages of this Usage. Usage
nestedState Public StateUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAction} null The StateUsages that are nestedUsages of this Usage. Usage
nestedTransition Public TransitionUsage [0..*] {derived} {subsetted: Usage.nestedUsage} null The TransitionUsages that are nestedUsages of this Usage. Usage
nestedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.ownedFeature} null The Usages that are ownedFeatures of this Usage. Usage
nestedUseCase Public UseCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The UseCaseUsages that are nestedUsages of this Usage. Usage
nestedVerificationCase Public VerificationCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The VerificationCaseUsages that are nestedUsages of this Usage. Usage
nestedView Public ViewUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedPart} null The ViewUsages that are nestedUsages of this Usage. Usage
nestedViewpoint Public ViewpointUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedRequirement} null The ViewpointUsages that are nestedUsages of this Usage. Usage
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedCrossSubsetting Public CrossSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a CrossSubsetting}, for which the Feature is the crossingFeature. Feature
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureChaining Public FeatureChaining [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Feature that are FeatureChainings, for which the Feature will be the featureChained. Feature
ownedFeatureInverting Public FeatureInverting [0..*] {composite} {derived} {subsetted: A_invertingFeatureInverting_featureInverted.invertingFeatureInverting} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are FeatureInvertings and for which the Feature is the featureInverted. Feature
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedRedefinition Public Redefinition [0..*] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The ownedSubsettings of this Feature that are Redefinitions, for which the Feature is the redefiningFeature. Feature
ownedReferenceSubsetting Public ReferenceSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a ReferenceSubsetting, for which the Feature is the referencingFeature. Feature
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedSubsetting Public Subsetting [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} {subsetted: A_subsettingFeature_subsetting.subsetting} null The ownedSpecializations of this Feature that are Subsettings, for which the Feature is the subsettingFeature. Feature
ownedTypeFeaturing Public TypeFeaturing [0..*] {composite} {derived} {ordered} {subsetted: A_featureOfType_typeFeaturing.typeFeaturing} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are TypeFeaturings and for which the Feature is the featureOfType. Feature
ownedTyping Public FeatureTyping [0..*] {composite} {derived} {ordered} {subsetted: Type.ownedSpecialization} {subsetted: A_typing_typedFeature.typing} null The ownedSpecializations of this Feature that are FeatureTypings, for which the Feature is the typedFeature. Feature
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningDefinition Public Definition [0..1] {derived} {subsetted: Feature.owningType} null The Definition that owns this Usage (if any). Usage
owningFeatureMembership Public FeatureMembership [0..1] {derived} {subsetted: Element.owningMembership} null The FeatureMembership that owns this Feature as an ownedMemberFeature, determining its owningType. Feature
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
owningType Public Type [0..1] {derived} {subsetted: A_typeWithFeature_feature.typeWithFeature} {subsetted: Element.owningNamespace} {subsetted: Feature.featuringType} null The Type that is the owningType of the owningFeatureMembership of this Feature. Feature
owningUsage Public Usage [0..1] {derived} {subsetted: Feature.owningType} null The Usage in which this Usage is nested (if any). Usage
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
type Public Type [0..*] {derived} {ordered} {redefined by: Usage.definition} {many-to-many:Feature.typedFeature} null Types that restrict the values of this Feature, such that the values must be instances of all the types. The types of a Feature are derived from its typings and the types of its subsettings. If the Feature is chained, then the types of the last Feature in the chain are also types of the chained Feature. Feature
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type
usage Public Usage [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Usage.featuringUsage} null The Usages that are features of this Usage (not necessarily owned). Usage
variant Public Usage [0..*] {derived} {subsetted: Namespace.ownedMember} null The Usages which represent the variants of this Usage as a variation point Usage, if isVariation = true. If isVariation = false, then there must be no variants. Usage
variantMembership Public VariantMembership [0..*] {composite} {derived} {subsetted: Namespace.ownedMembership} null The ownedMemberships of this Usage that are VariantMemberships. If isVariation = true, then this must be all memberships of the Usage. If isVariation = false, then variantMembershipmust be empty. Usage

Behavior [Class]

Features

Name Description
Fully Qualified Name KerML::Kernel::Behaviors::Behavior
Visibility Public
Definition A Behavior coordinates occurrences of other Behaviors, as well as changes in objects. Behaviors can be decomposed into Steps and be characterized by parameters.
Is Abstract FALSE
Generalizations Class
Specializations Function Interaction
Containers

Rules

Name Visibilty Description Specification Owner
checkBehaviorSpecialization Public A Behavior must directly or indirectly specialize the base Behavior Performances::Performance from the Kernel Semantic Library. English: specializesFromLibrary('Performances::Performance') Behavior
checkClassSpecialization Public A Class must directly or indirectly specialize the base Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Occurrences::Occurrence') Class
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
deriveBehaviorStep Public The steps of a Behavior are its features that are Steps. OCL2.0: step = feature->selectByKind(Step) Behavior
deriveClassifierOwnedSubclassification Public The ownedSubclassifications of a Classifier are its ownedSpecializations that are Subclassifications. OCL2.0: ownedSubclassification = ownedSpecialization->selectByKind(Subclassification) Classifier
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
validateBehaviorSpecialization Public A Behavior must not specialize a Structure. OCL2.0: ownedSpecialization.general->forAll(not oclIsKindOf(Structure)) Behavior
validateClassifierMultiplicityDomain Public If a Classifier has a multiplicity, then the multiplicity must have no featuringTypes (meaning that its domain is implicitly Base::Anything). OCL2.0: multiplicity <> null implies multiplicity.featuringType->isEmpty() Classifier
validateClassSpecialization Public A Class must not specialize a DataType and it can only specialize an Association if it is also itself a kind of Association (such as an AssociationStructure or Interaction). OCL2.0: ownedSpecialization.general-> forAll(not oclIsKindOf(DataType)) and not oclIsKindOf(Association) implies ownedSpecialization.general-> forAll(not oclIsKindOf(Association)) Class
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type

Properties

Name Visibility Type Default Description Owner
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {redefined by: Behavior.parameter} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedSubclassification Public Subclassification [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} null The ownedSpecializations of this Classifier that are Subclassifications, for which this Classifier is the subclassifier. Classifier
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
parameter Public Feature [0..*] {derived} {ordered} {redefines: Type.directedFeature} {many-to-many:Behavior.parameteredBehavior} null The parameters of this Behavior, which are defined as its directedFeatures, whose values are passed into and/or out of a performance of the Behavior. Behavior
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
step Public Step [0..*] {derived} {subsetted: Type.feature} {many-to-many:Behavior.featuringBehavior} null The Steps that make up this Behavior. Behavior
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type

BindingConnector [Class]

Features

Name Description
Fully Qualified Name KerML::Kernel::Connectors::BindingConnector
Visibility Public
Definition A BindingConnector is a binary Connector that requires its relatedFeatures to identify the same things (have the same values).
Is Abstract FALSE
Generalizations Connector
Specializations
Containers

Rules

Name Visibilty Description Specification Owner
checkBindingConnectorSpecialization Public A BindingConnector must directly or indirectly specialize the base BindingConnector Links::selfLinks from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Links::selfLinks') BindingConnector
checkConnectorBinaryObjectSpecialization Public A binary Connector for an AssociationStructure must directly or indirectly specialize the base Connector Objects::binaryLinkObjects from the Kernel Semantic Library. OCL2.0: connectorEnds->size() = 2 and association->exists(oclIsKindOf(AssociationStructure)) implies specializesFromLibrary('Objects::binaryLinkObjects') Connector
checkConnectorBinarySpecialization Public A binary Connector must directly or indirectly specialize the base Connector Links::binaryLinks from the Kernel Semantic Library. OCL2.0: connectorEnd->size() = 2 implies specializesFromLibrary('Links::binaryLinks') Connector
checkConnectorObjectSpecialization Public A Connector for an AssociationStructure must directly or indirectly specialize the base Connector Objects::linkObjects from the Kernel Semantic Library. OCL2.0: association->exists(oclIsKindOf(AssociationStructure)) implies specializesFromLibrary('Objects::linkObjects') Connector
checkConnectorSpecialization Public A Connector must directly or indirectly specialize the base Connector Links::links from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Links::links') Connector
checkConnectorTypeFeaturing Public Each relatedFeature of a Connector must have each featuringType of the Connector as a direct or indirect featuringType (where a Feature with no featuringType is treated as if the Classifier Base::Anything was its featuringType). OCL2.0: relatedFeature->forAll(f | if featuringType->isEmpty() then f.isFeaturedWithin(null) else featuringType->forAll(t | f.isFeaturedWithin(t)) endif) Connector
checkFeatureCrossingSpecialization Public If this Feature has isEnd = true and ownedCrossFeature returns a non-null value, then the crossFeature of the Feature must be the Feature returned from ownedCrossFeature (which implies that this Feature has an appropriate ownedCrossSubsetting to realize this). OCL2.0: ownedCrossFeature() <> null implies crossFeature = ownedCrossFeature() Feature
checkFeatureDataValueSpecialization Public If a Feature has an ownedTyping relationship to a DataType, then it must directly or indirectly specialize Base::dataValues from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(DataType)) implies specializesFromLibrary('Base::dataValues') Feature
checkFeatureEndRedefinition Public If a Feature has isEnd = true and an owningType that is not empty, then, for each direct supertype of its owningType, it must redefine the endFeature at the same position, if any. OCL2.0: isEnd and owningType <> null implies let i : Integer = owningType.ownedEndFeature->indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | supertype.endFeature->size() >= i implies redefines(supertype.endFeature->at(i)) Feature
checkFeatureEndSpecialization Public If a Feature has isEnd = true and an owningType that is an Association or a Connector, then it must directly or indirectly specialize Links::Link::participant from the Kernel Semantic Library. OCL2.0: isEnd and owningType <> null and (owningType.oclIsKindOf(Association) or owningType.oclIsKindOf(Connector)) implies specializesFromLibrary('Links::Link::participant') Feature
checkFeatureFeatureMembershipTypeFeaturing Public If a Feature is owned via a FeatureMembership, then it must have a featuringType for which the operation isFeaturingType returns true. OCL2.0: owningFeatureMembership <> null implies featuringTypes->exists(t | isFeaturingType(t)) Feature
checkFeatureFlowFeatureRedefinition Public If a Feature is the first ownedFeature of a first or second FlowEnd, then it must directly or indirectly specialize either Transfers::Transfer::source::sourceOutput or Transfers::Transfer::target::targetInput, respectively, from the Kernel Semantic Library. OCL2.0: owningType <> null and owningType.oclIsKindOf(FlowEnd) and owningType.ownedFeature->at(1) = self implies let flowType : Type = owningType.owningType in flowType <> null implies let i : Integer = flowType.ownedFeature.indexOf(owningType) in (i = 1 implies redefinesFromLibrary('Transfers::Transfer::source::sourceOutput')) and (i = 2 implies redefinesFromLibrary('Transfers::Transfer::source::targetInput')) Feature
checkFeatureObjectSpecialization Public If a Feature has an ownedTyping relationship to a Structure, then it must directly or indirectly specialize Objects::objects from the Kernel Semantics Library. OCL2.0: ownedTyping.type->exists(selectByKind(Structure)) implies specializesFromLibary('Objects::objects') Feature
checkFeatureOccurrenceSpecialization Public If a Feature has an ownedTyping relationship to a Class, then it must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(Class)) implies specializesFromLibrary('Occurrences::occurrences') Feature
checkFeatureOwnedCrossFeatureRedefinitionSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then, for any end Feature that is redefined by the owning end Feature of this Feature, this Feature must subset the crossFeature of the redefined end Feature, if this exists. OCL2.0: isOwnedCrossFeature() implies ownedSubsetting.subsettedFeature->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature <> null).crossFeature) Feature
checkFeatureOwnedCrossFeatureSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then it must directly or indirectly specialize the types of its owning end Feature. OCL2.0: isOwnedCrossFeature() implies owner.oclAsType(Feature).type->forAll(t | self.specializes(t)) Feature
checkFeatureOwnedCrossFeatureTypeFeaturing Public If this Feature is the ownedCrossFeature of an end Feature, then it must have featuringTypes consistent with the crossing from other end Features of the owningType of its end Feature. OCL2.0: isOwnedCrossFeature() implies let otherEnds : OrderedSet(Feature) = owner.oclAsType(Feature).owningType.endFeature->excluding(self) in if (otherEnds->size() = 1) then featuringType = otherEnds->first().type else featuringType->size() = 1 and featuringType->first().isCartesianProduct() and featuringType->first().asCartesianProduct() = otherEnds.type and featuringType->first().allSupertypes()->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature() <> null).crossFeature().featuringType) endif Feature
checkFeatureParameterRedefinition Public If a Feature is a parameter of an owningType that is a Behavior or Step, but not
  • A result parameter
  • A parameter of an InvocationExpression, with at least one non-implied ownedRedefinition
then, for each direct supertype of its owningType that is also a Behavior or Step, it must redefine the parameter at the same position, if any.
OCL2.0: owningType <> null and not owningFeatureMembership. oclIsKindOf(ReturnParameterMembership) and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step) and (owningType.oclIsKindOf(InvocationExpression) implies not ownedRedefinition->exists(not isImplied)) implies let i : Integer = owningType.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership))-> indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | let ownedParameters : Sequence(Feature) = supertype.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership)) in ownedParameters->size() >= i implies redefines(ownedParameters->at(i)) Feature
checkFeaturePortionSpecialization Public If a Feature has isPortion = true, an ownedTyping relationship to a Class, and an owningType that is a Class or another Feature typed by a Class, then it must directly or indirectly specialize Occurrences::Occurrence::portions from the Kernel Semantic Library. OCL2.0: isPortion and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::portions') Feature
checkFeatureResultRedefinition Public If a Feature is a result parameter of an owningType that is a Function or Expression, then, for each direct supertype of its owningType that is also a Function or Expression, it must redefine the result parameter. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Function) and self = owningType.oclAsType(Function).result or owningType.oclIsKindOf(Expression) and self = owningType.oclAsType(Expression).result) implies owningType.ownedSpecialization.general-> select(oclIsKindOf(Function) or oclIsKindOf(Expression))-> forAll(supertype | redefines( if superType.oclIsKindOf(Function) then superType.oclAsType(Function).result else superType.oclAsType(Expression).result endif) Feature
checkFeatureSpecialization Public A Feature must directly or indirectly specialize Base::things from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::things') Feature
checkFeatureSubobjectSpecialization Public A composite Feature typed by a Structure, and whose ownedType is a Structure or another Feature typed by a Structure must directly or indirectly specialize Objects::Object::subobjects. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Structure)) and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.type->includes(oclIsKindOf(Structure))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureSuboccurrenceSpecialization Public A composite Feature that has an ownedTyping relationship to a Class, and whose ownedType is a Class or another Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureValuationSpecialization Public If a Feature has a FeatureValue, no ownedSpecializations that are not implied, and is not directed, then it must specialize the result of the value Expression of the FeatureValue. OCL2.0: direction = null and ownedSpecializations->forAll(isImplied) implies ownedMembership-> selectByKind(FeatureValue)-> forAll(fv | specializes(fv.value.result)) Feature
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
deriveConnectorDefaultFeaturingType Public The defaultFeaturingType of a Connector is the innermost common direct or indirect featuringType of the relatedFeatures of the Connector, so that each relatedElement is featured within the defaultFeaturingType, if such exists. OCL2.0: let commonFeaturingTypes : OrderedSet(Type) = relatedFeature->closure(featuringType)->select(t | relatedFeature->forAll(f | f.isFeaturedWithin(t)) ) in let nearestCommonFeaturingTypes : OrderedSet(Type) = commonFeaturingTypes->reject(t1 | commonFeaturingTypes->exists(t2 | t2 <> t1 and t2->closure(featuringType)->contains(t1) )) in if nearestCommonFeaturingTypes->isEmpty() then null else nearestCommonFeaturingTypes->first() endif Connector
deriveConnectorRelatedFeature Public The relatedFeatures of a Connector are the referenced Features of its connectorEnds. OCL2.0: relatedFeature = connectorEnd.ownedReferenceSubsetting-> select(s | s <> null).subsettedFeature Connector
deriveConnectorSourceFeature Public The sourceFeature of a Connector is its first relatedFeature (if any). OCL2.0: sourceFeature = if relatedFeature->isEmpty() then null else relatedFeature->first() endif Connector
deriveConnectorTargetFeature Public The targetFeatures of a Connector are the relatedFeatures other than the sourceFeature. OCL2.0: targetFeature = if relatedFeature->size() < 2 then OrderedSet{} else relatedFeature-> subSequence(2, relatedFeature->size())-> asOrderedSet() endif Connector
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveFeatureChainingFeature Public The chainingFeatures of a Feature are the chainingFeatures of its ownedFeatureChainings. OCL2.0: chainingFeature = ownedFeatureChaining.chainingFeature Feature
deriveFeatureCrossFeature Public The crossFeature of a Feature is the second chainingFeature of the crossedFeature of the ownedCrossSubsetting of the Feature, if any. OCL2.0: crossFeature = if ownedCrossSubsetting = null then null else let chainingFeatures: Sequence(Feature) = ownedCrossSubsetting.crossedFeature.chainingFeature in if chainingFeatures->size() < 2 then null else chainingFeatures->at(2) endif Feature
deriveFeatureFeatureTarget Public If a Feature has no chainingFeatures, then its featureTarget is the Feature itself, otherwise the featureTarget is the last of the chainingFeatures. OCL2.0: featureTarget = if chainingFeature->isEmpty() then self else chainingFeature->last() endif Feature
deriveFeatureFeaturingType Public The featuringTypes of a Feature include the featuringTypes of all the typeFeaturings of the Feature. If the Feature has chainingFeatures, then its featuringTypes also include the featuringTypes of the first chainingFeature. OCL2.0: featuringType = let featuringTypes : OrderedSet(Type) = featuring.type->asOrderedSet() in if chainingFeature->isEmpty() then featuringTypes else featuringTypes-> union(chainingFeature->first().featuringType)-> asOrderedSet() endif Feature
deriveFeatureOwnedCrossSubsetting Public The ownedCrossSubsetting of a Feature is the ownedSubsetting that is a CrossSubsetting, if any. OCL2.0: ownedCrossSubsetting = let crossSubsettings: Sequence(CrossSubsetting) = ownedSubsetting->selectByKind(CrossSubsetting) in if crossSubsettings->isEmpty() then null else crossSubsettings->first() endif Feature
deriveFeatureOwnedFeatureChaining Public The ownedFeatureChainings of a Feature are the ownedRelationships that are FeatureChainings. OCL2.0: ownedFeatureChaining = ownedRelationship->selectByKind(FeatureChaining) Feature
deriveFeatureOwnedFeatureInverting Public The ownedFeatureInvertings of a Feature are its ownedRelationships that are FeatureInvertings. OCL2.0: ownedFeatureInverting = ownedRelationship->selectByKind(FeatureInverting)-> select(fi | fi.featureInverted = self) Feature
deriveFeatureOwnedRedefinition Public The ownedRedefinitions of a Feature are its ownedSubsettings that are Redefinitions. OCL2.0: ownedRedefinition = ownedSubsetting->selectByKind(Redefinition) Feature
deriveFeatureOwnedReferenceSubsetting Public The ownedReferenceSubsetting of a Feature is the first ownedSubsetting that is a ReferenceSubsetting (if any). OCL2.0: ownedReferenceSubsetting = let referenceSubsettings : OrderedSet(ReferenceSubsetting) = ownedSubsetting->selectByKind(ReferenceSubsetting) in if referenceSubsettings->isEmpty() then null else referenceSubsettings->first() endif Feature
deriveFeatureOwnedSubsetting Public The ownedSubsettings of a Feature are its ownedSpecializations that are Subsettings. OCL2.0: ownedSubsetting = ownedSpecialization->selectByKind(Subsetting) Feature
deriveFeatureOwnedTypeFeaturing Public The ownedTypeFeaturings of a Feature are its ownedRelationships that are TypeFeaturings and which have the Feature as their featureOfType. OCL2.0: ownedTypeFeaturing = ownedRelationship->selectByKind(TypeFeaturing)-> select(tf | tf.featureOfType = self) Feature
deriveFeatureOwnedTyping Public The ownedTypings of a Feature are its ownedSpecializations that are FeatureTypings. OCL2.0: ownedTyping = ownedGeneralization->selectByKind(FeatureTyping) Feature
deriveFeatureType Public The types of a Feature are the union of the types of its typings and the types of the Features it subsets, with all redundant supertypes removed. If the Feature has chainingFeatures, then the union also includes the types of the last chainingFeature. OCL2.0: type = let types : OrderedSet(Types) = OrderedSet{self}-> -- Note: The closure operation automatically handles circular relationships. closure(typingFeatures()).typing.type->asOrderedSet() in types->reject(t1 | types->exist(t2 | t2 <> t1 and t2.specializes(t1))) Feature
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveRelationshipRelatedElement Public The relatedElements of a Relationship consist of all of its source Elements followed by all of its target Elements. OCL2.0: relatedElement = source->union(target) Relationship
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
validateBindingConnectorIsBinary Public A BindingConnector must be binary. OCL2.0: relatedFeature->size() = 2 BindingConnector
validateConnectorBinarySpecialization Public If a Connector has more than two connectorEnds, then it must not specialize, directly or indirectly, the Association BinaryLink from the Kernel Semantic Library. OCL2.0: connectorEnds->size() > 2 implies not specializesFromLibrary('Links::BinaryLink') Connector
validateConnectorRelatedFeatures Public If a Connector is concrete (not abstract), then it must have at least two relatedFeatures. OCL2.0: not isAbstract implies relatedFeature->size() >= 2 Connector
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateFeatureChainingFeatureConformance Public Each chainingFeature (other than the first) must be featured within the previous chainingFeature. OCL2.0: Sequence{2..chainingFeature->size()}->forAll(i | chainingFeature->at(i).isFeaturedWithin(chainingFeature->at(i-1))) Feature
validateFeatureChainingFeatureNotOne Public A Feature must have either no chainingFeatures or more than one. OCL2.0: chainingFeature->size() <> 1 Feature
validateFeatureChainingFeaturesNotSelf Public A Feature cannot be one of its own chainingFeatures. English: chainingFeature->excludes(self) Feature
validateFeatureConstantIsVariable Public A Feature with isConstant = true must have isVariable = true. OCL2.0: isConstant implies isVariable Feature
validateFeatureCrossFeatureSpecialization Public If this Feature has a crossFeature, then, for any Feature that is redefined by this Feature, the crossFeature must specialize the crossFeature of the redefined end Feature, if this exists. OCL2.0: crossFeature <> null implies ownedRedefinition.redefinedFeature.crossFeature-> forAll(f | f <> null implies crossFeature.specializes(f)) Feature
validateFeatureCrossFeatureType Public The crossFeature of a Feature must have the same types as the Feature. OCL2.0: crossFeature <> null implies crossFeature.type->asSet() = type->asSet() Feature
validateFeatureEndIsConstant Public A Feature with isEnd = true and isVariable = true must have isConstant = true. OCL2.0: isEnd and isVariable implies isConstant Feature
validateFeatureEndMultiplicity Public If a Feature has isEnd = true, then it must have multiplicity 1..1. OCL2.0: isEnd implies multiplicities().allSuperTypes()->flatten()-> selectByKind(MultiplicityRange)->exists(hasBounds(1,1)) Feature
validateFeatureEndNoDirection Public A Feature with isEnd = true must have no direction. OCL2.0: isEnd implied direction = null Feature
validateFeatureEndNotDerivedAbstractCompositeOrPortion Public A Feature with isEnd = true must have all of isDerived = false, isAbstract = false, isComposite = false, and isPortion = false. OCL2.0: isEnd implies not (isDerived or isAbstract or isComposite or isPortion) Feature
validateFeatureIsVariable Public A Feature with isVariable = true must have an owningType that directly or indirectly specializes the Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: isVariable implies owningType <> null and owningType.specializes('Occurrences::Occurrence') Feature
validateFeatureMultiplicityDomain Public If a Feature has a multiplicity, then the featuringTypes of the multiplicity must be the same as those of the Feature itself. OCL2.0: multiplicity <> null implies multiplicity.featuringType = featuringType Feature
validateFeatureOwnedCrossSubsetting Public A Feature must have at most one ownedSubsetting that is a CrossSubsetting. OCL2.0: ownedSubsetting->selectByKind(CrossSubsetting)->size() <= 1 Feature
validateFeatureOwnedReferenceSubsetting Public A Feature must have at most one ownedSubsetting that is an ReferenceSubsetting. OCL2.0: ownedSubsetting->selectByKind(ReferenceSubsetting)->size() <= 1 Feature
validateFeaturePortionNotVariable Public No Documentation Provided OCL2.0: isPortion implies not isVariable Feature
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type

Properties

Name Visibility Type Default Description Owner
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
association Public Association [0..*] {derived} {ordered} {redefines: Feature.type} {many-to-many:Connector.typedConnector} null The Associations that type the Connector. Connector
chainingFeature Public Feature [0..*] {derived} {ordered} {many-to-many:Feature.chainedFeature} null The Feature that are chained together to determine the values of this Feature, derived from the chainingFeatures of the ownedFeatureChainings of this Feature, in the same order. The values of a Feature with chainingFeatures are the same as values of the last Feature in the chain, which can be found by starting with the values of the first Feature (for each instance of the domain of the original Feature), then using each of those as domain instances to find the values of the second Feature in chainingFeatures, and so on, to values of the last Feature. Feature
connectorEnd Public Feature [0..*] {derived} {ordered} {redefines: Type.endFeature} {many-to-many:Connector.featuringConnector} null The endFeatures of a Connector, which redefine the endFeatures of the associations of the Connector. The connectorEnds determine via ReferenceSubsetting Relationships which Features are related by the Connector. Connector
crossFeature Public Feature [0..1] {derived} null The second chainingFeature of the crossedFeature of the ownedCrossSubsetting of this Feature, if it has one. Semantically, the values of the crossFeature of an end Feature must include all values of the end Feature obtained when navigating from values of the other end Features of the same owningType. Feature
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
defaultFeaturingType Public Type [0..1] {derived} null The innermost Type that is a common direct or indirect featuringType of the relatedFeatures, such that, if it exists and was the featuringType of this Connector, the Connector would satisfy the checkConnectorTypeFeaturing constraint. Connector
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
direction Public FeatureDirectionKind [0..1] null Indicates how values of this Feature are determined or used (as specified for the FeatureDirectionKind). Feature
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {redefined by: Connector.connectorEnd} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
endOwningType Public Type [0..1] {derived} {subsetted: A_endFeature_typeWithEndFeature.typeWithEndFeature} {subsetted: Feature.owningType} null The Type that is related to this Feature by an EndFeatureMembership in which the Feature is an ownedMemberFeature. Feature
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
featureTarget Public Feature [1..1] {derived} null The last of the chainingFeatures of this Feature, if it has any. Otherwise, this Feature itself. Feature
featuringType Public Type [0..*] {derived} {ordered} {many-to-many:Feature.featureOfType} null Types that feature this Feature, such that any instance in the domain of the Feature must be classified by all of these Types, including at least all the featuringTypes of its typeFeaturings. If the Feature is chained, then the featuringTypes of the first Feature in the chain are also featuringTypes of the chained Feature. Feature
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isComposite Public Boolean [1..1] false Whether the Feature is a composite feature of its featuringType. If so, the values of the Feature cannot exist after its featuring instance no longer does and cannot be values of another composite feature that is not on the same featuring instance. Feature
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isConstant Public Boolean [1..1] false If isVariable is true, then whether the value of this Feature nevertheless does not change over all snapshots of its owningType. Feature
isDerived Public Boolean [1..1] false Whether the values of this Feature can always be computed from the values of other Features. Feature
isEnd Public Boolean [1..1] false Whether or not this Feature is an end Feature. An end Feature always has multiplicity 1, mapping each of its domain instances to a single co-domain instance. However, it may have a crossFeature, in which case values of the crossFeature must be the same as those found by navigation across instances of the owningType from values of other end Features to values of this Feature. If the owningType has n end Features, then the multiplicity, ordering, and uniqueness declared for the crossFeature of any one of these end Features constrains the cardinality, ordering, and uniqueness of the collection of values of that Feature reached by navigation when the values of the other n-1 end Features are held fixed. Feature
isImplied Public Boolean [1..1] false Whether this Relationship was generated by tooling to meet semantic rules, rather than being directly created by a modeler. Relationship
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isOrdered Public Boolean [1..1] false Whether an order exists for the values of this Feature or not. Feature
isPortion Public Boolean [1..1] false Whether the values of this Feature are contained in the space and time of instances of the domain of the Feature and represent the same thing as those instances. Feature
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
isUnique Public Boolean [1..1] true Whether or not values for this Feature must have no duplicates or not. Feature
isVariable Public Boolean [1..1] false Whether the value of this Feature might vary over time. That is, whether the Feature may have a different value for each snapshot of an owningType that is an Occurrence. Feature
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedCrossSubsetting Public CrossSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a CrossSubsetting}, for which the Feature is the crossingFeature. Feature
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureChaining Public FeatureChaining [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Feature that are FeatureChainings, for which the Feature will be the featureChained. Feature
ownedFeatureInverting Public FeatureInverting [0..*] {composite} {derived} {subsetted: A_invertingFeatureInverting_featureInverted.invertingFeatureInverting} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are FeatureInvertings and for which the Feature is the featureInverted. Feature
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedRedefinition Public Redefinition [0..*] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The ownedSubsettings of this Feature that are Redefinitions, for which the Feature is the redefiningFeature. Feature
ownedReferenceSubsetting Public ReferenceSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a ReferenceSubsetting, for which the Feature is the referencingFeature. Feature
ownedRelatedElement Public Element [0..*] {composite} {ordered} {subsetted: Relationship.relatedElement} null The relatedElements of this Relationship that are owned by the Relationship. Relationship
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedSubsetting Public Subsetting [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} {subsetted: A_subsettingFeature_subsetting.subsetting} null The ownedSpecializations of this Feature that are Subsettings, for which the Feature is the subsettingFeature. Feature
ownedTypeFeaturing Public TypeFeaturing [0..*] {composite} {derived} {ordered} {subsetted: A_featureOfType_typeFeaturing.typeFeaturing} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are TypeFeaturings and for which the Feature is the featureOfType. Feature
ownedTyping Public FeatureTyping [0..*] {composite} {derived} {ordered} {subsetted: Type.ownedSpecialization} {subsetted: A_typing_typedFeature.typing} null The ownedSpecializations of this Feature that are FeatureTypings, for which the Feature is the typedFeature. Feature
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningFeatureMembership Public FeatureMembership [0..1] {derived} {subsetted: Element.owningMembership} null The FeatureMembership that owns this Feature as an ownedMemberFeature, determining its owningType. Feature
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelatedElement Public Element [0..1] {subsetted: Relationship.relatedElement} null The relatedElement of this Relationship that owns the Relationship, if any. Relationship
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
owningType Public Type [0..1] {derived} {subsetted: A_typeWithFeature_feature.typeWithFeature} {subsetted: Element.owningNamespace} {subsetted: Feature.featuringType} null The Type that is the owningType of the owningFeatureMembership of this Feature. Feature
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
relatedElement Public Element [0..*] {derived} {ordered} {redefined by: Connector.relatedFeature} {many-to-many:Relationship.relationship} null The Elements that are related by this Relationship, derived as the union of the source and target Elements of the Relationship. Relationship
relatedFeature Public Feature [0..*] {derived} {ordered} {redefines: Relationship.relatedElement} {many-to-many:Connector.connector} null The Features that are related by this Connector considered as a Relationship and that restrict the links it identifies, given by the referenced Features of the connectorEnds of the Connector. Connector
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
source Public Element [0..*] {ordered} {redefined by: Connector.sourceFeature} {subsetted: Relationship.relatedElement} {many-to-many:Relationship.sourceRelationship} null The relatedElements from which this Relationship is considered to be directed. Relationship
sourceFeature Public Feature [0..1] {derived} {ordered} {redefines: Relationship.source} {subsetted: Connector.relatedFeature} null The source relatedFeature for this Connector. It is the first relatedFeature. Connector
target Public Element [0..*] {ordered} {redefined by: Connector.targetFeature} {subsetted: Relationship.relatedElement} {many-to-many:Relationship.targetRelationship} null The relatedElements to which this Relationship is considered to be directed. Relationship
targetFeature Public Feature [0..*] {derived} {ordered} {redefines: Relationship.target} {subsetted: Connector.relatedFeature} {many-to-many:Connector.targetConnector} null The target relatedFeatures for this Connector. This includes all the relatedFeatures other than the sourceFeature. Connector
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
type Public Type [0..*] {derived} {ordered} {redefined by: Connector.association} {many-to-many:Feature.typedFeature} null Types that restrict the values of this Feature, such that the values must be instances of all the types. The types of a Feature are derived from its typings and the types of its subsettings. If the Feature is chained, then the types of the last Feature in the chain are also types of the chained Feature. Feature
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type

BindingConnectorAsUsage [Class]

Features

Name Description
Fully Qualified Name SysML::Systems::Connections::BindingConnectorAsUsage
Visibility Public
Definition A BindingConnectorAsUsage is both a BindingConnector and a ConnectorAsUsage.
Is Abstract FALSE
Generalizations BindingConnector ConnectorAsUsage
Specializations
Containers

Rules

Name Visibilty Description Specification Owner
checkBindingConnectorSpecialization Public A BindingConnector must directly or indirectly specialize the base BindingConnector Links::selfLinks from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Links::selfLinks') BindingConnector
checkConnectorBinaryObjectSpecialization Public A binary Connector for an AssociationStructure must directly or indirectly specialize the base Connector Objects::binaryLinkObjects from the Kernel Semantic Library. OCL2.0: connectorEnds->size() = 2 and association->exists(oclIsKindOf(AssociationStructure)) implies specializesFromLibrary('Objects::binaryLinkObjects') Connector
checkConnectorBinarySpecialization Public A binary Connector must directly or indirectly specialize the base Connector Links::binaryLinks from the Kernel Semantic Library. OCL2.0: connectorEnd->size() = 2 implies specializesFromLibrary('Links::binaryLinks') Connector
checkConnectorObjectSpecialization Public A Connector for an AssociationStructure must directly or indirectly specialize the base Connector Objects::linkObjects from the Kernel Semantic Library. OCL2.0: association->exists(oclIsKindOf(AssociationStructure)) implies specializesFromLibrary('Objects::linkObjects') Connector
checkConnectorSpecialization Public A Connector must directly or indirectly specialize the base Connector Links::links from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Links::links') Connector
checkConnectorTypeFeaturing Public Each relatedFeature of a Connector must have each featuringType of the Connector as a direct or indirect featuringType (where a Feature with no featuringType is treated as if the Classifier Base::Anything was its featuringType). OCL2.0: relatedFeature->forAll(f | if featuringType->isEmpty() then f.isFeaturedWithin(null) else featuringType->forAll(t | f.isFeaturedWithin(t)) endif) Connector
checkFeatureCrossingSpecialization Public If this Feature has isEnd = true and ownedCrossFeature returns a non-null value, then the crossFeature of the Feature must be the Feature returned from ownedCrossFeature (which implies that this Feature has an appropriate ownedCrossSubsetting to realize this). OCL2.0: ownedCrossFeature() <> null implies crossFeature = ownedCrossFeature() Feature
checkFeatureDataValueSpecialization Public If a Feature has an ownedTyping relationship to a DataType, then it must directly or indirectly specialize Base::dataValues from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(DataType)) implies specializesFromLibrary('Base::dataValues') Feature
checkFeatureEndRedefinition Public If a Feature has isEnd = true and an owningType that is not empty, then, for each direct supertype of its owningType, it must redefine the endFeature at the same position, if any. OCL2.0: isEnd and owningType <> null implies let i : Integer = owningType.ownedEndFeature->indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | supertype.endFeature->size() >= i implies redefines(supertype.endFeature->at(i)) Feature
checkFeatureEndSpecialization Public If a Feature has isEnd = true and an owningType that is an Association or a Connector, then it must directly or indirectly specialize Links::Link::participant from the Kernel Semantic Library. OCL2.0: isEnd and owningType <> null and (owningType.oclIsKindOf(Association) or owningType.oclIsKindOf(Connector)) implies specializesFromLibrary('Links::Link::participant') Feature
checkFeatureFeatureMembershipTypeFeaturing Public If a Feature is owned via a FeatureMembership, then it must have a featuringType for which the operation isFeaturingType returns true. OCL2.0: owningFeatureMembership <> null implies featuringTypes->exists(t | isFeaturingType(t)) Feature
checkFeatureFlowFeatureRedefinition Public If a Feature is the first ownedFeature of a first or second FlowEnd, then it must directly or indirectly specialize either Transfers::Transfer::source::sourceOutput or Transfers::Transfer::target::targetInput, respectively, from the Kernel Semantic Library. OCL2.0: owningType <> null and owningType.oclIsKindOf(FlowEnd) and owningType.ownedFeature->at(1) = self implies let flowType : Type = owningType.owningType in flowType <> null implies let i : Integer = flowType.ownedFeature.indexOf(owningType) in (i = 1 implies redefinesFromLibrary('Transfers::Transfer::source::sourceOutput')) and (i = 2 implies redefinesFromLibrary('Transfers::Transfer::source::targetInput')) Feature
checkFeatureObjectSpecialization Public If a Feature has an ownedTyping relationship to a Structure, then it must directly or indirectly specialize Objects::objects from the Kernel Semantics Library. OCL2.0: ownedTyping.type->exists(selectByKind(Structure)) implies specializesFromLibary('Objects::objects') Feature
checkFeatureOccurrenceSpecialization Public If a Feature has an ownedTyping relationship to a Class, then it must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(Class)) implies specializesFromLibrary('Occurrences::occurrences') Feature
checkFeatureOwnedCrossFeatureRedefinitionSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then, for any end Feature that is redefined by the owning end Feature of this Feature, this Feature must subset the crossFeature of the redefined end Feature, if this exists. OCL2.0: isOwnedCrossFeature() implies ownedSubsetting.subsettedFeature->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature <> null).crossFeature) Feature
checkFeatureOwnedCrossFeatureSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then it must directly or indirectly specialize the types of its owning end Feature. OCL2.0: isOwnedCrossFeature() implies owner.oclAsType(Feature).type->forAll(t | self.specializes(t)) Feature
checkFeatureOwnedCrossFeatureTypeFeaturing Public If this Feature is the ownedCrossFeature of an end Feature, then it must have featuringTypes consistent with the crossing from other end Features of the owningType of its end Feature. OCL2.0: isOwnedCrossFeature() implies let otherEnds : OrderedSet(Feature) = owner.oclAsType(Feature).owningType.endFeature->excluding(self) in if (otherEnds->size() = 1) then featuringType = otherEnds->first().type else featuringType->size() = 1 and featuringType->first().isCartesianProduct() and featuringType->first().asCartesianProduct() = otherEnds.type and featuringType->first().allSupertypes()->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature() <> null).crossFeature().featuringType) endif Feature
checkFeatureParameterRedefinition Public If a Feature is a parameter of an owningType that is a Behavior or Step, but not
  • A result parameter
  • A parameter of an InvocationExpression, with at least one non-implied ownedRedefinition
then, for each direct supertype of its owningType that is also a Behavior or Step, it must redefine the parameter at the same position, if any.
OCL2.0: owningType <> null and not owningFeatureMembership. oclIsKindOf(ReturnParameterMembership) and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step) and (owningType.oclIsKindOf(InvocationExpression) implies not ownedRedefinition->exists(not isImplied)) implies let i : Integer = owningType.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership))-> indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | let ownedParameters : Sequence(Feature) = supertype.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership)) in ownedParameters->size() >= i implies redefines(ownedParameters->at(i)) Feature
checkFeaturePortionSpecialization Public If a Feature has isPortion = true, an ownedTyping relationship to a Class, and an owningType that is a Class or another Feature typed by a Class, then it must directly or indirectly specialize Occurrences::Occurrence::portions from the Kernel Semantic Library. OCL2.0: isPortion and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::portions') Feature
checkFeatureResultRedefinition Public If a Feature is a result parameter of an owningType that is a Function or Expression, then, for each direct supertype of its owningType that is also a Function or Expression, it must redefine the result parameter. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Function) and self = owningType.oclAsType(Function).result or owningType.oclIsKindOf(Expression) and self = owningType.oclAsType(Expression).result) implies owningType.ownedSpecialization.general-> select(oclIsKindOf(Function) or oclIsKindOf(Expression))-> forAll(supertype | redefines( if superType.oclIsKindOf(Function) then superType.oclAsType(Function).result else superType.oclAsType(Expression).result endif) Feature
checkFeatureSpecialization Public A Feature must directly or indirectly specialize Base::things from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::things') Feature
checkFeatureSubobjectSpecialization Public A composite Feature typed by a Structure, and whose ownedType is a Structure or another Feature typed by a Structure must directly or indirectly specialize Objects::Object::subobjects. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Structure)) and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.type->includes(oclIsKindOf(Structure))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureSuboccurrenceSpecialization Public A composite Feature that has an ownedTyping relationship to a Class, and whose ownedType is a Class or another Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureValuationSpecialization Public If a Feature has a FeatureValue, no ownedSpecializations that are not implied, and is not directed, then it must specialize the result of the value Expression of the FeatureValue. OCL2.0: direction = null and ownedSpecializations->forAll(isImplied) implies ownedMembership-> selectByKind(FeatureValue)-> forAll(fv | specializes(fv.value.result)) Feature
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
checkUsageVariationDefinitionSpecialization Public If a Usage has an owningVariationDefinition, then it must directly or indirectly specialize that Definition. OCL2.0: owningVariationDefinition <> null implies specializes(owningVariationDefinition) Usage
checkUsageVariationUsageSpecialization Public If a Usage has an owningVariationUsage, then it must directly or indirectly specialize that Usage. OCL2.0: owningVariationUsage <> null implies specializes(owningVariationUsage) Usage
checkUsageVariationUsageTypeFeaturing Public If a Usage has an owningVariationUsage, then it must have the same featuringTypes as that Usage. OCL2.0: owningVariationUsage <> null implies featuringType->asSet() = owningVariationUsage.featuringType->asSet() Usage
deriveConnectorDefaultFeaturingType Public The defaultFeaturingType of a Connector is the innermost common direct or indirect featuringType of the relatedFeatures of the Connector, so that each relatedElement is featured within the defaultFeaturingType, if such exists. OCL2.0: let commonFeaturingTypes : OrderedSet(Type) = relatedFeature->closure(featuringType)->select(t | relatedFeature->forAll(f | f.isFeaturedWithin(t)) ) in let nearestCommonFeaturingTypes : OrderedSet(Type) = commonFeaturingTypes->reject(t1 | commonFeaturingTypes->exists(t2 | t2 <> t1 and t2->closure(featuringType)->contains(t1) )) in if nearestCommonFeaturingTypes->isEmpty() then null else nearestCommonFeaturingTypes->first() endif Connector
deriveConnectorRelatedFeature Public The relatedFeatures of a Connector are the referenced Features of its connectorEnds. OCL2.0: relatedFeature = connectorEnd.ownedReferenceSubsetting-> select(s | s <> null).subsettedFeature Connector
deriveConnectorSourceFeature Public The sourceFeature of a Connector is its first relatedFeature (if any). OCL2.0: sourceFeature = if relatedFeature->isEmpty() then null else relatedFeature->first() endif Connector
deriveConnectorTargetFeature Public The targetFeatures of a Connector are the relatedFeatures other than the sourceFeature. OCL2.0: targetFeature = if relatedFeature->size() < 2 then OrderedSet{} else relatedFeature-> subSequence(2, relatedFeature->size())-> asOrderedSet() endif Connector
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveFeatureChainingFeature Public The chainingFeatures of a Feature are the chainingFeatures of its ownedFeatureChainings. OCL2.0: chainingFeature = ownedFeatureChaining.chainingFeature Feature
deriveFeatureCrossFeature Public The crossFeature of a Feature is the second chainingFeature of the crossedFeature of the ownedCrossSubsetting of the Feature, if any. OCL2.0: crossFeature = if ownedCrossSubsetting = null then null else let chainingFeatures: Sequence(Feature) = ownedCrossSubsetting.crossedFeature.chainingFeature in if chainingFeatures->size() < 2 then null else chainingFeatures->at(2) endif Feature
deriveFeatureFeatureTarget Public If a Feature has no chainingFeatures, then its featureTarget is the Feature itself, otherwise the featureTarget is the last of the chainingFeatures. OCL2.0: featureTarget = if chainingFeature->isEmpty() then self else chainingFeature->last() endif Feature
deriveFeatureFeaturingType Public The featuringTypes of a Feature include the featuringTypes of all the typeFeaturings of the Feature. If the Feature has chainingFeatures, then its featuringTypes also include the featuringTypes of the first chainingFeature. OCL2.0: featuringType = let featuringTypes : OrderedSet(Type) = featuring.type->asOrderedSet() in if chainingFeature->isEmpty() then featuringTypes else featuringTypes-> union(chainingFeature->first().featuringType)-> asOrderedSet() endif Feature
deriveFeatureOwnedCrossSubsetting Public The ownedCrossSubsetting of a Feature is the ownedSubsetting that is a CrossSubsetting, if any. OCL2.0: ownedCrossSubsetting = let crossSubsettings: Sequence(CrossSubsetting) = ownedSubsetting->selectByKind(CrossSubsetting) in if crossSubsettings->isEmpty() then null else crossSubsettings->first() endif Feature
deriveFeatureOwnedFeatureChaining Public The ownedFeatureChainings of a Feature are the ownedRelationships that are FeatureChainings. OCL2.0: ownedFeatureChaining = ownedRelationship->selectByKind(FeatureChaining) Feature
deriveFeatureOwnedFeatureInverting Public The ownedFeatureInvertings of a Feature are its ownedRelationships that are FeatureInvertings. OCL2.0: ownedFeatureInverting = ownedRelationship->selectByKind(FeatureInverting)-> select(fi | fi.featureInverted = self) Feature
deriveFeatureOwnedRedefinition Public The ownedRedefinitions of a Feature are its ownedSubsettings that are Redefinitions. OCL2.0: ownedRedefinition = ownedSubsetting->selectByKind(Redefinition) Feature
deriveFeatureOwnedReferenceSubsetting Public The ownedReferenceSubsetting of a Feature is the first ownedSubsetting that is a ReferenceSubsetting (if any). OCL2.0: ownedReferenceSubsetting = let referenceSubsettings : OrderedSet(ReferenceSubsetting) = ownedSubsetting->selectByKind(ReferenceSubsetting) in if referenceSubsettings->isEmpty() then null else referenceSubsettings->first() endif Feature
deriveFeatureOwnedSubsetting Public The ownedSubsettings of a Feature are its ownedSpecializations that are Subsettings. OCL2.0: ownedSubsetting = ownedSpecialization->selectByKind(Subsetting) Feature
deriveFeatureOwnedTypeFeaturing Public The ownedTypeFeaturings of a Feature are its ownedRelationships that are TypeFeaturings and which have the Feature as their featureOfType. OCL2.0: ownedTypeFeaturing = ownedRelationship->selectByKind(TypeFeaturing)-> select(tf | tf.featureOfType = self) Feature
deriveFeatureOwnedTyping Public The ownedTypings of a Feature are its ownedSpecializations that are FeatureTypings. OCL2.0: ownedTyping = ownedGeneralization->selectByKind(FeatureTyping) Feature
deriveFeatureType Public The types of a Feature are the union of the types of its typings and the types of the Features it subsets, with all redundant supertypes removed. If the Feature has chainingFeatures, then the union also includes the types of the last chainingFeature. OCL2.0: type = let types : OrderedSet(Types) = OrderedSet{self}-> -- Note: The closure operation automatically handles circular relationships. closure(typingFeatures()).typing.type->asOrderedSet() in types->reject(t1 | types->exist(t2 | t2 <> t1 and t2.specializes(t1))) Feature
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveRelationshipRelatedElement Public The relatedElements of a Relationship consist of all of its source Elements followed by all of its target Elements. OCL2.0: relatedElement = source->union(target) Relationship
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
deriveUsageDirectedUsage Public The directedUsages of a Usage are all its directedFeatures that are Usages. OCL2.0: directedUsage = directedFeature->selectByKind(Usage) Usage
deriveUsageIsReference Public A Usage is referential if it is not composite. OCL2.0: isReference = not isComposite Usage
deriveUsageMayTimeVary Public A Usage mayTimeVary if and only if all of the following are true
  • It has an owningType that specializes Occurrences::Occurrence (from the Kernel Semantic Library).
  • It is not a portion.
  • It does not specialize Links::SelfLink or Occurrences::HappensLink (from the Kernel Semantic Library).
  • If isComposite = true, it does not specialize Actions::Action (from the Systems Model Library).
OCL2.0: mayTimeVary = owningType <> null and owningType.specializesFromLibrary('Occurrences::Occurrence') and not ( isPortion or specializesFromLibrary('Links::SelfLink') or specializesFromLibrary('Occurrences::HappensLink') or isComposite and specializesFromLibrary('Actions::Action') ) Usage
deriveUsageNestedAction Public The ownedActions of a Usage are all its ownedUsages that are ActionUsages. OCL2.0: nestedAction = nestedUsage->selectByKind(ActionUsage) Usage
deriveUsageNestedAllocation Public The ownedAllocations of a Usage are all its ownedUsages that are AllocationUsages. OCL2.0: nestedAllocation = nestedUsage->selectByKind(AllocationUsage) Usage
deriveUsageNestedAnalysisCase Public The ownedAnalysisCases of a Usage are all its ownedUsages that are AnalysisCaseUsages. OCL2.0: nestedAnalysisCase = nestedUsage->selectByKind(AnalysisCaseUsage) Usage
deriveUsageNestedAttribute Public The ownedAttributes of a Usage are all its ownedUsages that are AttributeUsages. OCL2.0: nestedAttribute = nestedUsage->selectByKind(AttributeUsage) Usage
deriveUsageNestedCalculation Public The ownedCalculations of a Usage are all its ownedUsages that are CalculationUsages. OCL2.0: nestedCalculation = nestedUsage->selectByKind(CalculationUsage) Usage
deriveUsageNestedCase Public The ownedCases of a Usage are all its ownedUsages that are CaseUsages. OCL2.0: nestedCase = nestedUsage->selectByKind(CaseUsage) Usage
deriveUsageNestedConcern Public The ownedConcerns of a Usage are all its ownedUsages that are ConcernUsages. OCL2.0: nestedConcern = nestedUsage->selectByKind(ConcernUsage) Usage
deriveUsageNestedConnection Public The ownedConnections of a Usage are all its ownedUsages that are ConnectorAsUsages. OCL2.0: nestedConnection = nestedUsage->selectByKind(ConnectorAsUsage) Usage
deriveUsageNestedConstraint Public The ownedConstraints of a Usage are all its ownedUsages that are ConstraintUsages. OCL2.0: nestedConstraint = nestedUsage->selectByKind(ConstraintUsage) Usage
deriveUsageNestedEnumeration Public The ownedEnumerations of a Usage are all its ownedUsages that are EnumerationUsages. OCL2.0: ownedNested = nestedUsage->selectByKind(EnumerationUsage) Usage
deriveUsageNestedFlow Public The ownedFlows of a Usage are all its ownedUsages that are FlowConnectionUsages. OCL2.0: nestedFlow = nestedUsage->selectByKind(FlowConnectionUsage) Usage
deriveUsageNestedInterface Public The ownedInterfaces of a Usage are all its ownedUsages that are InterfaceUsages. OCL2.0: nestedInterface = nestedUsage->selectByKind(ReferenceUsage) Usage
deriveUsageNestedItem Public The ownedItems of a Usage are all its ownedUsages that are ItemUsages. OCL2.0: nestedItem = nestedUsage->selectByKind(ItemUsage) Usage
deriveUsageNestedMetadata Public The ownedMetadata of a Usage are all its ownedUsages that are MetadataUsages. OCL2.0: nestedMetadata = nestedUsage->selectByKind(MetadataUsage) Usage
deriveUsageNestedOccurrence Public The ownedOccurrences of a Usage are all its ownedUsages that are OccurrenceUsages. OCL2.0: nestedOccurrence = nestedUsage->selectByKind(OccurrenceUsage) Usage
deriveUsageNestedPart Public The ownedParts of a Usage are all its ownedUsages that are PartUsages. OCL2.0: nestedPart = nestedUsage->selectByKind(PartUsage) Usage
deriveUsageNestedPort Public The ownedPorts of a Usage are all its ownedUsages that are PortUsages. OCL2.0: nestedPort = nestedUsage->selectByKind(PortUsage) Usage
deriveUsageNestedReference Public The ownedReferences of a Usage are all its ownedUsages that are ReferenceUsages. OCL2.0: nestedReference = nestedUsage->selectByKind(ReferenceUsage) Usage
deriveUsageNestedRendering Public The ownedRenderings of a Usage are all its ownedUsages that are RenderingUsages. OCL2.0: nestedRendering = nestedUsage->selectByKind(RenderingUsage) Usage
deriveUsageNestedRequirement Public The ownedRequirements of a Usage are all its ownedUsages that are RequirementUsages. OCL2.0: nestedRequirement = nestedUsage->selectByKind(RequirementUsage) Usage
deriveUsageNestedState Public The ownedStates of a Usage are all its ownedUsages that are StateUsages. OCL2.0: nestedState = nestedUsage->selectByKind(StateUsage) Usage
deriveUsageNestedTransition Public The ownedTransitions of a Usage are all its ownedUsages that are TransitionUsages. OCL2.0: nestedTransition = nestedUsage->selectByKind(TransitionUsage) Usage
deriveUsageNestedUsage Public The ownedUsages of a Usage are all its ownedFeatures that are Usages. OCL2.0: nestedUsage = ownedFeature->selectByKind(Usage) Usage
deriveUsageNestedUseCase Public The ownedUseCases of a Usage are all its ownedUsages that are UseCaseUsages. OCL2.0: nestedUseCase = nestedUsage->selectByKind(UseCaseUsage) Usage
deriveUsageNestedVerificationCase Public The ownedValidationCases of a Usage are all its ownedUsages that are ValidationCaseUsages. OCL2.0: nestedVerificationCase = nestedUsage->selectByKind(VerificationCaseUsage) Usage
deriveUsageNestedView Public The ownedViews of a Usage are all its ownedUsages that are ViewUsages. OCL2.0: nestedView = nestedUsage->selectByKind(ViewUsage) Usage
deriveUsageNestedViewpoint Public The ownedViewpoints of a Usage are all its ownedUsages that are ViewpointUsages. OCL2.0: nestedViewpoint = nestedUsage->selectByKind(ViewpointUsage) Usage
deriveUsageUsage Public The usages of a Usage are all its features that are Usages. OCL2.0: usage = feature->selectByKind(Usage) Usage
deriveUsageVariant Public The variants of a Usage are the ownedVariantUsages of its variantMemberships. OCL2.0: variant = variantMembership.ownedVariantUsage Usage
deriveUsageVariantMembership Public The variantMemberships of a Usage are those ownedMemberships that are VariantMemberships. OCL2.0: variantMembership = ownedMembership->selectByKind(VariantMembership) Usage
validateBindingConnectorIsBinary Public A BindingConnector must be binary. OCL2.0: relatedFeature->size() = 2 BindingConnector
validateConnectorBinarySpecialization Public If a Connector has more than two connectorEnds, then it must not specialize, directly or indirectly, the Association BinaryLink from the Kernel Semantic Library. OCL2.0: connectorEnds->size() > 2 implies not specializesFromLibrary('Links::BinaryLink') Connector
validateConnectorRelatedFeatures Public If a Connector is concrete (not abstract), then it must have at least two relatedFeatures. OCL2.0: not isAbstract implies relatedFeature->size() >= 2 Connector
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateFeatureChainingFeatureConformance Public Each chainingFeature (other than the first) must be featured within the previous chainingFeature. OCL2.0: Sequence{2..chainingFeature->size()}->forAll(i | chainingFeature->at(i).isFeaturedWithin(chainingFeature->at(i-1))) Feature
validateFeatureChainingFeatureNotOne Public A Feature must have either no chainingFeatures or more than one. OCL2.0: chainingFeature->size() <> 1 Feature
validateFeatureChainingFeaturesNotSelf Public A Feature cannot be one of its own chainingFeatures. English: chainingFeature->excludes(self) Feature
validateFeatureConstantIsVariable Public A Feature with isConstant = true must have isVariable = true. OCL2.0: isConstant implies isVariable Feature
validateFeatureCrossFeatureSpecialization Public If this Feature has a crossFeature, then, for any Feature that is redefined by this Feature, the crossFeature must specialize the crossFeature of the redefined end Feature, if this exists. OCL2.0: crossFeature <> null implies ownedRedefinition.redefinedFeature.crossFeature-> forAll(f | f <> null implies crossFeature.specializes(f)) Feature
validateFeatureCrossFeatureType Public The crossFeature of a Feature must have the same types as the Feature. OCL2.0: crossFeature <> null implies crossFeature.type->asSet() = type->asSet() Feature
validateFeatureEndIsConstant Public A Feature with isEnd = true and isVariable = true must have isConstant = true. OCL2.0: isEnd and isVariable implies isConstant Feature
validateFeatureEndMultiplicity Public If a Feature has isEnd = true, then it must have multiplicity 1..1. OCL2.0: isEnd implies multiplicities().allSuperTypes()->flatten()-> selectByKind(MultiplicityRange)->exists(hasBounds(1,1)) Feature
validateFeatureEndNoDirection Public A Feature with isEnd = true must have no direction. OCL2.0: isEnd implied direction = null Feature
validateFeatureEndNotDerivedAbstractCompositeOrPortion Public A Feature with isEnd = true must have all of isDerived = false, isAbstract = false, isComposite = false, and isPortion = false. OCL2.0: isEnd implies not (isDerived or isAbstract or isComposite or isPortion) Feature
validateFeatureIsVariable Public A Feature with isVariable = true must have an owningType that directly or indirectly specializes the Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: isVariable implies owningType <> null and owningType.specializes('Occurrences::Occurrence') Feature
validateFeatureMultiplicityDomain Public If a Feature has a multiplicity, then the featuringTypes of the multiplicity must be the same as those of the Feature itself. OCL2.0: multiplicity <> null implies multiplicity.featuringType = featuringType Feature
validateFeatureOwnedCrossSubsetting Public A Feature must have at most one ownedSubsetting that is a CrossSubsetting. OCL2.0: ownedSubsetting->selectByKind(CrossSubsetting)->size() <= 1 Feature
validateFeatureOwnedReferenceSubsetting Public A Feature must have at most one ownedSubsetting that is an ReferenceSubsetting. OCL2.0: ownedSubsetting->selectByKind(ReferenceSubsetting)->size() <= 1 Feature
validateFeaturePortionNotVariable Public No Documentation Provided OCL2.0: isPortion implies not isVariable Feature
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type
validateUsageIsReferential Public A Usage that is directed, an end feature or has no featuringTypes must be referential. OCL2.0: direction <> null or isEnd or featuringType->isEmpty() implies isReference Usage
validateUsageVariationIsAbstract Public If a Usage is a variation, then it must be abstract. OCL2.0: isVariation implies isAbstract Usage
validateUsageVariationOwnedFeatureMembership Public If a Usage is a variation, then it must not have any ownedFeatureMemberships. OCL2.0: isVariation implies ownedFeatureMembership->isEmpty() Usage
validateUsageVariationSpecialization Public A variation Usage may not specialize any variation Definition or Usage. OCL2.0: isVariation implies not ownedSpecialization.specific->exists( oclIsKindOf(Definition) and oclAsType(Definition).isVariation or oclIsKindOf(Usage) and oclAsType(Usage).isVariation) Usage

Properties

Name Visibility Type Default Description Owner
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
association Public Association [0..*] {derived} {ordered} {redefines: Feature.type} {many-to-many:Connector.typedConnector} null The Associations that type the Connector. Connector
chainingFeature Public Feature [0..*] {derived} {ordered} {many-to-many:Feature.chainedFeature} null The Feature that are chained together to determine the values of this Feature, derived from the chainingFeatures of the ownedFeatureChainings of this Feature, in the same order. The values of a Feature with chainingFeatures are the same as values of the last Feature in the chain, which can be found by starting with the values of the first Feature (for each instance of the domain of the original Feature), then using each of those as domain instances to find the values of the second Feature in chainingFeatures, and so on, to values of the last Feature. Feature
connectorEnd Public Feature [0..*] {derived} {ordered} {redefines: Type.endFeature} {many-to-many:Connector.featuringConnector} null The endFeatures of a Connector, which redefine the endFeatures of the associations of the Connector. The connectorEnds determine via ReferenceSubsetting Relationships which Features are related by the Connector. Connector
crossFeature Public Feature [0..1] {derived} null The second chainingFeature of the crossedFeature of the ownedCrossSubsetting of this Feature, if it has one. Semantically, the values of the crossFeature of an end Feature must include all values of the end Feature obtained when navigating from values of the other end Features of the same owningType. Feature
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
defaultFeaturingType Public Type [0..1] {derived} null The innermost Type that is a common direct or indirect featuringType of the relatedFeatures, such that, if it exists and was the featuringType of this Connector, the Connector would satisfy the checkConnectorTypeFeaturing constraint. Connector
definition Public Classifier [0..*] {derived} {ordered} {redefines: Feature.type} {many-to-many:Usage.definedUsage} null The Classifiers that are the types of this Usage. Nominally, these are Definitions, but other kinds of Kernel Classifiers are also allowed, to permit use of Classifiers from the Kernel Model Libraries. Usage
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
directedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Usage.usageWithDirectedUsage} null The usages of this Usage that are directedFeatures. Usage
direction Public FeatureDirectionKind [0..1] null Indicates how values of this Feature are determined or used (as specified for the FeatureDirectionKind). Feature
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {redefined by: Connector.connectorEnd} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
endOwningType Public Type [0..1] {derived} {subsetted: A_endFeature_typeWithEndFeature.typeWithEndFeature} {subsetted: Feature.owningType} null The Type that is related to this Feature by an EndFeatureMembership in which the Feature is an ownedMemberFeature. Feature
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
featureTarget Public Feature [1..1] {derived} null The last of the chainingFeatures of this Feature, if it has any. Otherwise, this Feature itself. Feature
featuringType Public Type [0..*] {derived} {ordered} {many-to-many:Feature.featureOfType} null Types that feature this Feature, such that any instance in the domain of the Feature must be classified by all of these Types, including at least all the featuringTypes of its typeFeaturings. If the Feature is chained, then the featuringTypes of the first Feature in the chain are also featuringTypes of the chained Feature. Feature
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isComposite Public Boolean [1..1] false Whether the Feature is a composite feature of its featuringType. If so, the values of the Feature cannot exist after its featuring instance no longer does and cannot be values of another composite feature that is not on the same featuring instance. Feature
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isConstant Public Boolean [1..1] false If isVariable is true, then whether the value of this Feature nevertheless does not change over all snapshots of its owningType. Feature
isDerived Public Boolean [1..1] false Whether the values of this Feature can always be computed from the values of other Features. Feature
isEnd Public Boolean [1..1] false Whether or not this Feature is an end Feature. An end Feature always has multiplicity 1, mapping each of its domain instances to a single co-domain instance. However, it may have a crossFeature, in which case values of the crossFeature must be the same as those found by navigation across instances of the owningType from values of other end Features to values of this Feature. If the owningType has n end Features, then the multiplicity, ordering, and uniqueness declared for the crossFeature of any one of these end Features constrains the cardinality, ordering, and uniqueness of the collection of values of that Feature reached by navigation when the values of the other n-1 end Features are held fixed. Feature
isImplied Public Boolean [1..1] false Whether this Relationship was generated by tooling to meet semantic rules, rather than being directly created by a modeler. Relationship
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isOrdered Public Boolean [1..1] false Whether an order exists for the values of this Feature or not. Feature
isPortion Public Boolean [1..1] false Whether the values of this Feature are contained in the space and time of instances of the domain of the Feature and represent the same thing as those instances. Feature
isReference Public Boolean [1..1] {derived} null Whether this Usage is a referential Usage, that is, it has isComposite = false. Usage
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
isUnique Public Boolean [1..1] true Whether or not values for this Feature must have no duplicates or not. Feature
isVariable Public Boolean [1..1] {redefined by: Usage.mayTimeVary} false Whether the value of this Feature might vary over time. That is, whether the Feature may have a different value for each snapshot of an owningType that is an Occurrence. Feature
isVariation Public Boolean [1..1] null Whether this Usage is for a variation point or not. If true, then all the memberships of the Usage must be VariantMemberships. Usage
mayTimeVary Public Boolean [1..1] {derived} {redefines: Feature.isVariable} null Whether this Usage may be time varying (that is, whether it is featured by the snapshots of its owningType, rather than being featured by the owningType itself). However, if isConstant is also true, then the value of the Usage is nevertheless constant over the entire duration of an instance of its owningType (that is, it has the same value on all snapshots). The property mayTimeVary redefines the KerML property Feature::isVariable, making it derived. The property isConstant is inherited from Feature. Usage
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
nestedAction Public ActionUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ActionUsages that are nestedUsages of this Usage. Usage
nestedAllocation Public AllocationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConnection} null The AllocationUsages that are nestedUsages of this Usage. Usage
nestedAnalysisCase Public AnalysisCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The AnalysisCaseUsages that are nestedUsages of this Usage. Usage
nestedAttribute Public AttributeUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The code>AttributeUsages that are nestedUsages of this Usage. Usage
nestedCalculation Public CalculationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAction} null The CalculationUsage that are nestedUsages of this Usage. Usage
nestedCase Public CaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCalculation} null The CaseUsages that are nestedUsages of this Usage. Usage
nestedConcern Public ConcernUsage [0..*] {derived} {subsetted: Usage.nestedRequirement} null The ConcernUsages that are nestedUsages of this Usage. Usage
nestedConnection Public ConnectorAsUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The ConnectorAsUsages that are nestedUsages of this Usage. Note that this list includes BindingConnectorAsUsages, SuccessionAsUsages, and FlowConnectionUsages because these are ConnectorAsUsages even though they are not ConnectionUsages. Usage
nestedConstraint Public ConstraintUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ConstraintUsages that are nestedUsages of this Usage. Usage
nestedEnumeration Public EnumerationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAttribute} null The code>EnumerationUsages that are nestedUsages of this Usage. Usage
nestedFlow Public FlowUsage [0..*] {derived} {subsetted: Usage.nestedConnection} null The code>FlowUsages that are nestedUsages of this Usage. Usage
nestedInterface Public InterfaceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConnection} null The InterfaceUsages that are nestedUsages of this Usage. Usage
nestedItem Public ItemUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ItemUsages that are nestedUsages of this Usage. Usage
nestedMetadata Public MetadataUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedItem} null The MetadataUsages that are nestedUsages of this of this Usage. Usage
nestedOccurrence Public OccurrenceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The OccurrenceUsages that are nestedUsages of this Usage. Usage
nestedPart Public PartUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedItem} null The PartUsages that are nestedUsages of this Usage. Usage
nestedPort Public PortUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The PortUsages that are nestedUsages of this Usage. Usage
nestedReference Public ReferenceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The ReferenceUsages that are nestedUsages of this Usage. Usage
nestedRendering Public RenderingUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedPart} null The RenderingUsages that are nestedUsages of this Usage. Usage
nestedRequirement Public RequirementUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConstraint} null The RequirementUsages that are nestedUsages of this Usage. Usage
nestedState Public StateUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAction} null The StateUsages that are nestedUsages of this Usage. Usage
nestedTransition Public TransitionUsage [0..*] {derived} {subsetted: Usage.nestedUsage} null The TransitionUsages that are nestedUsages of this Usage. Usage
nestedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.ownedFeature} null The Usages that are ownedFeatures of this Usage. Usage
nestedUseCase Public UseCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The UseCaseUsages that are nestedUsages of this Usage. Usage
nestedVerificationCase Public VerificationCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The VerificationCaseUsages that are nestedUsages of this Usage. Usage
nestedView Public ViewUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedPart} null The ViewUsages that are nestedUsages of this Usage. Usage
nestedViewpoint Public ViewpointUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedRequirement} null The ViewpointUsages that are nestedUsages of this Usage. Usage
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedCrossSubsetting Public CrossSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a CrossSubsetting}, for which the Feature is the crossingFeature. Feature
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureChaining Public FeatureChaining [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Feature that are FeatureChainings, for which the Feature will be the featureChained. Feature
ownedFeatureInverting Public FeatureInverting [0..*] {composite} {derived} {subsetted: A_invertingFeatureInverting_featureInverted.invertingFeatureInverting} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are FeatureInvertings and for which the Feature is the featureInverted. Feature
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedRedefinition Public Redefinition [0..*] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The ownedSubsettings of this Feature that are Redefinitions, for which the Feature is the redefiningFeature. Feature
ownedReferenceSubsetting Public ReferenceSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a ReferenceSubsetting, for which the Feature is the referencingFeature. Feature
ownedRelatedElement Public Element [0..*] {composite} {ordered} {subsetted: Relationship.relatedElement} null The relatedElements of this Relationship that are owned by the Relationship. Relationship
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedSubsetting Public Subsetting [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} {subsetted: A_subsettingFeature_subsetting.subsetting} null The ownedSpecializations of this Feature that are Subsettings, for which the Feature is the subsettingFeature. Feature
ownedTypeFeaturing Public TypeFeaturing [0..*] {composite} {derived} {ordered} {subsetted: A_featureOfType_typeFeaturing.typeFeaturing} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are TypeFeaturings and for which the Feature is the featureOfType. Feature
ownedTyping Public FeatureTyping [0..*] {composite} {derived} {ordered} {subsetted: Type.ownedSpecialization} {subsetted: A_typing_typedFeature.typing} null The ownedSpecializations of this Feature that are FeatureTypings, for which the Feature is the typedFeature. Feature
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningDefinition Public Definition [0..1] {derived} {subsetted: Feature.owningType} null The Definition that owns this Usage (if any). Usage
owningFeatureMembership Public FeatureMembership [0..1] {derived} {subsetted: Element.owningMembership} null The FeatureMembership that owns this Feature as an ownedMemberFeature, determining its owningType. Feature
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelatedElement Public Element [0..1] {subsetted: Relationship.relatedElement} null The relatedElement of this Relationship that owns the Relationship, if any. Relationship
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
owningType Public Type [0..1] {derived} {subsetted: A_typeWithFeature_feature.typeWithFeature} {subsetted: Element.owningNamespace} {subsetted: Feature.featuringType} null The Type that is the owningType of the owningFeatureMembership of this Feature. Feature
owningUsage Public Usage [0..1] {derived} {subsetted: Feature.owningType} null The Usage in which this Usage is nested (if any). Usage
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
relatedElement Public Element [0..*] {derived} {ordered} {redefined by: Connector.relatedFeature} {many-to-many:Relationship.relationship} null The Elements that are related by this Relationship, derived as the union of the source and target Elements of the Relationship. Relationship
relatedFeature Public Feature [0..*] {derived} {ordered} {redefines: Relationship.relatedElement} {many-to-many:Connector.connector} null The Features that are related by this Connector considered as a Relationship and that restrict the links it identifies, given by the referenced Features of the connectorEnds of the Connector. Connector
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
source Public Element [0..*] {ordered} {redefined by: Connector.sourceFeature} {subsetted: Relationship.relatedElement} {many-to-many:Relationship.sourceRelationship} null The relatedElements from which this Relationship is considered to be directed. Relationship
sourceFeature Public Feature [0..1] {derived} {ordered} {redefines: Relationship.source} {subsetted: Connector.relatedFeature} null The source relatedFeature for this Connector. It is the first relatedFeature. Connector
target Public Element [0..*] {ordered} {redefined by: Connector.targetFeature} {subsetted: Relationship.relatedElement} {many-to-many:Relationship.targetRelationship} null The relatedElements to which this Relationship is considered to be directed. Relationship
targetFeature Public Feature [0..*] {derived} {ordered} {redefines: Relationship.target} {subsetted: Connector.relatedFeature} {many-to-many:Connector.targetConnector} null The target relatedFeatures for this Connector. This includes all the relatedFeatures other than the sourceFeature. Connector
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
type Public Type [0..*] {derived} {ordered} {redefined by: Connector.association} {many-to-many:Feature.typedFeature} null Types that restrict the values of this Feature, such that the values must be instances of all the types. The types of a Feature are derived from its typings and the types of its subsettings. If the Feature is chained, then the types of the last Feature in the chain are also types of the chained Feature. Feature
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type
usage Public Usage [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Usage.featuringUsage} null The Usages that are features of this Usage (not necessarily owned). Usage
variant Public Usage [0..*] {derived} {subsetted: Namespace.ownedMember} null The Usages which represent the variants of this Usage as a variation point Usage, if isVariation = true. If isVariation = false, then there must be no variants. Usage
variantMembership Public VariantMembership [0..*] {composite} {derived} {subsetted: Namespace.ownedMembership} null The ownedMemberships of this Usage that are VariantMemberships. If isVariation = true, then this must be all memberships of the Usage. If isVariation = false, then variantMembershipmust be empty. Usage

BooleanExpression [Class]

Features

Name Description
Fully Qualified Name KerML::Kernel::Functions::BooleanExpression
Visibility Public
Definition A BooleanExpression is a Boolean-valued Expression whose type is a Predicate. It represents a logical condition resulting from the evaluation of the Predicate.
Is Abstract FALSE
Generalizations Expression
Specializations Invariant
Containers

Rules

Name Visibilty Description Specification Owner
checkBooleanExpressionSpecialization Public A BooleanExpression must directly or indirectly specialize the base BooleanExpression Performances::booleanEvaluations from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::booleanEvaluations') BooleanExpression
checkExpressionResultBindingConnector Public If an Expression has an Expression owned via a ResultExpressionMembership, then the owning Expression must also own a BindingConnector between its result parameter and the result parameter of the result Expression. OCL2.0: ownedMembership.selectByKind(ResultExpressionMembership)-> forAll(mem | ownedFeature.selectByKind(BindingConnector)-> exists(binding | binding.relatedFeature->includes(result) and binding.relatedFeature->includes(mem.ownedResultExpression.result))) Expression
checkExpressionSpecialization Public An Expression must directly or indirectly specialize the base Expression Performances::evaluations from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::evaluations') Expression
checkExpressionTypeFeaturing Public If this Expression is owned by a FeatureValue, then it must have the same featuringTypes as the featureWithValue of the FeatureValue. OCL2.0: owningMembership <> null and owningMembership.oclIsKindOf(FeatureValue) implies let featureWithValue : Feature = owningMembership.oclAsType(FeatureValue).featureWithValue in featuringType = featureWithValue.featuringType Expression
checkFeatureCrossingSpecialization Public If this Feature has isEnd = true and ownedCrossFeature returns a non-null value, then the crossFeature of the Feature must be the Feature returned from ownedCrossFeature (which implies that this Feature has an appropriate ownedCrossSubsetting to realize this). OCL2.0: ownedCrossFeature() <> null implies crossFeature = ownedCrossFeature() Feature
checkFeatureDataValueSpecialization Public If a Feature has an ownedTyping relationship to a DataType, then it must directly or indirectly specialize Base::dataValues from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(DataType)) implies specializesFromLibrary('Base::dataValues') Feature
checkFeatureEndRedefinition Public If a Feature has isEnd = true and an owningType that is not empty, then, for each direct supertype of its owningType, it must redefine the endFeature at the same position, if any. OCL2.0: isEnd and owningType <> null implies let i : Integer = owningType.ownedEndFeature->indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | supertype.endFeature->size() >= i implies redefines(supertype.endFeature->at(i)) Feature
checkFeatureEndSpecialization Public If a Feature has isEnd = true and an owningType that is an Association or a Connector, then it must directly or indirectly specialize Links::Link::participant from the Kernel Semantic Library. OCL2.0: isEnd and owningType <> null and (owningType.oclIsKindOf(Association) or owningType.oclIsKindOf(Connector)) implies specializesFromLibrary('Links::Link::participant') Feature
checkFeatureFeatureMembershipTypeFeaturing Public If a Feature is owned via a FeatureMembership, then it must have a featuringType for which the operation isFeaturingType returns true. OCL2.0: owningFeatureMembership <> null implies featuringTypes->exists(t | isFeaturingType(t)) Feature
checkFeatureFlowFeatureRedefinition Public If a Feature is the first ownedFeature of a first or second FlowEnd, then it must directly or indirectly specialize either Transfers::Transfer::source::sourceOutput or Transfers::Transfer::target::targetInput, respectively, from the Kernel Semantic Library. OCL2.0: owningType <> null and owningType.oclIsKindOf(FlowEnd) and owningType.ownedFeature->at(1) = self implies let flowType : Type = owningType.owningType in flowType <> null implies let i : Integer = flowType.ownedFeature.indexOf(owningType) in (i = 1 implies redefinesFromLibrary('Transfers::Transfer::source::sourceOutput')) and (i = 2 implies redefinesFromLibrary('Transfers::Transfer::source::targetInput')) Feature
checkFeatureObjectSpecialization Public If a Feature has an ownedTyping relationship to a Structure, then it must directly or indirectly specialize Objects::objects from the Kernel Semantics Library. OCL2.0: ownedTyping.type->exists(selectByKind(Structure)) implies specializesFromLibary('Objects::objects') Feature
checkFeatureOccurrenceSpecialization Public If a Feature has an ownedTyping relationship to a Class, then it must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(Class)) implies specializesFromLibrary('Occurrences::occurrences') Feature
checkFeatureOwnedCrossFeatureRedefinitionSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then, for any end Feature that is redefined by the owning end Feature of this Feature, this Feature must subset the crossFeature of the redefined end Feature, if this exists. OCL2.0: isOwnedCrossFeature() implies ownedSubsetting.subsettedFeature->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature <> null).crossFeature) Feature
checkFeatureOwnedCrossFeatureSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then it must directly or indirectly specialize the types of its owning end Feature. OCL2.0: isOwnedCrossFeature() implies owner.oclAsType(Feature).type->forAll(t | self.specializes(t)) Feature
checkFeatureOwnedCrossFeatureTypeFeaturing Public If this Feature is the ownedCrossFeature of an end Feature, then it must have featuringTypes consistent with the crossing from other end Features of the owningType of its end Feature. OCL2.0: isOwnedCrossFeature() implies let otherEnds : OrderedSet(Feature) = owner.oclAsType(Feature).owningType.endFeature->excluding(self) in if (otherEnds->size() = 1) then featuringType = otherEnds->first().type else featuringType->size() = 1 and featuringType->first().isCartesianProduct() and featuringType->first().asCartesianProduct() = otherEnds.type and featuringType->first().allSupertypes()->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature() <> null).crossFeature().featuringType) endif Feature
checkFeatureParameterRedefinition Public If a Feature is a parameter of an owningType that is a Behavior or Step, but not
  • A result parameter
  • A parameter of an InvocationExpression, with at least one non-implied ownedRedefinition
then, for each direct supertype of its owningType that is also a Behavior or Step, it must redefine the parameter at the same position, if any.
OCL2.0: owningType <> null and not owningFeatureMembership. oclIsKindOf(ReturnParameterMembership) and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step) and (owningType.oclIsKindOf(InvocationExpression) implies not ownedRedefinition->exists(not isImplied)) implies let i : Integer = owningType.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership))-> indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | let ownedParameters : Sequence(Feature) = supertype.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership)) in ownedParameters->size() >= i implies redefines(ownedParameters->at(i)) Feature
checkFeaturePortionSpecialization Public If a Feature has isPortion = true, an ownedTyping relationship to a Class, and an owningType that is a Class or another Feature typed by a Class, then it must directly or indirectly specialize Occurrences::Occurrence::portions from the Kernel Semantic Library. OCL2.0: isPortion and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::portions') Feature
checkFeatureResultRedefinition Public If a Feature is a result parameter of an owningType that is a Function or Expression, then, for each direct supertype of its owningType that is also a Function or Expression, it must redefine the result parameter. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Function) and self = owningType.oclAsType(Function).result or owningType.oclIsKindOf(Expression) and self = owningType.oclAsType(Expression).result) implies owningType.ownedSpecialization.general-> select(oclIsKindOf(Function) or oclIsKindOf(Expression))-> forAll(supertype | redefines( if superType.oclIsKindOf(Function) then superType.oclAsType(Function).result else superType.oclAsType(Expression).result endif) Feature
checkFeatureSpecialization Public A Feature must directly or indirectly specialize Base::things from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::things') Feature
checkFeatureSubobjectSpecialization Public A composite Feature typed by a Structure, and whose ownedType is a Structure or another Feature typed by a Structure must directly or indirectly specialize Objects::Object::subobjects. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Structure)) and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.type->includes(oclIsKindOf(Structure))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureSuboccurrenceSpecialization Public A composite Feature that has an ownedTyping relationship to a Class, and whose ownedType is a Class or another Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureValuationSpecialization Public If a Feature has a FeatureValue, no ownedSpecializations that are not implied, and is not directed, then it must specialize the result of the value Expression of the FeatureValue. OCL2.0: direction = null and ownedSpecializations->forAll(isImplied) implies ownedMembership-> selectByKind(FeatureValue)-> forAll(fv | specializes(fv.value.result)) Feature
checkStepEnclosedPerformanceSpecialization Public AStep whose owningType is a Behavior or another Step must directly or indirectly specialize the Step Performances::Performance::enclosedPerformance. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step)) implies specializesFromLibrary('Performances::Performance::enclosedPerformance') Step
checkStepOwnedPerformanceSpecialization Public A composite Step whose owningType is a Structure or a Feature typed by a Structure must directly or indirectly specialize the Step Objects::Object::ownedPerformance. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Structure)) implies specializesFromLibrary('Objects::Object::ownedPerformance') Step
checkStepSpecialization Public A Step must directly or indirectly specialize the base Step Performances::performances from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::performances') Step
checkStepSubperformanceSpecialization Public AStep whose owningType is a Behavior or another Step, and which is composite, must directly or indirectly specialize the Step Performances::Performance::subperformance. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step)) and self.isComposite implies specializesFromLibrary('Performances::Performance::subperformance') Step
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveExpressionIsModelLevelEvaluable Public Whether an Expression isModelLevelEvaluable is determined by the modelLevelEvaluable() operation. OCL2.0: isModelLevelEvaluable = modelLevelEvaluable(Set(Element){}) Expression
deriveExpressionResult Public The result parameter of an Expression is its parameter owned (possibly in a supertype) via a ReturnParameterMembership (if any). OCL2.0: result = let resultParams : Sequence(Feature) = featureMemberships-> selectByKind(ReturnParameterMembership). ownedMemberParameter in if resultParams->notEmpty() then resultParams->first() else null endif Expression
deriveFeatureChainingFeature Public The chainingFeatures of a Feature are the chainingFeatures of its ownedFeatureChainings. OCL2.0: chainingFeature = ownedFeatureChaining.chainingFeature Feature
deriveFeatureCrossFeature Public The crossFeature of a Feature is the second chainingFeature of the crossedFeature of the ownedCrossSubsetting of the Feature, if any. OCL2.0: crossFeature = if ownedCrossSubsetting = null then null else let chainingFeatures: Sequence(Feature) = ownedCrossSubsetting.crossedFeature.chainingFeature in if chainingFeatures->size() < 2 then null else chainingFeatures->at(2) endif Feature
deriveFeatureFeatureTarget Public If a Feature has no chainingFeatures, then its featureTarget is the Feature itself, otherwise the featureTarget is the last of the chainingFeatures. OCL2.0: featureTarget = if chainingFeature->isEmpty() then self else chainingFeature->last() endif Feature
deriveFeatureFeaturingType Public The featuringTypes of a Feature include the featuringTypes of all the typeFeaturings of the Feature. If the Feature has chainingFeatures, then its featuringTypes also include the featuringTypes of the first chainingFeature. OCL2.0: featuringType = let featuringTypes : OrderedSet(Type) = featuring.type->asOrderedSet() in if chainingFeature->isEmpty() then featuringTypes else featuringTypes-> union(chainingFeature->first().featuringType)-> asOrderedSet() endif Feature
deriveFeatureOwnedCrossSubsetting Public The ownedCrossSubsetting of a Feature is the ownedSubsetting that is a CrossSubsetting, if any. OCL2.0: ownedCrossSubsetting = let crossSubsettings: Sequence(CrossSubsetting) = ownedSubsetting->selectByKind(CrossSubsetting) in if crossSubsettings->isEmpty() then null else crossSubsettings->first() endif Feature
deriveFeatureOwnedFeatureChaining Public The ownedFeatureChainings of a Feature are the ownedRelationships that are FeatureChainings. OCL2.0: ownedFeatureChaining = ownedRelationship->selectByKind(FeatureChaining) Feature
deriveFeatureOwnedFeatureInverting Public The ownedFeatureInvertings of a Feature are its ownedRelationships that are FeatureInvertings. OCL2.0: ownedFeatureInverting = ownedRelationship->selectByKind(FeatureInverting)-> select(fi | fi.featureInverted = self) Feature
deriveFeatureOwnedRedefinition Public The ownedRedefinitions of a Feature are its ownedSubsettings that are Redefinitions. OCL2.0: ownedRedefinition = ownedSubsetting->selectByKind(Redefinition) Feature
deriveFeatureOwnedReferenceSubsetting Public The ownedReferenceSubsetting of a Feature is the first ownedSubsetting that is a ReferenceSubsetting (if any). OCL2.0: ownedReferenceSubsetting = let referenceSubsettings : OrderedSet(ReferenceSubsetting) = ownedSubsetting->selectByKind(ReferenceSubsetting) in if referenceSubsettings->isEmpty() then null else referenceSubsettings->first() endif Feature
deriveFeatureOwnedSubsetting Public The ownedSubsettings of a Feature are its ownedSpecializations that are Subsettings. OCL2.0: ownedSubsetting = ownedSpecialization->selectByKind(Subsetting) Feature
deriveFeatureOwnedTypeFeaturing Public The ownedTypeFeaturings of a Feature are its ownedRelationships that are TypeFeaturings and which have the Feature as their featureOfType. OCL2.0: ownedTypeFeaturing = ownedRelationship->selectByKind(TypeFeaturing)-> select(tf | tf.featureOfType = self) Feature
deriveFeatureOwnedTyping Public The ownedTypings of a Feature are its ownedSpecializations that are FeatureTypings. OCL2.0: ownedTyping = ownedGeneralization->selectByKind(FeatureTyping) Feature
deriveFeatureType Public The types of a Feature are the union of the types of its typings and the types of the Features it subsets, with all redundant supertypes removed. If the Feature has chainingFeatures, then the union also includes the types of the last chainingFeature. OCL2.0: type = let types : OrderedSet(Types) = OrderedSet{self}-> -- Note: The closure operation automatically handles circular relationships. closure(typingFeatures()).typing.type->asOrderedSet() in types->reject(t1 | types->exist(t2 | t2 <> t1 and t2.specializes(t1))) Feature
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveStepBehavior Public The behaviors of a Step are all its types that are Behaviors. OCL2.0: behavior = type->selectByKind(Behavior) Step
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateExpressionResultExpressionMembership Public An Expression must have at most one ResultExpressionMembership. OCL2.0: membership->selectByKind(ResultExpressionMembership)->size() <= 1 Expression
validateExpressionResultParameterMembership Public An Expression must have exactly one featureMembership (owned or inherited) that is a ResultParameterMembership. OCL2.0: featureMembership-> selectByKind(ReturnParameterMembership)-> size() = 1 Expression
validateFeatureChainingFeatureConformance Public Each chainingFeature (other than the first) must be featured within the previous chainingFeature. OCL2.0: Sequence{2..chainingFeature->size()}->forAll(i | chainingFeature->at(i).isFeaturedWithin(chainingFeature->at(i-1))) Feature
validateFeatureChainingFeatureNotOne Public A Feature must have either no chainingFeatures or more than one. OCL2.0: chainingFeature->size() <> 1 Feature
validateFeatureChainingFeaturesNotSelf Public A Feature cannot be one of its own chainingFeatures. English: chainingFeature->excludes(self) Feature
validateFeatureConstantIsVariable Public A Feature with isConstant = true must have isVariable = true. OCL2.0: isConstant implies isVariable Feature
validateFeatureCrossFeatureSpecialization Public If this Feature has a crossFeature, then, for any Feature that is redefined by this Feature, the crossFeature must specialize the crossFeature of the redefined end Feature, if this exists. OCL2.0: crossFeature <> null implies ownedRedefinition.redefinedFeature.crossFeature-> forAll(f | f <> null implies crossFeature.specializes(f)) Feature
validateFeatureCrossFeatureType Public The crossFeature of a Feature must have the same types as the Feature. OCL2.0: crossFeature <> null implies crossFeature.type->asSet() = type->asSet() Feature
validateFeatureEndIsConstant Public A Feature with isEnd = true and isVariable = true must have isConstant = true. OCL2.0: isEnd and isVariable implies isConstant Feature
validateFeatureEndMultiplicity Public If a Feature has isEnd = true, then it must have multiplicity 1..1. OCL2.0: isEnd implies multiplicities().allSuperTypes()->flatten()-> selectByKind(MultiplicityRange)->exists(hasBounds(1,1)) Feature
validateFeatureEndNoDirection Public A Feature with isEnd = true must have no direction. OCL2.0: isEnd implied direction = null Feature
validateFeatureEndNotDerivedAbstractCompositeOrPortion Public A Feature with isEnd = true must have all of isDerived = false, isAbstract = false, isComposite = false, and isPortion = false. OCL2.0: isEnd implies not (isDerived or isAbstract or isComposite or isPortion) Feature
validateFeatureIsVariable Public A Feature with isVariable = true must have an owningType that directly or indirectly specializes the Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: isVariable implies owningType <> null and owningType.specializes('Occurrences::Occurrence') Feature
validateFeatureMultiplicityDomain Public If a Feature has a multiplicity, then the featuringTypes of the multiplicity must be the same as those of the Feature itself. OCL2.0: multiplicity <> null implies multiplicity.featuringType = featuringType Feature
validateFeatureOwnedCrossSubsetting Public A Feature must have at most one ownedSubsetting that is a CrossSubsetting. OCL2.0: ownedSubsetting->selectByKind(CrossSubsetting)->size() <= 1 Feature
validateFeatureOwnedReferenceSubsetting Public A Feature must have at most one ownedSubsetting that is an ReferenceSubsetting. OCL2.0: ownedSubsetting->selectByKind(ReferenceSubsetting)->size() <= 1 Feature
validateFeaturePortionNotVariable Public No Documentation Provided OCL2.0: isPortion implies not isVariable Feature
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type

Properties

Name Visibility Type Default Description Owner
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
behavior Public Behavior [0..*] {derived} {ordered} {redefined by: Expression.function} {subsetted: Feature.type} {many-to-many:Step.typedStep} null The Behaviors that type this Step. Step
chainingFeature Public Feature [0..*] {derived} {ordered} {many-to-many:Feature.chainedFeature} null The Feature that are chained together to determine the values of this Feature, derived from the chainingFeatures of the ownedFeatureChainings of this Feature, in the same order. The values of a Feature with chainingFeatures are the same as values of the last Feature in the chain, which can be found by starting with the values of the first Feature (for each instance of the domain of the original Feature), then using each of those as domain instances to find the values of the second Feature in chainingFeatures, and so on, to values of the last Feature. Feature
crossFeature Public Feature [0..1] {derived} null The second chainingFeature of the crossedFeature of the ownedCrossSubsetting of this Feature, if it has one. Semantically, the values of the crossFeature of an end Feature must include all values of the end Feature obtained when navigating from values of the other end Features of the same owningType. Feature
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {redefined by: Step.parameter} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
direction Public FeatureDirectionKind [0..1] null Indicates how values of this Feature are determined or used (as specified for the FeatureDirectionKind). Feature
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
endOwningType Public Type [0..1] {derived} {subsetted: A_endFeature_typeWithEndFeature.typeWithEndFeature} {subsetted: Feature.owningType} null The Type that is related to this Feature by an EndFeatureMembership in which the Feature is an ownedMemberFeature. Feature
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
featureTarget Public Feature [1..1] {derived} null The last of the chainingFeatures of this Feature, if it has any. Otherwise, this Feature itself. Feature
featuringType Public Type [0..*] {derived} {ordered} {many-to-many:Feature.featureOfType} null Types that feature this Feature, such that any instance in the domain of the Feature must be classified by all of these Types, including at least all the featuringTypes of its typeFeaturings. If the Feature is chained, then the featuringTypes of the first Feature in the chain are also featuringTypes of the chained Feature. Feature
function Public Function [0..1] {derived} {redefines: Step.behavior} {redefined by: BooleanExpression.predicate} null The Function that types this Expression. Expression
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isComposite Public Boolean [1..1] false Whether the Feature is a composite feature of its featuringType. If so, the values of the Feature cannot exist after its featuring instance no longer does and cannot be values of another composite feature that is not on the same featuring instance. Feature
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isConstant Public Boolean [1..1] false If isVariable is true, then whether the value of this Feature nevertheless does not change over all snapshots of its owningType. Feature
isDerived Public Boolean [1..1] false Whether the values of this Feature can always be computed from the values of other Features. Feature
isEnd Public Boolean [1..1] false Whether or not this Feature is an end Feature. An end Feature always has multiplicity 1, mapping each of its domain instances to a single co-domain instance. However, it may have a crossFeature, in which case values of the crossFeature must be the same as those found by navigation across instances of the owningType from values of other end Features to values of this Feature. If the owningType has n end Features, then the multiplicity, ordering, and uniqueness declared for the crossFeature of any one of these end Features constrains the cardinality, ordering, and uniqueness of the collection of values of that Feature reached by navigation when the values of the other n-1 end Features are held fixed. Feature
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isModelLevelEvaluable Public Boolean [1..1] {derived} null Whether this Expression meets the constraints necessary to be evaluated at model level, that is, using metadata within the model. Expression
isOrdered Public Boolean [1..1] false Whether an order exists for the values of this Feature or not. Feature
isPortion Public Boolean [1..1] false Whether the values of this Feature are contained in the space and time of instances of the domain of the Feature and represent the same thing as those instances. Feature
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
isUnique Public Boolean [1..1] true Whether or not values for this Feature must have no duplicates or not. Feature
isVariable Public Boolean [1..1] false Whether the value of this Feature might vary over time. That is, whether the Feature may have a different value for each snapshot of an owningType that is an Occurrence. Feature
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedCrossSubsetting Public CrossSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a CrossSubsetting}, for which the Feature is the crossingFeature. Feature
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureChaining Public FeatureChaining [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Feature that are FeatureChainings, for which the Feature will be the featureChained. Feature
ownedFeatureInverting Public FeatureInverting [0..*] {composite} {derived} {subsetted: A_invertingFeatureInverting_featureInverted.invertingFeatureInverting} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are FeatureInvertings and for which the Feature is the featureInverted. Feature
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedRedefinition Public Redefinition [0..*] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The ownedSubsettings of this Feature that are Redefinitions, for which the Feature is the redefiningFeature. Feature
ownedReferenceSubsetting Public ReferenceSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a ReferenceSubsetting, for which the Feature is the referencingFeature. Feature
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedSubsetting Public Subsetting [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} {subsetted: A_subsettingFeature_subsetting.subsetting} null The ownedSpecializations of this Feature that are Subsettings, for which the Feature is the subsettingFeature. Feature
ownedTypeFeaturing Public TypeFeaturing [0..*] {composite} {derived} {ordered} {subsetted: A_featureOfType_typeFeaturing.typeFeaturing} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are TypeFeaturings and for which the Feature is the featureOfType. Feature
ownedTyping Public FeatureTyping [0..*] {composite} {derived} {ordered} {subsetted: Type.ownedSpecialization} {subsetted: A_typing_typedFeature.typing} null The ownedSpecializations of this Feature that are FeatureTypings, for which the Feature is the typedFeature. Feature
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningFeatureMembership Public FeatureMembership [0..1] {derived} {subsetted: Element.owningMembership} null The FeatureMembership that owns this Feature as an ownedMemberFeature, determining its owningType. Feature
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
owningType Public Type [0..1] {derived} {subsetted: A_typeWithFeature_feature.typeWithFeature} {subsetted: Element.owningNamespace} {subsetted: Feature.featuringType} null The Type that is the owningType of the owningFeatureMembership of this Feature. Feature
parameter Public Feature [0..*] {derived} {ordered} {redefines: Type.directedFeature} {many-to-many:Step.parameteredStep} null The parameters of this Step, which are defined as its directedFeatures, whose values are passed into and/or out of a performance of the Step. Step
predicate Public Predicate [0..1] {derived} {redefines: Expression.function} null The Predicate that types the Expression. BooleanExpression
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
result Public Feature [1..1] {derived} {subsetted: Type.output} {subsetted: Step.parameter} null An output parameter of the Expression whose value is the result of the Expression. The result of an Expression is either inherited from its function or it is related to the Expression via a ReturnParameterMembership, in which case it redefines the result parameter of its function. Expression
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
type Public Type [0..*] {derived} {ordered} {many-to-many:Feature.typedFeature} null Types that restrict the values of this Feature, such that the values must be instances of all the types. The types of a Feature are derived from its typings and the types of its subsettings. If the Feature is chained, then the types of the last Feature in the chain are also types of the chained Feature. Feature
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type

CalculationDefinition [Class]

Features

Name Description
Fully Qualified Name SysML::Systems::Calculations::CalculationDefinition
Visibility Public
Definition A CalculationDefinition is an ActionDefinition that also defines a Function producing a result.
Is Abstract FALSE
Generalizations Function ActionDefinition
Specializations CaseDefinition
Containers

Rules

Name Visibilty Description Specification Owner
checkActionDefinitionSpecialization Public An ActionDefinition must directly or indirectly specialize the ActionDefinition Actions::Action from the Systems Model Library. OCL2.0: specializesFromLibrary('Actions::Action') ActionDefinition
checkBehaviorSpecialization Public A Behavior must directly or indirectly specialize the base Behavior Performances::Performance from the Kernel Semantic Library. English: specializesFromLibrary('Performances::Performance') Behavior
checkCalculationDefinitionSpecialization Public A CalculationDefinition must directly or indirectly specialize the CalculationDefinition Calculations::Calculation from the Systems Model Library. OCL2.0: specializesFromLibrary('Calculations::Calculation') CalculationDefinition
checkClassSpecialization Public A Class must directly or indirectly specialize the base Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Occurrences::Occurrence') Class
checkFunctionResultBindingConnector Public If a Function has an Expression owned via a ResultExpressionMembership, then the owning Function must also own a BindingConnector between its result parameter and the result parameter of the result Expression. OCL2.0: ownedMembership.selectByKind(ResultExpressionMembership)-> forAll(mem | ownedFeature.selectByKind(BindingConnector)-> exists(binding | binding.relatedFeature->includes(result) and binding.relatedFeature->includes(mem.ownedResultExpression.result))) Function
checkFunctionSpecialization Public A Function must directly or indirectly specialize the base Function Performances::Evaluation from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::Evaluation') Function
checkOccurrenceDefinitionIndividualSpecialization Public An OccurrenceDefinition with isIndividual = true must directly or indirectly specialize Occurrences::Life from the Kernel Semantic Library. OCL2.0: isIndividual implies specializesFromLibrary('Occurrences::Life') OccurrenceDefinition
checkOccurrenceDefinitionMultiplicitySpecialization Public An OccurrenceDefinition with isIndividual = true must have a multiplicity that specializes Base::zeroOrOne from the Kernel Semantic Library. OCL2.0: isIndividual implies multiplicity <> null and multiplicity.specializesFromLibrary('Base::zeroOrOne') OccurrenceDefinition
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
deriveActionDefinitionAction Public The actions of a ActionDefinition are those of its usages that are ActionUsages. OCL2.0: action = usage->selectByKind(ActionUsage) ActionDefinition
deriveBehaviorStep Public The steps of a Behavior are its features that are Steps. OCL2.0: step = feature->selectByKind(Step) Behavior
deriveCalculationUsageCalculation Public The calculations of a CalculationDefinition are those of its actions that are CalculationUsages. OCL2.0: calculation = action->selectByKind(CalculationUsage) CalculationDefinition
deriveClassifierOwnedSubclassification Public The ownedSubclassifications of a Classifier are its ownedSpecializations that are Subclassifications. OCL2.0: ownedSubclassification = ownedSpecialization->selectByKind(Subclassification) Classifier
deriveDefinitionDirectedUsage Public The directedUsages of a Definition are all its directedFeatures that are Usages. OCL2.0: directedUsage = directedFeature->selectByKind(Usage) Definition
deriveDefinitionOwnedAction Public The ownedActions of a Definition are all its ownedUsages that are ActionUsages. OCL2.0: ownedAction = ownedUsage->selectByKind(ActionUsage) Definition
deriveDefinitionOwnedAllocation Public The ownedAllocations of a Definition are all its ownedUsages that are AllocationUsages. OCL2.0: ownedAllocation = ownedUsage->selectByKind(AllocationUsage) Definition
deriveDefinitionOwnedAnalysisCase Public The ownedAnalysisCases of a Definition are all its ownedUsages that are AnalysisCaseUsages. OCL2.0: ownedAnalysisCase = ownedUsage->selectByKind(AnalysisCaseUsage) Definition
deriveDefinitionOwnedAttribute Public The ownedAttributes of a Definition are all its ownedUsages that are AttributeUsages. OCL2.0: ownedAttribute = ownedUsage->selectByKind(AttributeUsage) Definition
deriveDefinitionOwnedCalculation Public The ownedCalculations of a Definition are all its ownedUsages that are CalculationUsages. OCL2.0: ownedCalculation = ownedUsage->selectByKind(CalculationUsage) Definition
deriveDefinitionOwnedCase Public The ownedCases of a Definition are all its ownedUsages that are CaseUsages. OCL2.0: ownedCase = ownedUsage->selectByKind(CaseUsage) Definition
deriveDefinitionOwnedConcern Public The ownedConcerns of a Definition are all its ownedUsages that are ConcernUsages. OCL2.0: ownedConcern = ownedUsage->selectByKind(ConcernUsage) Definition
deriveDefinitionOwnedConnection Public The ownedConnections of a Definition are all its ownedUsages that are ConnectorAsUsages. OCL2.0: ownedConnection = ownedUsage->selectByKind(ConnectorAsUsage) Definition
deriveDefinitionOwnedConstraint Public The ownedConstraints of a Definition are all its ownedUsages that are ConstraintUsages. OCL2.0: ownedConstraint = ownedUsage->selectByKind(ConstraintUsage) Definition
deriveDefinitionOwnedEnumeration Public The ownedEnumerations of a Definition are all its ownedUsages that are EnumerationUsages. OCL2.0: ownedEnumeration = ownedUsage->selectByKind(EnumerationUsage) Definition
deriveDefinitionOwnedFlow Public The ownedFlows of a Definition are all its ownedUsages that are FlowUsages. OCL2.0: ownedFlow = ownedUsage->selectByKind(FlowConnectionUsage) Definition
deriveDefinitionOwnedInterface Public The ownedInterfaces of a Definition are all its ownedUsages that are InterfaceUsages. OCL2.0: ownedInterface = ownedUsage->selectByKind(ReferenceUsage) Definition
deriveDefinitionOwnedItem Public The ownedItems of a Definition are all its ownedUsages that are ItemUsages. OCL2.0: ownedItem = ownedUsage->selectByKind(ItemUsage) Definition
deriveDefinitionOwnedMetadata Public The ownedMetadata of a Definition are all its ownedUsages that are MetadataUsages. OCL2.0: ownedMetadata = ownedUsage->selectByKind(MetadataUsage) Definition
deriveDefinitionOwnedOccurrence Public The ownedOccurrences of a Definition are all its ownedUsages that are OccurrenceUsages. OCL2.0: ownedOccurrence = ownedUsage->selectByKind(OccurrenceUsage) Definition
deriveDefinitionOwnedPart Public The ownedParts of a Definition are all its ownedUsages that are PartUsages. OCL2.0: ownedPart = ownedUsage->selectByKind(PartUsage) Definition
deriveDefinitionOwnedPort Public The ownedPorts of a Definition are all its ownedUsages that are PortUsages. OCL2.0: ownedPort = ownedUsage->selectByKind(PortUsage) Definition
deriveDefinitionOwnedReference Public The ownedReferences of a Definition are all its ownedUsages that are ReferenceUsages. OCL2.0: ownedReference = ownedUsage->selectByKind(ReferenceUsage) Definition
deriveDefinitionOwnedRendering Public The ownedRenderings of a Definition are all its ownedUsages that are RenderingUsages. OCL2.0: ownedRendering = ownedUsage->selectByKind(RenderingUsage) Definition
deriveDefinitionOwnedRequirement Public The ownedRequirements of a Definition are all its ownedUsages that are RequirementUsages. OCL2.0: ownedRequirement = ownedUsage->selectByKind(RequirementUsage) Definition
deriveDefinitionOwnedState Public The ownedStates of a Definition are all its ownedUsages that are StateUsages. OCL2.0: ownedState = ownedUsage->selectByKind(StateUsage) Definition
deriveDefinitionOwnedTransition Public The ownedTransitions of a Definition are all its ownedUsages that are TransitionUsages. OCL2.0: ownedTransition = ownedUsage->selectByKind(TransitionUsage) Definition
deriveDefinitionOwnedUsage Public The ownedUsages of a Definition are all its ownedFeatures that are Usages. OCL2.0: ownedUsage = ownedFeature->selectByKind(Usage) Definition
deriveDefinitionOwnedUseCase Public The ownedUseCases of a Definition are all its ownedUsages that are UseCaseUsages. OCL2.0: ownedUseCase = ownedUsage->selectByKind(UseCaseUsage) Definition
deriveDefinitionOwnedVerificationCase Public The ownedValidationCases of a Definition are all its ownedUsages that are ValidationCaseUsages. OCL2.0: ownedVerificationCase = ownedUsage->selectByKind(VerificationCaseUsage) Definition
deriveDefinitionOwnedView Public The ownedViews of a Definition are all its ownedUsages that are ViewUsages. OCL2.0: ownedView = ownedUsage->selectByKind(ViewUsage) Definition
deriveDefinitionOwnedViewpoint Public The ownedViewpoints of a Definition are all its ownedUsages that are ViewpointUsages. OCL2.0: ownedViewpoint = ownedUsage->selectByKind(ViewpointUsage) Definition
deriveDefinitionUsage Public The usages of a Definition are all its features that are Usages. OCL2.0: usage = feature->selectByKind(Usage) Definition
deriveDefinitionVariant Public The variants of a Definition are the ownedVariantUsages of its variantMemberships. OCL2.0: variant = variantMembership.ownedVariantUsage Definition
deriveDefinitionVariantMembership Public The variantMemberships of a Definition are those ownedMemberships that are VariantMemberships. OCL2.0: variantMembership = ownedMembership->selectByKind(VariantMembership) Definition
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveFunctionResult Public The result parameter of a Function is its parameter owned (possibly in a supertype) via a ReturnParameterMembership (if any). OCL2.0: result = let resultParams : Sequence(Feature) = featureMemberships-> selectByKind(ReturnParameterMembership). ownedMemberParameter in if resultParams->notEmpty() then resultParams->first() else null endif Function
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
validateBehaviorSpecialization Public A Behavior must not specialize a Structure. OCL2.0: ownedSpecialization.general->forAll(not oclIsKindOf(Structure)) Behavior
validateClassifierMultiplicityDomain Public If a Classifier has a multiplicity, then the multiplicity must have no featuringTypes (meaning that its domain is implicitly Base::Anything). OCL2.0: multiplicity <> null implies multiplicity.featuringType->isEmpty() Classifier
validateClassSpecialization Public A Class must not specialize a DataType and it can only specialize an Association if it is also itself a kind of Association (such as an AssociationStructure or Interaction). OCL2.0: ownedSpecialization.general-> forAll(not oclIsKindOf(DataType)) and not oclIsKindOf(Association) implies ownedSpecialization.general-> forAll(not oclIsKindOf(Association)) Class
validateDefinitionVariationIsAbstract Public If a Definition is a variation, then it must be abstract. OCL2.0: isVariation implies isAbstract Definition
validateDefinitionVariationOwnedFeatureMembership Public If a Definition is a variation, then all it must not have any ownedFeatureMemberships. OCL2.0: isVariation implies ownedFeatureMembership->isEmpty() Definition
validateDefinitionVariationSpecialization Public A variation Definition may not specialize any other variation Definition. OCL2.0: isVariation implies not ownedSpecialization.specific->exists( oclIsKindOf(Definition) and oclAsType(Definition).isVariation) Definition
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateFunctionResultExpressionMembership Public A Function must have at most one ResultExpressionMembership. OCL2.0: membership->selectByKind(ResultExpressionMembership)->size() <= 1 Function
validateFunctionResultParameterMembership Public A Function must have exactly one featureMembership (owned or inherited) that is a ResultParameterMembership. OCL2.0: featureMembership-> selectByKind(ReturnParameterMembership)-> size() = 1 Function
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type

Properties

Name Visibility Type Default Description Owner
action Public ActionUsage [0..*] {derived} {ordered} {subsetted: Behavior.step} {many-to-many:ActionDefinition.featuringActionDefinition} null The ActionUsages that are steps in this ActionDefinition, which define the actions that specify the behavior of the ActionDefinition. ActionDefinition
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
calculation Public CalculationUsage [0..*] {derived} {ordered} {subsetted: Function.expression} {many-to-many:CalculationDefinition.featuringCalculationDefinition} null The actions of this CalculationDefinition that are CalculationUsages. CalculationDefinition
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {redefined by: Behavior.parameter} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
directedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Definition.definitionWithDirectedUsage} null The usages of this Definition that are directedFeatures. Definition
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
expression Public Expression [0..*] {derived} {subsetted: Behavior.step} {many-to-many:Function.computedFunction} null The Expressions that are steps in the calculation of the result of this Function. Function
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isIndividual Public Boolean [1..1] false Whether this OccurrenceDefinition is constrained to represent at most one thing. OccurrenceDefinition
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isModelLevelEvaluable Public Boolean [1..1] {derived} null Whether this Function can be used as the function of a model-level evaluable InvocationExpression. Certain Functions from the Kernel Functions Library are considered to have isModelLevelEvaluable = true. For all other Functions it is false. Note: See the specification of the KerML concrete syntax notation for Expressions for an identification of which library Functions are model-level evaluable. Function
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
isVariation Public Boolean [1..1] null Whether this Definition is for a variation point or not. If true, then all the memberships of the Definition must be VariantMemberships. Definition
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAction Public ActionUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedOccurrence} null The ActionUsages that are ownedUsages of this Definition. Definition
ownedAllocation Public AllocationUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedConnection} null The AllocationUsages that are ownedUsages of this Definition. Definition
ownedAnalysisCase Public AnalysisCaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCase} null The AnalysisCaseUsages that are ownedUsages of this Definition. Definition
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedAttribute Public AttributeUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The AttributeUsages that are ownedUsages of this Definition. Definition
ownedCalculation Public CalculationUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedAction} null The CalculationUsages that are ownedUsages of this Definition. Definition
ownedCase Public CaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCalculation} null The code>CaseUsages that are ownedUsages of this Definition. Definition
ownedConcern Public ConcernUsage [0..*] {derived} {subsetted: Definition.ownedRequirement} null The ConcernUsages that are ownedUsages of this Definition. Definition
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedConnection Public ConnectorAsUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The ConnectorAsUsages that are ownedUsages of this Definition. Note that this list includes BindingConnectorAsUsages, SuccessionAsUsages, and FlowUsages because these are ConnectorAsUsages even though they are not ConnectionUsages. Definition
ownedConstraint Public ConstraintUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedOccurrence} null The ConstraintUsages that are ownedUsages of this Definition. Definition
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedEnumeration Public EnumerationUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedAttribute} null The EnumerationUsages that are ownedUsages of this Definition. Definition
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedFlow Public FlowUsage [0..*] {derived} {subsetted: Definition.ownedConnection} null The FlowUsages that are ownedUsages of this Definition. Definition
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedInterface Public InterfaceUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedConnection} null The InterfaceUsages that are ownedUsages of this Definition. Definition
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedItem Public ItemUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedOccurrence} null The ItemUsages that are ownedUsages of this Definition. Definition
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedMetadata Public MetadataUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedItem} null The MetadataUsages that are ownedUsages of this Definition. Definition
ownedOccurrence Public OccurrenceUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The OccurrenceUsages that are ownedUsages of this Definition. Definition
ownedPart Public PartUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedItem} null The PartUsages that are ownedUsages of this Definition. Definition
ownedPort Public PortUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The PortUsages that are ownedUsages of this Definition. Definition
ownedReference Public ReferenceUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The ReferenceUsages that are ownedUsages of this Definition. Definition
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedRendering Public RenderingUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedPart} null The RenderingUsages that are ownedUsages of this Definition. Definition
ownedRequirement Public RequirementUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedConstraint} null The RequirementUsages that are ownedUsages of this Definition. Definition
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedState Public StateUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedAction} null The StateUsages that are ownedUsages of this Definition. Definition
ownedSubclassification Public Subclassification [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} null The ownedSpecializations of this Classifier that are Subclassifications, for which this Classifier is the subclassifier. Classifier
ownedTransition Public TransitionUsage [0..*] {derived} {subsetted: Definition.ownedUsage} null The TransitionUsages that are ownedUsages of this Definition. Definition
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
ownedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.ownedFeature} null The Usages that are ownedFeatures of this Definition. Definition
ownedUseCase Public UseCaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCase} null The UseCaseUsages that are ownedUsages of this Definition. Definition
ownedVerificationCase Public VerificationCaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCase} null The VerificationCaseUsages that are ownedUsages of this Definition. Definition
ownedView Public ViewUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedPart} null The ViewUsages that are ownedUsages of this Definition. Definition
ownedViewpoint Public ViewpointUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedRequirement} null The ViewpointUsages that are ownedUsages of this Definition. Definition
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
parameter Public Feature [0..*] {derived} {ordered} {redefines: Type.directedFeature} {many-to-many:Behavior.parameteredBehavior} null The parameters of this Behavior, which are defined as its directedFeatures, whose values are passed into and/or out of a performance of the Behavior. Behavior
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
result Public Feature [1..1] {derived} {subsetted: Type.output} {subsetted: Behavior.parameter} null The object or value that is the result of evaluating the Function. Function
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
step Public Step [0..*] {derived} {subsetted: Type.feature} {many-to-many:Behavior.featuringBehavior} null The Steps that make up this Behavior. Behavior
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type
usage Public Usage [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Definition.featuringDefinition} null The Usages that are features of this Definition (not necessarily owned). Definition
variant Public Usage [0..*] {derived} {subsetted: Namespace.ownedMember} null The Usages which represent the variants of this Definition as a variation point Definition, if isVariation = true. If isVariation = false, the there must be no variants. Definition
variantMembership Public VariantMembership [0..*] {composite} {derived} {subsetted: Namespace.ownedMembership} null The ownedMemberships of this Definition that are VariantMemberships. If isVariation = true, then this must be all ownedMemberships of the Definition. If isVariation = false, then variantMembershipmust be empty. Definition

CalculationUsage [Class]

Features

Name Description
Fully Qualified Name SysML::Systems::Calculations::CalculationUsage
Visibility Public
Definition A CalculationUsage is an ActionUsage that is also an Expression, and, so, is typed by a Function. Nominally, if the type is a CalculationDefinition, a CalculationUsage is a Usage of that CalculationDefinition within a system. However, other kinds of kernel Functions are also allowed, to permit use of Functions from the Kernel Model Libraries.
Is Abstract FALSE
Generalizations Expression ActionUsage
Specializations CaseUsage
Containers

Rules

Name Visibilty Description Specification Owner
checkActionUsageOwnedActionSpecialization Public A composite ActionUsage whose owningType is PartDefinition or PartUsage must directly or indirectly specialize the ActionUsage Parts::Part::ownedActions from the Systems Model Library. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(PartDefinition) or owningType.oclIsKindOf(PartUsage)) implies specializesFromLibrary('Parts::Part::ownedActions') ActionUsage
checkActionUsageSpecialization Public An ActionUsage must directly or indirectly specialize the ActionUsage Actions::actions from the Systems Model Library. OCL2.0: specializesFromLibrary('Actions::actions') ActionUsage
checkActionUsageStateActionRedefinition Public An ActionUsage that is the entry, do, or exit Action of a StateDefinition or StateUsage must redefine the entryAction, doAction, or exitAction feature, respectively, of the StateDefinition States::StateAction from the Systems Model Library. OCL2.0: owningFeatureMembership <> null and owningFeatureMembership.oclIsKindOf(StateSubactionMembership) implies let kind : StateSubactionKind = owningFeatureMembership.oclAsType(StateSubactionMembership).kind in if kind = StateSubactionKind::entry then redefinesFromLibrary('States::StateAction::entryAction') else if kind = StateSubactionKind::do then redefinesFromLibrary('States::StateAction::doAction') else redefinesFromLibrary('States::StateAction::exitAction') endif endif ActionUsage
checkActionUsageSubactionSpecialization Public A composite ActionUsage that is a subaction usage must directly or indirectly specialize the ActionUsage Actions::Action::subactions from the Systems Model Library. OCL2.0: isSubactionUsage() implies specializesFromLibrary('Actions::Action::subactions') ActionUsage
checkCalculationUsageSpecialization Public A CalculationUsage must specialize directly or indirectly the CalculationUsage Calculations::calculations from the Systems Model Library. OCL2.0: specializesFromLibrary('Calculations::calculations') CalculationUsage
checkCalculationUsageSubcalculationSpecialization Public No Documentation Provided OCL2.0: owningType <> null and (owningType.oclIsKindOf(CalculationDefinition) or owningType.oclIsKindOf(CalculationUsage)) implies specializesFromLibrary('Calculations::Calculation::subcalculations') CalculationUsage
checkExpressionResultBindingConnector Public If an Expression has an Expression owned via a ResultExpressionMembership, then the owning Expression must also own a BindingConnector between its result parameter and the result parameter of the result Expression. OCL2.0: ownedMembership.selectByKind(ResultExpressionMembership)-> forAll(mem | ownedFeature.selectByKind(BindingConnector)-> exists(binding | binding.relatedFeature->includes(result) and binding.relatedFeature->includes(mem.ownedResultExpression.result))) Expression
checkExpressionSpecialization Public An Expression must directly or indirectly specialize the base Expression Performances::evaluations from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::evaluations') Expression
checkExpressionTypeFeaturing Public If this Expression is owned by a FeatureValue, then it must have the same featuringTypes as the featureWithValue of the FeatureValue. OCL2.0: owningMembership <> null and owningMembership.oclIsKindOf(FeatureValue) implies let featureWithValue : Feature = owningMembership.oclAsType(FeatureValue).featureWithValue in featuringType = featureWithValue.featuringType Expression
checkFeatureCrossingSpecialization Public If this Feature has isEnd = true and ownedCrossFeature returns a non-null value, then the crossFeature of the Feature must be the Feature returned from ownedCrossFeature (which implies that this Feature has an appropriate ownedCrossSubsetting to realize this). OCL2.0: ownedCrossFeature() <> null implies crossFeature = ownedCrossFeature() Feature
checkFeatureDataValueSpecialization Public If a Feature has an ownedTyping relationship to a DataType, then it must directly or indirectly specialize Base::dataValues from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(DataType)) implies specializesFromLibrary('Base::dataValues') Feature
checkFeatureEndRedefinition Public If a Feature has isEnd = true and an owningType that is not empty, then, for each direct supertype of its owningType, it must redefine the endFeature at the same position, if any. OCL2.0: isEnd and owningType <> null implies let i : Integer = owningType.ownedEndFeature->indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | supertype.endFeature->size() >= i implies redefines(supertype.endFeature->at(i)) Feature
checkFeatureEndSpecialization Public If a Feature has isEnd = true and an owningType that is an Association or a Connector, then it must directly or indirectly specialize Links::Link::participant from the Kernel Semantic Library. OCL2.0: isEnd and owningType <> null and (owningType.oclIsKindOf(Association) or owningType.oclIsKindOf(Connector)) implies specializesFromLibrary('Links::Link::participant') Feature
checkFeatureFeatureMembershipTypeFeaturing Public If a Feature is owned via a FeatureMembership, then it must have a featuringType for which the operation isFeaturingType returns true. OCL2.0: owningFeatureMembership <> null implies featuringTypes->exists(t | isFeaturingType(t)) Feature
checkFeatureFlowFeatureRedefinition Public If a Feature is the first ownedFeature of a first or second FlowEnd, then it must directly or indirectly specialize either Transfers::Transfer::source::sourceOutput or Transfers::Transfer::target::targetInput, respectively, from the Kernel Semantic Library. OCL2.0: owningType <> null and owningType.oclIsKindOf(FlowEnd) and owningType.ownedFeature->at(1) = self implies let flowType : Type = owningType.owningType in flowType <> null implies let i : Integer = flowType.ownedFeature.indexOf(owningType) in (i = 1 implies redefinesFromLibrary('Transfers::Transfer::source::sourceOutput')) and (i = 2 implies redefinesFromLibrary('Transfers::Transfer::source::targetInput')) Feature
checkFeatureObjectSpecialization Public If a Feature has an ownedTyping relationship to a Structure, then it must directly or indirectly specialize Objects::objects from the Kernel Semantics Library. OCL2.0: ownedTyping.type->exists(selectByKind(Structure)) implies specializesFromLibary('Objects::objects') Feature
checkFeatureOccurrenceSpecialization Public If a Feature has an ownedTyping relationship to a Class, then it must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(Class)) implies specializesFromLibrary('Occurrences::occurrences') Feature
checkFeatureOwnedCrossFeatureRedefinitionSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then, for any end Feature that is redefined by the owning end Feature of this Feature, this Feature must subset the crossFeature of the redefined end Feature, if this exists. OCL2.0: isOwnedCrossFeature() implies ownedSubsetting.subsettedFeature->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature <> null).crossFeature) Feature
checkFeatureOwnedCrossFeatureSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then it must directly or indirectly specialize the types of its owning end Feature. OCL2.0: isOwnedCrossFeature() implies owner.oclAsType(Feature).type->forAll(t | self.specializes(t)) Feature
checkFeatureOwnedCrossFeatureTypeFeaturing Public If this Feature is the ownedCrossFeature of an end Feature, then it must have featuringTypes consistent with the crossing from other end Features of the owningType of its end Feature. OCL2.0: isOwnedCrossFeature() implies let otherEnds : OrderedSet(Feature) = owner.oclAsType(Feature).owningType.endFeature->excluding(self) in if (otherEnds->size() = 1) then featuringType = otherEnds->first().type else featuringType->size() = 1 and featuringType->first().isCartesianProduct() and featuringType->first().asCartesianProduct() = otherEnds.type and featuringType->first().allSupertypes()->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature() <> null).crossFeature().featuringType) endif Feature
checkFeatureParameterRedefinition Public If a Feature is a parameter of an owningType that is a Behavior or Step, but not
  • A result parameter
  • A parameter of an InvocationExpression, with at least one non-implied ownedRedefinition
then, for each direct supertype of its owningType that is also a Behavior or Step, it must redefine the parameter at the same position, if any.
OCL2.0: owningType <> null and not owningFeatureMembership. oclIsKindOf(ReturnParameterMembership) and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step) and (owningType.oclIsKindOf(InvocationExpression) implies not ownedRedefinition->exists(not isImplied)) implies let i : Integer = owningType.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership))-> indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | let ownedParameters : Sequence(Feature) = supertype.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership)) in ownedParameters->size() >= i implies redefines(ownedParameters->at(i)) Feature
checkFeaturePortionSpecialization Public If a Feature has isPortion = true, an ownedTyping relationship to a Class, and an owningType that is a Class or another Feature typed by a Class, then it must directly or indirectly specialize Occurrences::Occurrence::portions from the Kernel Semantic Library. OCL2.0: isPortion and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::portions') Feature
checkFeatureResultRedefinition Public If a Feature is a result parameter of an owningType that is a Function or Expression, then, for each direct supertype of its owningType that is also a Function or Expression, it must redefine the result parameter. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Function) and self = owningType.oclAsType(Function).result or owningType.oclIsKindOf(Expression) and self = owningType.oclAsType(Expression).result) implies owningType.ownedSpecialization.general-> select(oclIsKindOf(Function) or oclIsKindOf(Expression))-> forAll(supertype | redefines( if superType.oclIsKindOf(Function) then superType.oclAsType(Function).result else superType.oclAsType(Expression).result endif) Feature
checkFeatureSpecialization Public A Feature must directly or indirectly specialize Base::things from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::things') Feature
checkFeatureSubobjectSpecialization Public A composite Feature typed by a Structure, and whose ownedType is a Structure or another Feature typed by a Structure must directly or indirectly specialize Objects::Object::subobjects. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Structure)) and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.type->includes(oclIsKindOf(Structure))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureSuboccurrenceSpecialization Public A composite Feature that has an ownedTyping relationship to a Class, and whose ownedType is a Class or another Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureValuationSpecialization Public If a Feature has a FeatureValue, no ownedSpecializations that are not implied, and is not directed, then it must specialize the result of the value Expression of the FeatureValue. OCL2.0: direction = null and ownedSpecializations->forAll(isImplied) implies ownedMembership-> selectByKind(FeatureValue)-> forAll(fv | specializes(fv.value.result)) Feature
checkOccurrenceUsageSnapshotSpecialization Public If an OccurrenceUsage has portionKind = snapshot, then it must directly or indirectly specialize Occurrences::Occurrence::snapshots from the Kernel Semantic Library. OCL2.0: portionKind = PortionKind::snapshot implies specializesFromLibrary('Occurrences::Occurrence::snapshots') OccurrenceUsage
checkOccurrenceUsageSpecialization Public An OccurrenceUsage must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Occurrences::occurrences') OccurrenceUsage
checkOccurrenceUsageSuboccurrenceSpecialization Public A composite OccurrenceUsage, whose ownedType is a Class, another OccurrenceUsage, or any kind of Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(OccurrenceUsage) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKind(Class))) implies specializesFromLibrary('Occurrences::Occurrence::suboccurrences') OccurrenceUsage
checkOccurrenceUsageTimeSliceSpecialization Public If an OccurrenceUsage has portionKind = timeslice, then it must directly or indirectly specialize Occurrences::Occurrence::timeSlices from the Kernel Semantic Library. OCL2.0: portionKind = PortionKind::timeslice implies specializesFromLibrary('Occurrences::Occurrence::timeSlices') OccurrenceUsage
checkStepEnclosedPerformanceSpecialization Public AStep whose owningType is a Behavior or another Step must directly or indirectly specialize the Step Performances::Performance::enclosedPerformance. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step)) implies specializesFromLibrary('Performances::Performance::enclosedPerformance') Step
checkStepOwnedPerformanceSpecialization Public A composite Step whose owningType is a Structure or a Feature typed by a Structure must directly or indirectly specialize the Step Objects::Object::ownedPerformance. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Structure)) implies specializesFromLibrary('Objects::Object::ownedPerformance') Step
checkStepSpecialization Public A Step must directly or indirectly specialize the base Step Performances::performances from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::performances') Step
checkStepSubperformanceSpecialization Public AStep whose owningType is a Behavior or another Step, and which is composite, must directly or indirectly specialize the Step Performances::Performance::subperformance. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step)) and self.isComposite implies specializesFromLibrary('Performances::Performance::subperformance') Step
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
checkUsageVariationDefinitionSpecialization Public If a Usage has an owningVariationDefinition, then it must directly or indirectly specialize that Definition. OCL2.0: owningVariationDefinition <> null implies specializes(owningVariationDefinition) Usage
checkUsageVariationUsageSpecialization Public If a Usage has an owningVariationUsage, then it must directly or indirectly specialize that Usage. OCL2.0: owningVariationUsage <> null implies specializes(owningVariationUsage) Usage
checkUsageVariationUsageTypeFeaturing Public If a Usage has an owningVariationUsage, then it must have the same featuringTypes as that Usage. OCL2.0: owningVariationUsage <> null implies featuringType->asSet() = owningVariationUsage.featuringType->asSet() Usage
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveExpressionIsModelLevelEvaluable Public Whether an Expression isModelLevelEvaluable is determined by the modelLevelEvaluable() operation. OCL2.0: isModelLevelEvaluable = modelLevelEvaluable(Set(Element){}) Expression
deriveExpressionResult Public The result parameter of an Expression is its parameter owned (possibly in a supertype) via a ReturnParameterMembership (if any). OCL2.0: result = let resultParams : Sequence(Feature) = featureMemberships-> selectByKind(ReturnParameterMembership). ownedMemberParameter in if resultParams->notEmpty() then resultParams->first() else null endif Expression
deriveFeatureChainingFeature Public The chainingFeatures of a Feature are the chainingFeatures of its ownedFeatureChainings. OCL2.0: chainingFeature = ownedFeatureChaining.chainingFeature Feature
deriveFeatureCrossFeature Public The crossFeature of a Feature is the second chainingFeature of the crossedFeature of the ownedCrossSubsetting of the Feature, if any. OCL2.0: crossFeature = if ownedCrossSubsetting = null then null else let chainingFeatures: Sequence(Feature) = ownedCrossSubsetting.crossedFeature.chainingFeature in if chainingFeatures->size() < 2 then null else chainingFeatures->at(2) endif Feature
deriveFeatureFeatureTarget Public If a Feature has no chainingFeatures, then its featureTarget is the Feature itself, otherwise the featureTarget is the last of the chainingFeatures. OCL2.0: featureTarget = if chainingFeature->isEmpty() then self else chainingFeature->last() endif Feature
deriveFeatureFeaturingType Public The featuringTypes of a Feature include the featuringTypes of all the typeFeaturings of the Feature. If the Feature has chainingFeatures, then its featuringTypes also include the featuringTypes of the first chainingFeature. OCL2.0: featuringType = let featuringTypes : OrderedSet(Type) = featuring.type->asOrderedSet() in if chainingFeature->isEmpty() then featuringTypes else featuringTypes-> union(chainingFeature->first().featuringType)-> asOrderedSet() endif Feature
deriveFeatureOwnedCrossSubsetting Public The ownedCrossSubsetting of a Feature is the ownedSubsetting that is a CrossSubsetting, if any. OCL2.0: ownedCrossSubsetting = let crossSubsettings: Sequence(CrossSubsetting) = ownedSubsetting->selectByKind(CrossSubsetting) in if crossSubsettings->isEmpty() then null else crossSubsettings->first() endif Feature
deriveFeatureOwnedFeatureChaining Public The ownedFeatureChainings of a Feature are the ownedRelationships that are FeatureChainings. OCL2.0: ownedFeatureChaining = ownedRelationship->selectByKind(FeatureChaining) Feature
deriveFeatureOwnedFeatureInverting Public The ownedFeatureInvertings of a Feature are its ownedRelationships that are FeatureInvertings. OCL2.0: ownedFeatureInverting = ownedRelationship->selectByKind(FeatureInverting)-> select(fi | fi.featureInverted = self) Feature
deriveFeatureOwnedRedefinition Public The ownedRedefinitions of a Feature are its ownedSubsettings that are Redefinitions. OCL2.0: ownedRedefinition = ownedSubsetting->selectByKind(Redefinition) Feature
deriveFeatureOwnedReferenceSubsetting Public The ownedReferenceSubsetting of a Feature is the first ownedSubsetting that is a ReferenceSubsetting (if any). OCL2.0: ownedReferenceSubsetting = let referenceSubsettings : OrderedSet(ReferenceSubsetting) = ownedSubsetting->selectByKind(ReferenceSubsetting) in if referenceSubsettings->isEmpty() then null else referenceSubsettings->first() endif Feature
deriveFeatureOwnedSubsetting Public The ownedSubsettings of a Feature are its ownedSpecializations that are Subsettings. OCL2.0: ownedSubsetting = ownedSpecialization->selectByKind(Subsetting) Feature
deriveFeatureOwnedTypeFeaturing Public The ownedTypeFeaturings of a Feature are its ownedRelationships that are TypeFeaturings and which have the Feature as their featureOfType. OCL2.0: ownedTypeFeaturing = ownedRelationship->selectByKind(TypeFeaturing)-> select(tf | tf.featureOfType = self) Feature
deriveFeatureOwnedTyping Public The ownedTypings of a Feature are its ownedSpecializations that are FeatureTypings. OCL2.0: ownedTyping = ownedGeneralization->selectByKind(FeatureTyping) Feature
deriveFeatureType Public The types of a Feature are the union of the types of its typings and the types of the Features it subsets, with all redundant supertypes removed. If the Feature has chainingFeatures, then the union also includes the types of the last chainingFeature. OCL2.0: type = let types : OrderedSet(Types) = OrderedSet{self}-> -- Note: The closure operation automatically handles circular relationships. closure(typingFeatures()).typing.type->asOrderedSet() in types->reject(t1 | types->exist(t2 | t2 <> t1 and t2.specializes(t1))) Feature
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOccurrenceUsageIndividualDefinition Public The individualDefinition of an OccurrenceUsage is the occurrenceDefinition that is an OccurrenceDefinition with isIndividual = true, if any. OCL2.0: individualDefinition = let individualDefinitions : OrderedSet(OccurrenceDefinition) = occurrenceDefinition-> selectByKind(OccurrenceDefinition)-> select(isIndividual) in if individualDefinitions->isEmpty() then null else individualDefinitions->first() endif OccurrenceUsage
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveStepBehavior Public The behaviors of a Step are all its types that are Behaviors. OCL2.0: behavior = type->selectByKind(Behavior) Step
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
deriveUsageDirectedUsage Public The directedUsages of a Usage are all its directedFeatures that are Usages. OCL2.0: directedUsage = directedFeature->selectByKind(Usage) Usage
deriveUsageIsReference Public A Usage is referential if it is not composite. OCL2.0: isReference = not isComposite Usage
deriveUsageMayTimeVary Public A Usage mayTimeVary if and only if all of the following are true
  • It has an owningType that specializes Occurrences::Occurrence (from the Kernel Semantic Library).
  • It is not a portion.
  • It does not specialize Links::SelfLink or Occurrences::HappensLink (from the Kernel Semantic Library).
  • If isComposite = true, it does not specialize Actions::Action (from the Systems Model Library).
OCL2.0: mayTimeVary = owningType <> null and owningType.specializesFromLibrary('Occurrences::Occurrence') and not ( isPortion or specializesFromLibrary('Links::SelfLink') or specializesFromLibrary('Occurrences::HappensLink') or isComposite and specializesFromLibrary('Actions::Action') ) Usage
deriveUsageNestedAction Public The ownedActions of a Usage are all its ownedUsages that are ActionUsages. OCL2.0: nestedAction = nestedUsage->selectByKind(ActionUsage) Usage
deriveUsageNestedAllocation Public The ownedAllocations of a Usage are all its ownedUsages that are AllocationUsages. OCL2.0: nestedAllocation = nestedUsage->selectByKind(AllocationUsage) Usage
deriveUsageNestedAnalysisCase Public The ownedAnalysisCases of a Usage are all its ownedUsages that are AnalysisCaseUsages. OCL2.0: nestedAnalysisCase = nestedUsage->selectByKind(AnalysisCaseUsage) Usage
deriveUsageNestedAttribute Public The ownedAttributes of a Usage are all its ownedUsages that are AttributeUsages. OCL2.0: nestedAttribute = nestedUsage->selectByKind(AttributeUsage) Usage
deriveUsageNestedCalculation Public The ownedCalculations of a Usage are all its ownedUsages that are CalculationUsages. OCL2.0: nestedCalculation = nestedUsage->selectByKind(CalculationUsage) Usage
deriveUsageNestedCase Public The ownedCases of a Usage are all its ownedUsages that are CaseUsages. OCL2.0: nestedCase = nestedUsage->selectByKind(CaseUsage) Usage
deriveUsageNestedConcern Public The ownedConcerns of a Usage are all its ownedUsages that are ConcernUsages. OCL2.0: nestedConcern = nestedUsage->selectByKind(ConcernUsage) Usage
deriveUsageNestedConnection Public The ownedConnections of a Usage are all its ownedUsages that are ConnectorAsUsages. OCL2.0: nestedConnection = nestedUsage->selectByKind(ConnectorAsUsage) Usage
deriveUsageNestedConstraint Public The ownedConstraints of a Usage are all its ownedUsages that are ConstraintUsages. OCL2.0: nestedConstraint = nestedUsage->selectByKind(ConstraintUsage) Usage
deriveUsageNestedEnumeration Public The ownedEnumerations of a Usage are all its ownedUsages that are EnumerationUsages. OCL2.0: ownedNested = nestedUsage->selectByKind(EnumerationUsage) Usage
deriveUsageNestedFlow Public The ownedFlows of a Usage are all its ownedUsages that are FlowConnectionUsages. OCL2.0: nestedFlow = nestedUsage->selectByKind(FlowConnectionUsage) Usage
deriveUsageNestedInterface Public The ownedInterfaces of a Usage are all its ownedUsages that are InterfaceUsages. OCL2.0: nestedInterface = nestedUsage->selectByKind(ReferenceUsage) Usage
deriveUsageNestedItem Public The ownedItems of a Usage are all its ownedUsages that are ItemUsages. OCL2.0: nestedItem = nestedUsage->selectByKind(ItemUsage) Usage
deriveUsageNestedMetadata Public The ownedMetadata of a Usage are all its ownedUsages that are MetadataUsages. OCL2.0: nestedMetadata = nestedUsage->selectByKind(MetadataUsage) Usage
deriveUsageNestedOccurrence Public The ownedOccurrences of a Usage are all its ownedUsages that are OccurrenceUsages. OCL2.0: nestedOccurrence = nestedUsage->selectByKind(OccurrenceUsage) Usage
deriveUsageNestedPart Public The ownedParts of a Usage are all its ownedUsages that are PartUsages. OCL2.0: nestedPart = nestedUsage->selectByKind(PartUsage) Usage
deriveUsageNestedPort Public The ownedPorts of a Usage are all its ownedUsages that are PortUsages. OCL2.0: nestedPort = nestedUsage->selectByKind(PortUsage) Usage
deriveUsageNestedReference Public The ownedReferences of a Usage are all its ownedUsages that are ReferenceUsages. OCL2.0: nestedReference = nestedUsage->selectByKind(ReferenceUsage) Usage
deriveUsageNestedRendering Public The ownedRenderings of a Usage are all its ownedUsages that are RenderingUsages. OCL2.0: nestedRendering = nestedUsage->selectByKind(RenderingUsage) Usage
deriveUsageNestedRequirement Public The ownedRequirements of a Usage are all its ownedUsages that are RequirementUsages. OCL2.0: nestedRequirement = nestedUsage->selectByKind(RequirementUsage) Usage
deriveUsageNestedState Public The ownedStates of a Usage are all its ownedUsages that are StateUsages. OCL2.0: nestedState = nestedUsage->selectByKind(StateUsage) Usage
deriveUsageNestedTransition Public The ownedTransitions of a Usage are all its ownedUsages that are TransitionUsages. OCL2.0: nestedTransition = nestedUsage->selectByKind(TransitionUsage) Usage
deriveUsageNestedUsage Public The ownedUsages of a Usage are all its ownedFeatures that are Usages. OCL2.0: nestedUsage = ownedFeature->selectByKind(Usage) Usage
deriveUsageNestedUseCase Public The ownedUseCases of a Usage are all its ownedUsages that are UseCaseUsages. OCL2.0: nestedUseCase = nestedUsage->selectByKind(UseCaseUsage) Usage
deriveUsageNestedVerificationCase Public The ownedValidationCases of a Usage are all its ownedUsages that are ValidationCaseUsages. OCL2.0: nestedVerificationCase = nestedUsage->selectByKind(VerificationCaseUsage) Usage
deriveUsageNestedView Public The ownedViews of a Usage are all its ownedUsages that are ViewUsages. OCL2.0: nestedView = nestedUsage->selectByKind(ViewUsage) Usage
deriveUsageNestedViewpoint Public The ownedViewpoints of a Usage are all its ownedUsages that are ViewpointUsages. OCL2.0: nestedViewpoint = nestedUsage->selectByKind(ViewpointUsage) Usage
deriveUsageUsage Public The usages of a Usage are all its features that are Usages. OCL2.0: usage = feature->selectByKind(Usage) Usage
deriveUsageVariant Public The variants of a Usage are the ownedVariantUsages of its variantMemberships. OCL2.0: variant = variantMembership.ownedVariantUsage Usage
deriveUsageVariantMembership Public The variantMemberships of a Usage are those ownedMemberships that are VariantMemberships. OCL2.0: variantMembership = ownedMembership->selectByKind(VariantMembership) Usage
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateExpressionResultExpressionMembership Public An Expression must have at most one ResultExpressionMembership. OCL2.0: membership->selectByKind(ResultExpressionMembership)->size() <= 1 Expression
validateExpressionResultParameterMembership Public An Expression must have exactly one featureMembership (owned or inherited) that is a ResultParameterMembership. OCL2.0: featureMembership-> selectByKind(ReturnParameterMembership)-> size() = 1 Expression
validateFeatureChainingFeatureConformance Public Each chainingFeature (other than the first) must be featured within the previous chainingFeature. OCL2.0: Sequence{2..chainingFeature->size()}->forAll(i | chainingFeature->at(i).isFeaturedWithin(chainingFeature->at(i-1))) Feature
validateFeatureChainingFeatureNotOne Public A Feature must have either no chainingFeatures or more than one. OCL2.0: chainingFeature->size() <> 1 Feature
validateFeatureChainingFeaturesNotSelf Public A Feature cannot be one of its own chainingFeatures. English: chainingFeature->excludes(self) Feature
validateFeatureConstantIsVariable Public A Feature with isConstant = true must have isVariable = true. OCL2.0: isConstant implies isVariable Feature
validateFeatureCrossFeatureSpecialization Public If this Feature has a crossFeature, then, for any Feature that is redefined by this Feature, the crossFeature must specialize the crossFeature of the redefined end Feature, if this exists. OCL2.0: crossFeature <> null implies ownedRedefinition.redefinedFeature.crossFeature-> forAll(f | f <> null implies crossFeature.specializes(f)) Feature
validateFeatureCrossFeatureType Public The crossFeature of a Feature must have the same types as the Feature. OCL2.0: crossFeature <> null implies crossFeature.type->asSet() = type->asSet() Feature
validateFeatureEndIsConstant Public A Feature with isEnd = true and isVariable = true must have isConstant = true. OCL2.0: isEnd and isVariable implies isConstant Feature
validateFeatureEndMultiplicity Public If a Feature has isEnd = true, then it must have multiplicity 1..1. OCL2.0: isEnd implies multiplicities().allSuperTypes()->flatten()-> selectByKind(MultiplicityRange)->exists(hasBounds(1,1)) Feature
validateFeatureEndNoDirection Public A Feature with isEnd = true must have no direction. OCL2.0: isEnd implied direction = null Feature
validateFeatureEndNotDerivedAbstractCompositeOrPortion Public A Feature with isEnd = true must have all of isDerived = false, isAbstract = false, isComposite = false, and isPortion = false. OCL2.0: isEnd implies not (isDerived or isAbstract or isComposite or isPortion) Feature
validateFeatureIsVariable Public A Feature with isVariable = true must have an owningType that directly or indirectly specializes the Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: isVariable implies owningType <> null and owningType.specializes('Occurrences::Occurrence') Feature
validateFeatureMultiplicityDomain Public If a Feature has a multiplicity, then the featuringTypes of the multiplicity must be the same as those of the Feature itself. OCL2.0: multiplicity <> null implies multiplicity.featuringType = featuringType Feature
validateFeatureOwnedCrossSubsetting Public A Feature must have at most one ownedSubsetting that is a CrossSubsetting. OCL2.0: ownedSubsetting->selectByKind(CrossSubsetting)->size() <= 1 Feature
validateFeatureOwnedReferenceSubsetting Public A Feature must have at most one ownedSubsetting that is an ReferenceSubsetting. OCL2.0: ownedSubsetting->selectByKind(ReferenceSubsetting)->size() <= 1 Feature
validateFeaturePortionNotVariable Public No Documentation Provided OCL2.0: isPortion implies not isVariable Feature
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateOccurrenceUsageIndividualDefinition Public An OccurrenceUsage must have at most one occurrenceDefinition with isIndividual = true. OCL2.0: occurrenceDefinition-> selectByKind(OccurrenceDefinition)-> select(isIndividual).size() <= 1 OccurrenceUsage
validateOccurrenceUsageIndividualUsage Public If an OccurrenceUsage has isIndividual = true, then it must have an individualDefinition. OCL2.0: isIndividual implies individualDefinition <> null OccurrenceUsage
validateOccurrenceUsageIsPortion Public If an OccurrenceUsage has a non-null portionKind, then it must have isPortion = true. OCL2.0: portionKind <> null implies isPortion OccurrenceUsage
validateOccurrenceUsagePortionKind Public If an OccurrenceUsage has a non-null portionKind, then its owningType must be an OccurrenceDefinition or an OccurrenceUsage. OCL2.0: portionKind <> null implies owningType <> null and (owningType.oclIsKindOf(OccurrenceDefinition) or owningType.oclIsKindOf(OccurrenceUsage)) OccurrenceUsage
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type
validateUsageIsReferential Public A Usage that is directed, an end feature or has no featuringTypes must be referential. OCL2.0: direction <> null or isEnd or featuringType->isEmpty() implies isReference Usage
validateUsageVariationIsAbstract Public If a Usage is a variation, then it must be abstract. OCL2.0: isVariation implies isAbstract Usage
validateUsageVariationOwnedFeatureMembership Public If a Usage is a variation, then it must not have any ownedFeatureMemberships. OCL2.0: isVariation implies ownedFeatureMembership->isEmpty() Usage
validateUsageVariationSpecialization Public A variation Usage may not specialize any variation Definition or Usage. OCL2.0: isVariation implies not ownedSpecialization.specific->exists( oclIsKindOf(Definition) and oclAsType(Definition).isVariation or oclIsKindOf(Usage) and oclAsType(Usage).isVariation) Usage

Properties

Name Visibility Type Default Description Owner
actionDefinition Public Behavior [0..*] {derived} {ordered} {redefines: Step.behavior} {many-to-many:ActionUsage.definedAction} null The Behaviors that are the types of this ActionUsage. Nominally, these would be ActionDefinitions, but other kinds of Kernel Behaviors are also allowed, to permit use of Behaviors from the Kernel Model Libraries. ActionUsage
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
behavior Public Behavior [0..*] {derived} {ordered} {redefined by: Expression.function} {subsetted: Feature.type} {many-to-many:Step.typedStep} null The Behaviors that type this Step. Step
calculationDefinition Public Function [0..1] {derived} {ordered} {redefines: Expression.function} null The Function that is the type of this CalculationUsage. Nominally, this would be a CalculationDefinition, but a kernel Function is also allowed, to permit use of Functions from the Kernel Model Libraries. CalculationUsage
chainingFeature Public Feature [0..*] {derived} {ordered} {many-to-many:Feature.chainedFeature} null The Feature that are chained together to determine the values of this Feature, derived from the chainingFeatures of the ownedFeatureChainings of this Feature, in the same order. The values of a Feature with chainingFeatures are the same as values of the last Feature in the chain, which can be found by starting with the values of the first Feature (for each instance of the domain of the original Feature), then using each of those as domain instances to find the values of the second Feature in chainingFeatures, and so on, to values of the last Feature. Feature
crossFeature Public Feature [0..1] {derived} null The second chainingFeature of the crossedFeature of the ownedCrossSubsetting of this Feature, if it has one. Semantically, the values of the crossFeature of an end Feature must include all values of the end Feature obtained when navigating from values of the other end Features of the same owningType. Feature
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
definition Public Classifier [0..*] {derived} {ordered} {redefines: Feature.type} {redefined by: OccurrenceUsage.occurrenceDefinition} {many-to-many:Usage.definedUsage} null The Classifiers that are the types of this Usage. Nominally, these are Definitions, but other kinds of Kernel Classifiers are also allowed, to permit use of Classifiers from the Kernel Model Libraries. Usage
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {redefined by: Step.parameter} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
directedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Usage.usageWithDirectedUsage} null The usages of this Usage that are directedFeatures. Usage
direction Public FeatureDirectionKind [0..1] null Indicates how values of this Feature are determined or used (as specified for the FeatureDirectionKind). Feature
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
endOwningType Public Type [0..1] {derived} {subsetted: A_endFeature_typeWithEndFeature.typeWithEndFeature} {subsetted: Feature.owningType} null The Type that is related to this Feature by an EndFeatureMembership in which the Feature is an ownedMemberFeature. Feature
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
featureTarget Public Feature [1..1] {derived} null The last of the chainingFeatures of this Feature, if it has any. Otherwise, this Feature itself. Feature
featuringType Public Type [0..*] {derived} {ordered} {many-to-many:Feature.featureOfType} null Types that feature this Feature, such that any instance in the domain of the Feature must be classified by all of these Types, including at least all the featuringTypes of its typeFeaturings. If the Feature is chained, then the featuringTypes of the first Feature in the chain are also featuringTypes of the chained Feature. Feature
function Public Function [0..1] {derived} {redefines: Step.behavior} {redefined by: CalculationUsage.calculationDefinition} null The Function that types this Expression. Expression
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
individualDefinition Public OccurrenceDefinition [0..1] {derived} {subsetted: OccurrenceUsage.occurrenceDefinition} null The at most one occurrenceDefinition that has isIndividual = true. OccurrenceUsage
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isComposite Public Boolean [1..1] false Whether the Feature is a composite feature of its featuringType. If so, the values of the Feature cannot exist after its featuring instance no longer does and cannot be values of another composite feature that is not on the same featuring instance. Feature
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isConstant Public Boolean [1..1] false If isVariable is true, then whether the value of this Feature nevertheless does not change over all snapshots of its owningType. Feature
isDerived Public Boolean [1..1] false Whether the values of this Feature can always be computed from the values of other Features. Feature
isEnd Public Boolean [1..1] false Whether or not this Feature is an end Feature. An end Feature always has multiplicity 1, mapping each of its domain instances to a single co-domain instance. However, it may have a crossFeature, in which case values of the crossFeature must be the same as those found by navigation across instances of the owningType from values of other end Features to values of this Feature. If the owningType has n end Features, then the multiplicity, ordering, and uniqueness declared for the crossFeature of any one of these end Features constrains the cardinality, ordering, and uniqueness of the collection of values of that Feature reached by navigation when the values of the other n-1 end Features are held fixed. Feature
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isIndividual Public Boolean [1..1] false Whether this OccurrenceUsage represents the usage of the specific individual represented by its individualDefinition. OccurrenceUsage
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isModelLevelEvaluable Public Boolean [1..1] {derived} null Whether this Expression meets the constraints necessary to be evaluated at model level, that is, using metadata within the model. Expression
isOrdered Public Boolean [1..1] false Whether an order exists for the values of this Feature or not. Feature
isPortion Public Boolean [1..1] false Whether the values of this Feature are contained in the space and time of instances of the domain of the Feature and represent the same thing as those instances. Feature
isReference Public Boolean [1..1] {derived} null Whether this Usage is a referential Usage, that is, it has isComposite = false. Usage
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
isUnique Public Boolean [1..1] true Whether or not values for this Feature must have no duplicates or not. Feature
isVariable Public Boolean [1..1] {redefined by: Usage.mayTimeVary} false Whether the value of this Feature might vary over time. That is, whether the Feature may have a different value for each snapshot of an owningType that is an Occurrence. Feature
isVariation Public Boolean [1..1] null Whether this Usage is for a variation point or not. If true, then all the memberships of the Usage must be VariantMemberships. Usage
mayTimeVary Public Boolean [1..1] {derived} {redefines: Feature.isVariable} null Whether this Usage may be time varying (that is, whether it is featured by the snapshots of its owningType, rather than being featured by the owningType itself). However, if isConstant is also true, then the value of the Usage is nevertheless constant over the entire duration of an instance of its owningType (that is, it has the same value on all snapshots). The property mayTimeVary redefines the KerML property Feature::isVariable, making it derived. The property isConstant is inherited from Feature. Usage
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
nestedAction Public ActionUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ActionUsages that are nestedUsages of this Usage. Usage
nestedAllocation Public AllocationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConnection} null The AllocationUsages that are nestedUsages of this Usage. Usage
nestedAnalysisCase Public AnalysisCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The AnalysisCaseUsages that are nestedUsages of this Usage. Usage
nestedAttribute Public AttributeUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The code>AttributeUsages that are nestedUsages of this Usage. Usage
nestedCalculation Public CalculationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAction} null The CalculationUsage that are nestedUsages of this Usage. Usage
nestedCase Public CaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCalculation} null The CaseUsages that are nestedUsages of this Usage. Usage
nestedConcern Public ConcernUsage [0..*] {derived} {subsetted: Usage.nestedRequirement} null The ConcernUsages that are nestedUsages of this Usage. Usage
nestedConnection Public ConnectorAsUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The ConnectorAsUsages that are nestedUsages of this Usage. Note that this list includes BindingConnectorAsUsages, SuccessionAsUsages, and FlowConnectionUsages because these are ConnectorAsUsages even though they are not ConnectionUsages. Usage
nestedConstraint Public ConstraintUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ConstraintUsages that are nestedUsages of this Usage. Usage
nestedEnumeration Public EnumerationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAttribute} null The code>EnumerationUsages that are nestedUsages of this Usage. Usage
nestedFlow Public FlowUsage [0..*] {derived} {subsetted: Usage.nestedConnection} null The code>FlowUsages that are nestedUsages of this Usage. Usage
nestedInterface Public InterfaceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConnection} null The InterfaceUsages that are nestedUsages of this Usage. Usage
nestedItem Public ItemUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ItemUsages that are nestedUsages of this Usage. Usage
nestedMetadata Public MetadataUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedItem} null The MetadataUsages that are nestedUsages of this of this Usage. Usage
nestedOccurrence Public OccurrenceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The OccurrenceUsages that are nestedUsages of this Usage. Usage
nestedPart Public PartUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedItem} null The PartUsages that are nestedUsages of this Usage. Usage
nestedPort Public PortUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The PortUsages that are nestedUsages of this Usage. Usage
nestedReference Public ReferenceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The ReferenceUsages that are nestedUsages of this Usage. Usage
nestedRendering Public RenderingUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedPart} null The RenderingUsages that are nestedUsages of this Usage. Usage
nestedRequirement Public RequirementUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConstraint} null The RequirementUsages that are nestedUsages of this Usage. Usage
nestedState Public StateUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAction} null The StateUsages that are nestedUsages of this Usage. Usage
nestedTransition Public TransitionUsage [0..*] {derived} {subsetted: Usage.nestedUsage} null The TransitionUsages that are nestedUsages of this Usage. Usage
nestedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.ownedFeature} null The Usages that are ownedFeatures of this Usage. Usage
nestedUseCase Public UseCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The UseCaseUsages that are nestedUsages of this Usage. Usage
nestedVerificationCase Public VerificationCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The VerificationCaseUsages that are nestedUsages of this Usage. Usage
nestedView Public ViewUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedPart} null The ViewUsages that are nestedUsages of this Usage. Usage
nestedViewpoint Public ViewpointUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedRequirement} null The ViewpointUsages that are nestedUsages of this Usage. Usage
occurrenceDefinition Public Class [0..*] {derived} {ordered} {redefines: Usage.definition} {many-to-many:OccurrenceUsage.definedOccurrence} null The Classes that are the types of this OccurrenceUsage. Nominally, these are OccurrenceDefinitions, but other kinds of kernel Classes are also allowed, to permit use of Classes from the Kernel Model Libraries. OccurrenceUsage
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedCrossSubsetting Public CrossSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a CrossSubsetting}, for which the Feature is the crossingFeature. Feature
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureChaining Public FeatureChaining [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Feature that are FeatureChainings, for which the Feature will be the featureChained. Feature
ownedFeatureInverting Public FeatureInverting [0..*] {composite} {derived} {subsetted: A_invertingFeatureInverting_featureInverted.invertingFeatureInverting} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are FeatureInvertings and for which the Feature is the featureInverted. Feature
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedRedefinition Public Redefinition [0..*] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The ownedSubsettings of this Feature that are Redefinitions, for which the Feature is the redefiningFeature. Feature
ownedReferenceSubsetting Public ReferenceSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a ReferenceSubsetting, for which the Feature is the referencingFeature. Feature
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedSubsetting Public Subsetting [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} {subsetted: A_subsettingFeature_subsetting.subsetting} null The ownedSpecializations of this Feature that are Subsettings, for which the Feature is the subsettingFeature. Feature
ownedTypeFeaturing Public TypeFeaturing [0..*] {composite} {derived} {ordered} {subsetted: A_featureOfType_typeFeaturing.typeFeaturing} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are TypeFeaturings and for which the Feature is the featureOfType. Feature
ownedTyping Public FeatureTyping [0..*] {composite} {derived} {ordered} {subsetted: Type.ownedSpecialization} {subsetted: A_typing_typedFeature.typing} null The ownedSpecializations of this Feature that are FeatureTypings, for which the Feature is the typedFeature. Feature
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningDefinition Public Definition [0..1] {derived} {subsetted: Feature.owningType} null The Definition that owns this Usage (if any). Usage
owningFeatureMembership Public FeatureMembership [0..1] {derived} {subsetted: Element.owningMembership} null The FeatureMembership that owns this Feature as an ownedMemberFeature, determining its owningType. Feature
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
owningType Public Type [0..1] {derived} {subsetted: A_typeWithFeature_feature.typeWithFeature} {subsetted: Element.owningNamespace} {subsetted: Feature.featuringType} null The Type that is the owningType of the owningFeatureMembership of this Feature. Feature
owningUsage Public Usage [0..1] {derived} {subsetted: Feature.owningType} null The Usage in which this Usage is nested (if any). Usage
parameter Public Feature [0..*] {derived} {ordered} {redefines: Type.directedFeature} {many-to-many:Step.parameteredStep} null The parameters of this Step, which are defined as its directedFeatures, whose values are passed into and/or out of a performance of the Step. Step
portionKind Public PortionKind [0..1] null The kind of temporal portion (time slice or snapshot) is represented by this OccurrenceUsage. If portionKind is not null, then the owningType of the OccurrenceUsage must be non-null, and the OccurrenceUsage represents portions of the featuring instance of the owningType. OccurrenceUsage
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
result Public Feature [1..1] {derived} {subsetted: Type.output} {subsetted: Step.parameter} null An output parameter of the Expression whose value is the result of the Expression. The result of an Expression is either inherited from its function or it is related to the Expression via a ReturnParameterMembership, in which case it redefines the result parameter of its function. Expression
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
type Public Type [0..*] {derived} {ordered} {redefined by: Usage.definition} {many-to-many:Feature.typedFeature} null Types that restrict the values of this Feature, such that the values must be instances of all the types. The types of a Feature are derived from its typings and the types of its subsettings. If the Feature is chained, then the types of the last Feature in the chain are also types of the chained Feature. Feature
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type
usage Public Usage [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Usage.featuringUsage} null The Usages that are features of this Usage (not necessarily owned). Usage
variant Public Usage [0..*] {derived} {subsetted: Namespace.ownedMember} null The Usages which represent the variants of this Usage as a variation point Usage, if isVariation = true. If isVariation = false, then there must be no variants. Usage
variantMembership Public VariantMembership [0..*] {composite} {derived} {subsetted: Namespace.ownedMembership} null The ownedMemberships of this Usage that are VariantMemberships. If isVariation = true, then this must be all memberships of the Usage. If isVariation = false, then variantMembershipmust be empty. Usage

CaseDefinition [Class]

Features

Name Description
Fully Qualified Name SysML::Systems::Cases::CaseDefinition
Visibility Public
Definition A CaseDefinition is a CalculationDefinition for a process, often involving collecting evidence or data, relative to a subject, possibly involving the collaboration of one or more other actors, producing a result that meets an objective.
Is Abstract FALSE
Generalizations CalculationDefinition
Specializations AnalysisCaseDefinition UseCaseDefinition VerificationCaseDefinition
Containers

Rules

Name Visibilty Description Specification Owner
checkActionDefinitionSpecialization Public An ActionDefinition must directly or indirectly specialize the ActionDefinition Actions::Action from the Systems Model Library. OCL2.0: specializesFromLibrary('Actions::Action') ActionDefinition
checkBehaviorSpecialization Public A Behavior must directly or indirectly specialize the base Behavior Performances::Performance from the Kernel Semantic Library. English: specializesFromLibrary('Performances::Performance') Behavior
checkCalculationDefinitionSpecialization Public A CalculationDefinition must directly or indirectly specialize the CalculationDefinition Calculations::Calculation from the Systems Model Library. OCL2.0: specializesFromLibrary('Calculations::Calculation') CalculationDefinition
checkCaseDefinitionSpecialization Public A CaseDefinition must directly or indirectly specialize the base CaseDefinition Cases::Case> from the Systems Model Library. OCL2.0: specializesFromLibrary('Cases::Case') CaseDefinition
checkClassSpecialization Public A Class must directly or indirectly specialize the base Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Occurrences::Occurrence') Class
checkFunctionResultBindingConnector Public If a Function has an Expression owned via a ResultExpressionMembership, then the owning Function must also own a BindingConnector between its result parameter and the result parameter of the result Expression. OCL2.0: ownedMembership.selectByKind(ResultExpressionMembership)-> forAll(mem | ownedFeature.selectByKind(BindingConnector)-> exists(binding | binding.relatedFeature->includes(result) and binding.relatedFeature->includes(mem.ownedResultExpression.result))) Function
checkFunctionSpecialization Public A Function must directly or indirectly specialize the base Function Performances::Evaluation from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::Evaluation') Function
checkOccurrenceDefinitionIndividualSpecialization Public An OccurrenceDefinition with isIndividual = true must directly or indirectly specialize Occurrences::Life from the Kernel Semantic Library. OCL2.0: isIndividual implies specializesFromLibrary('Occurrences::Life') OccurrenceDefinition
checkOccurrenceDefinitionMultiplicitySpecialization Public An OccurrenceDefinition with isIndividual = true must have a multiplicity that specializes Base::zeroOrOne from the Kernel Semantic Library. OCL2.0: isIndividual implies multiplicity <> null and multiplicity.specializesFromLibrary('Base::zeroOrOne') OccurrenceDefinition
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
deriveActionDefinitionAction Public The actions of a ActionDefinition are those of its usages that are ActionUsages. OCL2.0: action = usage->selectByKind(ActionUsage) ActionDefinition
deriveBehaviorStep Public The steps of a Behavior are its features that are Steps. OCL2.0: step = feature->selectByKind(Step) Behavior
deriveCalculationUsageCalculation Public The calculations of a CalculationDefinition are those of its actions that are CalculationUsages. OCL2.0: calculation = action->selectByKind(CalculationUsage) CalculationDefinition
deriveCaseDefinitionActorParameter Public The actorParameters of a CaseDefinition are the ownedActorParameters of the ActorMemberships of the CaseDefinition. OCL2.0: actorParameter = featureMembership-> selectByKind(ActorMembership). ownedActorParameter CaseDefinition
deriveCaseDefinitionObjectiveRequirement Public The objectiveRequirement of a CaseDefinition is the ownedObjectiveRequirement of its ObjectiveMembership, if any. OCL2.0: objectiveRequirement = let objectives: OrderedSet(RequirementUsage) = featureMembership-> selectByKind(ObjectiveMembership). ownedRequirement in if objectives->isEmpty() then null else objectives->first().ownedObjectiveRequirement endif CaseDefinition
deriveCaseDefinitionSubjectParameter Public The subjectParameter of a CaseDefinition is the ownedSubjectParameter of its SubjectMembership (if any). OCL2.0: subjectParameter = let subjectMems : OrderedSet(SubjectMembership) = featureMembership->selectByKind(SubjectMembership) in if subjectMems->isEmpty() then null else subjectMems->first().ownedSubjectParameter endif CaseDefinition
deriveClassifierOwnedSubclassification Public The ownedSubclassifications of a Classifier are its ownedSpecializations that are Subclassifications. OCL2.0: ownedSubclassification = ownedSpecialization->selectByKind(Subclassification) Classifier
deriveDefinitionDirectedUsage Public The directedUsages of a Definition are all its directedFeatures that are Usages. OCL2.0: directedUsage = directedFeature->selectByKind(Usage) Definition
deriveDefinitionOwnedAction Public The ownedActions of a Definition are all its ownedUsages that are ActionUsages. OCL2.0: ownedAction = ownedUsage->selectByKind(ActionUsage) Definition
deriveDefinitionOwnedAllocation Public The ownedAllocations of a Definition are all its ownedUsages that are AllocationUsages. OCL2.0: ownedAllocation = ownedUsage->selectByKind(AllocationUsage) Definition
deriveDefinitionOwnedAnalysisCase Public The ownedAnalysisCases of a Definition are all its ownedUsages that are AnalysisCaseUsages. OCL2.0: ownedAnalysisCase = ownedUsage->selectByKind(AnalysisCaseUsage) Definition
deriveDefinitionOwnedAttribute Public The ownedAttributes of a Definition are all its ownedUsages that are AttributeUsages. OCL2.0: ownedAttribute = ownedUsage->selectByKind(AttributeUsage) Definition
deriveDefinitionOwnedCalculation Public The ownedCalculations of a Definition are all its ownedUsages that are CalculationUsages. OCL2.0: ownedCalculation = ownedUsage->selectByKind(CalculationUsage) Definition
deriveDefinitionOwnedCase Public The ownedCases of a Definition are all its ownedUsages that are CaseUsages. OCL2.0: ownedCase = ownedUsage->selectByKind(CaseUsage) Definition
deriveDefinitionOwnedConcern Public The ownedConcerns of a Definition are all its ownedUsages that are ConcernUsages. OCL2.0: ownedConcern = ownedUsage->selectByKind(ConcernUsage) Definition
deriveDefinitionOwnedConnection Public The ownedConnections of a Definition are all its ownedUsages that are ConnectorAsUsages. OCL2.0: ownedConnection = ownedUsage->selectByKind(ConnectorAsUsage) Definition
deriveDefinitionOwnedConstraint Public The ownedConstraints of a Definition are all its ownedUsages that are ConstraintUsages. OCL2.0: ownedConstraint = ownedUsage->selectByKind(ConstraintUsage) Definition
deriveDefinitionOwnedEnumeration Public The ownedEnumerations of a Definition are all its ownedUsages that are EnumerationUsages. OCL2.0: ownedEnumeration = ownedUsage->selectByKind(EnumerationUsage) Definition
deriveDefinitionOwnedFlow Public The ownedFlows of a Definition are all its ownedUsages that are FlowUsages. OCL2.0: ownedFlow = ownedUsage->selectByKind(FlowConnectionUsage) Definition
deriveDefinitionOwnedInterface Public The ownedInterfaces of a Definition are all its ownedUsages that are InterfaceUsages. OCL2.0: ownedInterface = ownedUsage->selectByKind(ReferenceUsage) Definition
deriveDefinitionOwnedItem Public The ownedItems of a Definition are all its ownedUsages that are ItemUsages. OCL2.0: ownedItem = ownedUsage->selectByKind(ItemUsage) Definition
deriveDefinitionOwnedMetadata Public The ownedMetadata of a Definition are all its ownedUsages that are MetadataUsages. OCL2.0: ownedMetadata = ownedUsage->selectByKind(MetadataUsage) Definition
deriveDefinitionOwnedOccurrence Public The ownedOccurrences of a Definition are all its ownedUsages that are OccurrenceUsages. OCL2.0: ownedOccurrence = ownedUsage->selectByKind(OccurrenceUsage) Definition
deriveDefinitionOwnedPart Public The ownedParts of a Definition are all its ownedUsages that are PartUsages. OCL2.0: ownedPart = ownedUsage->selectByKind(PartUsage) Definition
deriveDefinitionOwnedPort Public The ownedPorts of a Definition are all its ownedUsages that are PortUsages. OCL2.0: ownedPort = ownedUsage->selectByKind(PortUsage) Definition
deriveDefinitionOwnedReference Public The ownedReferences of a Definition are all its ownedUsages that are ReferenceUsages. OCL2.0: ownedReference = ownedUsage->selectByKind(ReferenceUsage) Definition
deriveDefinitionOwnedRendering Public The ownedRenderings of a Definition are all its ownedUsages that are RenderingUsages. OCL2.0: ownedRendering = ownedUsage->selectByKind(RenderingUsage) Definition
deriveDefinitionOwnedRequirement Public The ownedRequirements of a Definition are all its ownedUsages that are RequirementUsages. OCL2.0: ownedRequirement = ownedUsage->selectByKind(RequirementUsage) Definition
deriveDefinitionOwnedState Public The ownedStates of a Definition are all its ownedUsages that are StateUsages. OCL2.0: ownedState = ownedUsage->selectByKind(StateUsage) Definition
deriveDefinitionOwnedTransition Public The ownedTransitions of a Definition are all its ownedUsages that are TransitionUsages. OCL2.0: ownedTransition = ownedUsage->selectByKind(TransitionUsage) Definition
deriveDefinitionOwnedUsage Public The ownedUsages of a Definition are all its ownedFeatures that are Usages. OCL2.0: ownedUsage = ownedFeature->selectByKind(Usage) Definition
deriveDefinitionOwnedUseCase Public The ownedUseCases of a Definition are all its ownedUsages that are UseCaseUsages. OCL2.0: ownedUseCase = ownedUsage->selectByKind(UseCaseUsage) Definition
deriveDefinitionOwnedVerificationCase Public The ownedValidationCases of a Definition are all its ownedUsages that are ValidationCaseUsages. OCL2.0: ownedVerificationCase = ownedUsage->selectByKind(VerificationCaseUsage) Definition
deriveDefinitionOwnedView Public The ownedViews of a Definition are all its ownedUsages that are ViewUsages. OCL2.0: ownedView = ownedUsage->selectByKind(ViewUsage) Definition
deriveDefinitionOwnedViewpoint Public The ownedViewpoints of a Definition are all its ownedUsages that are ViewpointUsages. OCL2.0: ownedViewpoint = ownedUsage->selectByKind(ViewpointUsage) Definition
deriveDefinitionUsage Public The usages of a Definition are all its features that are Usages. OCL2.0: usage = feature->selectByKind(Usage) Definition
deriveDefinitionVariant Public The variants of a Definition are the ownedVariantUsages of its variantMemberships. OCL2.0: variant = variantMembership.ownedVariantUsage Definition
deriveDefinitionVariantMembership Public The variantMemberships of a Definition are those ownedMemberships that are VariantMemberships. OCL2.0: variantMembership = ownedMembership->selectByKind(VariantMembership) Definition
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveFunctionResult Public The result parameter of a Function is its parameter owned (possibly in a supertype) via a ReturnParameterMembership (if any). OCL2.0: result = let resultParams : Sequence(Feature) = featureMemberships-> selectByKind(ReturnParameterMembership). ownedMemberParameter in if resultParams->notEmpty() then resultParams->first() else null endif Function
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
validateBehaviorSpecialization Public A Behavior must not specialize a Structure. OCL2.0: ownedSpecialization.general->forAll(not oclIsKindOf(Structure)) Behavior
validateCaseDefinitionOnlyOneObjective Public A CaseDefinition must have at most one featureMembership that is a ObjectiveMembership. OCL2.0: featureMembership-> selectByKind(ObjectiveMembership)-> size() <= 1 CaseDefinition
validateCaseDefinitionOnlyOneSubject Public A CaseDefinition must have at most one featureMembership that is a SubjectMembership. English: featureMembership->selectByKind(SubjectMembership)->size() <= 1 CaseDefinition
validateCaseDefinitionSubjectParameterPosition Public The subjectParameter of a CaaseDefinition must be its first input. OCL2.0: input->notEmpty() and input->first() = subjectParameter CaseDefinition
validateClassifierMultiplicityDomain Public If a Classifier has a multiplicity, then the multiplicity must have no featuringTypes (meaning that its domain is implicitly Base::Anything). OCL2.0: multiplicity <> null implies multiplicity.featuringType->isEmpty() Classifier
validateClassSpecialization Public A Class must not specialize a DataType and it can only specialize an Association if it is also itself a kind of Association (such as an AssociationStructure or Interaction). OCL2.0: ownedSpecialization.general-> forAll(not oclIsKindOf(DataType)) and not oclIsKindOf(Association) implies ownedSpecialization.general-> forAll(not oclIsKindOf(Association)) Class
validateDefinitionVariationIsAbstract Public If a Definition is a variation, then it must be abstract. OCL2.0: isVariation implies isAbstract Definition
validateDefinitionVariationOwnedFeatureMembership Public If a Definition is a variation, then all it must not have any ownedFeatureMemberships. OCL2.0: isVariation implies ownedFeatureMembership->isEmpty() Definition
validateDefinitionVariationSpecialization Public A variation Definition may not specialize any other variation Definition. OCL2.0: isVariation implies not ownedSpecialization.specific->exists( oclIsKindOf(Definition) and oclAsType(Definition).isVariation) Definition
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateFunctionResultExpressionMembership Public A Function must have at most one ResultExpressionMembership. OCL2.0: membership->selectByKind(ResultExpressionMembership)->size() <= 1 Function
validateFunctionResultParameterMembership Public A Function must have exactly one featureMembership (owned or inherited) that is a ResultParameterMembership. OCL2.0: featureMembership-> selectByKind(ReturnParameterMembership)-> size() = 1 Function
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type

Properties

Name Visibility Type Default Description Owner
action Public ActionUsage [0..*] {derived} {ordered} {subsetted: Behavior.step} {many-to-many:ActionDefinition.featuringActionDefinition} null The ActionUsages that are steps in this ActionDefinition, which define the actions that specify the behavior of the ActionDefinition. ActionDefinition
actorParameter Public PartUsage [0..*] {derived} {ordered} {subsetted: Behavior.parameter} null The parameters of this CaseDefinition that represent actors involved in the case. CaseDefinition
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
calculation Public CalculationUsage [0..*] {derived} {ordered} {subsetted: Function.expression} {many-to-many:CalculationDefinition.featuringCalculationDefinition} null The actions of this CalculationDefinition that are CalculationUsages. CalculationDefinition
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {redefined by: Behavior.parameter} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
directedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Definition.definitionWithDirectedUsage} null The usages of this Definition that are directedFeatures. Definition
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
expression Public Expression [0..*] {derived} {subsetted: Behavior.step} {many-to-many:Function.computedFunction} null The Expressions that are steps in the calculation of the result of this Function. Function
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isIndividual Public Boolean [1..1] false Whether this OccurrenceDefinition is constrained to represent at most one thing. OccurrenceDefinition
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isModelLevelEvaluable Public Boolean [1..1] {derived} null Whether this Function can be used as the function of a model-level evaluable InvocationExpression. Certain Functions from the Kernel Functions Library are considered to have isModelLevelEvaluable = true. For all other Functions it is false. Note: See the specification of the KerML concrete syntax notation for Expressions for an identification of which library Functions are model-level evaluable. Function
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
isVariation Public Boolean [1..1] null Whether this Definition is for a variation point or not. If true, then all the memberships of the Definition must be VariantMemberships. Definition
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
objectiveRequirement Public RequirementUsage [0..1] {derived} {ordered} {subsetted: Definition.usage} null The RequirementUsage representing the objective of this CaseDefinition. CaseDefinition
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAction Public ActionUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedOccurrence} null The ActionUsages that are ownedUsages of this Definition. Definition
ownedAllocation Public AllocationUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedConnection} null The AllocationUsages that are ownedUsages of this Definition. Definition
ownedAnalysisCase Public AnalysisCaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCase} null The AnalysisCaseUsages that are ownedUsages of this Definition. Definition
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedAttribute Public AttributeUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The AttributeUsages that are ownedUsages of this Definition. Definition
ownedCalculation Public CalculationUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedAction} null The CalculationUsages that are ownedUsages of this Definition. Definition
ownedCase Public CaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCalculation} null The code>CaseUsages that are ownedUsages of this Definition. Definition
ownedConcern Public ConcernUsage [0..*] {derived} {subsetted: Definition.ownedRequirement} null The ConcernUsages that are ownedUsages of this Definition. Definition
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedConnection Public ConnectorAsUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The ConnectorAsUsages that are ownedUsages of this Definition. Note that this list includes BindingConnectorAsUsages, SuccessionAsUsages, and FlowUsages because these are ConnectorAsUsages even though they are not ConnectionUsages. Definition
ownedConstraint Public ConstraintUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedOccurrence} null The ConstraintUsages that are ownedUsages of this Definition. Definition
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedEnumeration Public EnumerationUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedAttribute} null The EnumerationUsages that are ownedUsages of this Definition. Definition
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedFlow Public FlowUsage [0..*] {derived} {subsetted: Definition.ownedConnection} null The FlowUsages that are ownedUsages of this Definition. Definition
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedInterface Public InterfaceUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedConnection} null The InterfaceUsages that are ownedUsages of this Definition. Definition
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedItem Public ItemUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedOccurrence} null The ItemUsages that are ownedUsages of this Definition. Definition
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedMetadata Public MetadataUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedItem} null The MetadataUsages that are ownedUsages of this Definition. Definition
ownedOccurrence Public OccurrenceUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The OccurrenceUsages that are ownedUsages of this Definition. Definition
ownedPart Public PartUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedItem} null The PartUsages that are ownedUsages of this Definition. Definition
ownedPort Public PortUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The PortUsages that are ownedUsages of this Definition. Definition
ownedReference Public ReferenceUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The ReferenceUsages that are ownedUsages of this Definition. Definition
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedRendering Public RenderingUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedPart} null The RenderingUsages that are ownedUsages of this Definition. Definition
ownedRequirement Public RequirementUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedConstraint} null The RequirementUsages that are ownedUsages of this Definition. Definition
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedState Public StateUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedAction} null The StateUsages that are ownedUsages of this Definition. Definition
ownedSubclassification Public Subclassification [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} null The ownedSpecializations of this Classifier that are Subclassifications, for which this Classifier is the subclassifier. Classifier
ownedTransition Public TransitionUsage [0..*] {derived} {subsetted: Definition.ownedUsage} null The TransitionUsages that are ownedUsages of this Definition. Definition
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
ownedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.ownedFeature} null The Usages that are ownedFeatures of this Definition. Definition
ownedUseCase Public UseCaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCase} null The UseCaseUsages that are ownedUsages of this Definition. Definition
ownedVerificationCase Public VerificationCaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCase} null The VerificationCaseUsages that are ownedUsages of this Definition. Definition
ownedView Public ViewUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedPart} null The ViewUsages that are ownedUsages of this Definition. Definition
ownedViewpoint Public ViewpointUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedRequirement} null The ViewpointUsages that are ownedUsages of this Definition. Definition
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
parameter Public Feature [0..*] {derived} {ordered} {redefines: Type.directedFeature} {many-to-many:Behavior.parameteredBehavior} null The parameters of this Behavior, which are defined as its directedFeatures, whose values are passed into and/or out of a performance of the Behavior. Behavior
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
result Public Feature [1..1] {derived} {subsetted: Type.output} {subsetted: Behavior.parameter} null The object or value that is the result of evaluating the Function. Function
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
step Public Step [0..*] {derived} {subsetted: Type.feature} {many-to-many:Behavior.featuringBehavior} null The Steps that make up this Behavior. Behavior
subjectParameter Public Usage [1..1] {derived} {subsetted: Behavior.parameter} null The parameter of this CaseDefinition that represents its subject. CaseDefinition
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type
usage Public Usage [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Definition.featuringDefinition} null The Usages that are features of this Definition (not necessarily owned). Definition
variant Public Usage [0..*] {derived} {subsetted: Namespace.ownedMember} null The Usages which represent the variants of this Definition as a variation point Definition, if isVariation = true. If isVariation = false, the there must be no variants. Definition
variantMembership Public VariantMembership [0..*] {composite} {derived} {subsetted: Namespace.ownedMembership} null The ownedMemberships of this Definition that are VariantMemberships. If isVariation = true, then this must be all ownedMemberships of the Definition. If isVariation = false, then variantMembershipmust be empty. Definition

CaseUsage [Class]

Features

Name Description
Fully Qualified Name SysML::Systems::Cases::CaseUsage
Visibility Public
Definition A CaseUsage is a Usage of a CaseDefinition.
Is Abstract FALSE
Generalizations CalculationUsage
Specializations AnalysisCaseUsage UseCaseUsage VerificationCaseUsage
Containers

Rules

Name Visibilty Description Specification Owner
checkActionUsageOwnedActionSpecialization Public A composite ActionUsage whose owningType is PartDefinition or PartUsage must directly or indirectly specialize the ActionUsage Parts::Part::ownedActions from the Systems Model Library. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(PartDefinition) or owningType.oclIsKindOf(PartUsage)) implies specializesFromLibrary('Parts::Part::ownedActions') ActionUsage
checkActionUsageSpecialization Public An ActionUsage must directly or indirectly specialize the ActionUsage Actions::actions from the Systems Model Library. OCL2.0: specializesFromLibrary('Actions::actions') ActionUsage
checkActionUsageStateActionRedefinition Public An ActionUsage that is the entry, do, or exit Action of a StateDefinition or StateUsage must redefine the entryAction, doAction, or exitAction feature, respectively, of the StateDefinition States::StateAction from the Systems Model Library. OCL2.0: owningFeatureMembership <> null and owningFeatureMembership.oclIsKindOf(StateSubactionMembership) implies let kind : StateSubactionKind = owningFeatureMembership.oclAsType(StateSubactionMembership).kind in if kind = StateSubactionKind::entry then redefinesFromLibrary('States::StateAction::entryAction') else if kind = StateSubactionKind::do then redefinesFromLibrary('States::StateAction::doAction') else redefinesFromLibrary('States::StateAction::exitAction') endif endif ActionUsage
checkActionUsageSubactionSpecialization Public A composite ActionUsage that is a subaction usage must directly or indirectly specialize the ActionUsage Actions::Action::subactions from the Systems Model Library. OCL2.0: isSubactionUsage() implies specializesFromLibrary('Actions::Action::subactions') ActionUsage
checkCalculationUsageSpecialization Public A CalculationUsage must specialize directly or indirectly the CalculationUsage Calculations::calculations from the Systems Model Library. OCL2.0: specializesFromLibrary('Calculations::calculations') CalculationUsage
checkCalculationUsageSubcalculationSpecialization Public No Documentation Provided OCL2.0: owningType <> null and (owningType.oclIsKindOf(CalculationDefinition) or owningType.oclIsKindOf(CalculationUsage)) implies specializesFromLibrary('Calculations::Calculation::subcalculations') CalculationUsage
checkCaseUsageSpecialization Public A CaseUsage must directly or indirectly specialize the base CaseUsage Cases::cases from the Systems Model Library. OCL2.0: specializesFromLibrary('Cases::cases') CaseUsage
checkCaseUsageSubcaseSpecialization Public A composite CaseUsage whose owningType is a CaseDefinition or CaseUsage must directly or indirectly specialize the CaseUsage Cases::Case::subcases. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(CaseDefinition) or owningType.oclIsKindOf(CaseUsage)) implies specializesFromLibrary('Cases::Case::subcases') CaseUsage
checkExpressionResultBindingConnector Public If an Expression has an Expression owned via a ResultExpressionMembership, then the owning Expression must also own a BindingConnector between its result parameter and the result parameter of the result Expression. OCL2.0: ownedMembership.selectByKind(ResultExpressionMembership)-> forAll(mem | ownedFeature.selectByKind(BindingConnector)-> exists(binding | binding.relatedFeature->includes(result) and binding.relatedFeature->includes(mem.ownedResultExpression.result))) Expression
checkExpressionSpecialization Public An Expression must directly or indirectly specialize the base Expression Performances::evaluations from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::evaluations') Expression
checkExpressionTypeFeaturing Public If this Expression is owned by a FeatureValue, then it must have the same featuringTypes as the featureWithValue of the FeatureValue. OCL2.0: owningMembership <> null and owningMembership.oclIsKindOf(FeatureValue) implies let featureWithValue : Feature = owningMembership.oclAsType(FeatureValue).featureWithValue in featuringType = featureWithValue.featuringType Expression
checkFeatureCrossingSpecialization Public If this Feature has isEnd = true and ownedCrossFeature returns a non-null value, then the crossFeature of the Feature must be the Feature returned from ownedCrossFeature (which implies that this Feature has an appropriate ownedCrossSubsetting to realize this). OCL2.0: ownedCrossFeature() <> null implies crossFeature = ownedCrossFeature() Feature
checkFeatureDataValueSpecialization Public If a Feature has an ownedTyping relationship to a DataType, then it must directly or indirectly specialize Base::dataValues from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(DataType)) implies specializesFromLibrary('Base::dataValues') Feature
checkFeatureEndRedefinition Public If a Feature has isEnd = true and an owningType that is not empty, then, for each direct supertype of its owningType, it must redefine the endFeature at the same position, if any. OCL2.0: isEnd and owningType <> null implies let i : Integer = owningType.ownedEndFeature->indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | supertype.endFeature->size() >= i implies redefines(supertype.endFeature->at(i)) Feature
checkFeatureEndSpecialization Public If a Feature has isEnd = true and an owningType that is an Association or a Connector, then it must directly or indirectly specialize Links::Link::participant from the Kernel Semantic Library. OCL2.0: isEnd and owningType <> null and (owningType.oclIsKindOf(Association) or owningType.oclIsKindOf(Connector)) implies specializesFromLibrary('Links::Link::participant') Feature
checkFeatureFeatureMembershipTypeFeaturing Public If a Feature is owned via a FeatureMembership, then it must have a featuringType for which the operation isFeaturingType returns true. OCL2.0: owningFeatureMembership <> null implies featuringTypes->exists(t | isFeaturingType(t)) Feature
checkFeatureFlowFeatureRedefinition Public If a Feature is the first ownedFeature of a first or second FlowEnd, then it must directly or indirectly specialize either Transfers::Transfer::source::sourceOutput or Transfers::Transfer::target::targetInput, respectively, from the Kernel Semantic Library. OCL2.0: owningType <> null and owningType.oclIsKindOf(FlowEnd) and owningType.ownedFeature->at(1) = self implies let flowType : Type = owningType.owningType in flowType <> null implies let i : Integer = flowType.ownedFeature.indexOf(owningType) in (i = 1 implies redefinesFromLibrary('Transfers::Transfer::source::sourceOutput')) and (i = 2 implies redefinesFromLibrary('Transfers::Transfer::source::targetInput')) Feature
checkFeatureObjectSpecialization Public If a Feature has an ownedTyping relationship to a Structure, then it must directly or indirectly specialize Objects::objects from the Kernel Semantics Library. OCL2.0: ownedTyping.type->exists(selectByKind(Structure)) implies specializesFromLibary('Objects::objects') Feature
checkFeatureOccurrenceSpecialization Public If a Feature has an ownedTyping relationship to a Class, then it must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(Class)) implies specializesFromLibrary('Occurrences::occurrences') Feature
checkFeatureOwnedCrossFeatureRedefinitionSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then, for any end Feature that is redefined by the owning end Feature of this Feature, this Feature must subset the crossFeature of the redefined end Feature, if this exists. OCL2.0: isOwnedCrossFeature() implies ownedSubsetting.subsettedFeature->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature <> null).crossFeature) Feature
checkFeatureOwnedCrossFeatureSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then it must directly or indirectly specialize the types of its owning end Feature. OCL2.0: isOwnedCrossFeature() implies owner.oclAsType(Feature).type->forAll(t | self.specializes(t)) Feature
checkFeatureOwnedCrossFeatureTypeFeaturing Public If this Feature is the ownedCrossFeature of an end Feature, then it must have featuringTypes consistent with the crossing from other end Features of the owningType of its end Feature. OCL2.0: isOwnedCrossFeature() implies let otherEnds : OrderedSet(Feature) = owner.oclAsType(Feature).owningType.endFeature->excluding(self) in if (otherEnds->size() = 1) then featuringType = otherEnds->first().type else featuringType->size() = 1 and featuringType->first().isCartesianProduct() and featuringType->first().asCartesianProduct() = otherEnds.type and featuringType->first().allSupertypes()->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature() <> null).crossFeature().featuringType) endif Feature
checkFeatureParameterRedefinition Public If a Feature is a parameter of an owningType that is a Behavior or Step, but not
  • A result parameter
  • A parameter of an InvocationExpression, with at least one non-implied ownedRedefinition
then, for each direct supertype of its owningType that is also a Behavior or Step, it must redefine the parameter at the same position, if any.
OCL2.0: owningType <> null and not owningFeatureMembership. oclIsKindOf(ReturnParameterMembership) and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step) and (owningType.oclIsKindOf(InvocationExpression) implies not ownedRedefinition->exists(not isImplied)) implies let i : Integer = owningType.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership))-> indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | let ownedParameters : Sequence(Feature) = supertype.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership)) in ownedParameters->size() >= i implies redefines(ownedParameters->at(i)) Feature
checkFeaturePortionSpecialization Public If a Feature has isPortion = true, an ownedTyping relationship to a Class, and an owningType that is a Class or another Feature typed by a Class, then it must directly or indirectly specialize Occurrences::Occurrence::portions from the Kernel Semantic Library. OCL2.0: isPortion and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::portions') Feature
checkFeatureResultRedefinition Public If a Feature is a result parameter of an owningType that is a Function or Expression, then, for each direct supertype of its owningType that is also a Function or Expression, it must redefine the result parameter. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Function) and self = owningType.oclAsType(Function).result or owningType.oclIsKindOf(Expression) and self = owningType.oclAsType(Expression).result) implies owningType.ownedSpecialization.general-> select(oclIsKindOf(Function) or oclIsKindOf(Expression))-> forAll(supertype | redefines( if superType.oclIsKindOf(Function) then superType.oclAsType(Function).result else superType.oclAsType(Expression).result endif) Feature
checkFeatureSpecialization Public A Feature must directly or indirectly specialize Base::things from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::things') Feature
checkFeatureSubobjectSpecialization Public A composite Feature typed by a Structure, and whose ownedType is a Structure or another Feature typed by a Structure must directly or indirectly specialize Objects::Object::subobjects. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Structure)) and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.type->includes(oclIsKindOf(Structure))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureSuboccurrenceSpecialization Public A composite Feature that has an ownedTyping relationship to a Class, and whose ownedType is a Class or another Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureValuationSpecialization Public If a Feature has a FeatureValue, no ownedSpecializations that are not implied, and is not directed, then it must specialize the result of the value Expression of the FeatureValue. OCL2.0: direction = null and ownedSpecializations->forAll(isImplied) implies ownedMembership-> selectByKind(FeatureValue)-> forAll(fv | specializes(fv.value.result)) Feature
checkOccurrenceUsageSnapshotSpecialization Public If an OccurrenceUsage has portionKind = snapshot, then it must directly or indirectly specialize Occurrences::Occurrence::snapshots from the Kernel Semantic Library. OCL2.0: portionKind = PortionKind::snapshot implies specializesFromLibrary('Occurrences::Occurrence::snapshots') OccurrenceUsage
checkOccurrenceUsageSpecialization Public An OccurrenceUsage must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Occurrences::occurrences') OccurrenceUsage
checkOccurrenceUsageSuboccurrenceSpecialization Public A composite OccurrenceUsage, whose ownedType is a Class, another OccurrenceUsage, or any kind of Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(OccurrenceUsage) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKind(Class))) implies specializesFromLibrary('Occurrences::Occurrence::suboccurrences') OccurrenceUsage
checkOccurrenceUsageTimeSliceSpecialization Public If an OccurrenceUsage has portionKind = timeslice, then it must directly or indirectly specialize Occurrences::Occurrence::timeSlices from the Kernel Semantic Library. OCL2.0: portionKind = PortionKind::timeslice implies specializesFromLibrary('Occurrences::Occurrence::timeSlices') OccurrenceUsage
checkStepEnclosedPerformanceSpecialization Public AStep whose owningType is a Behavior or another Step must directly or indirectly specialize the Step Performances::Performance::enclosedPerformance. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step)) implies specializesFromLibrary('Performances::Performance::enclosedPerformance') Step
checkStepOwnedPerformanceSpecialization Public A composite Step whose owningType is a Structure or a Feature typed by a Structure must directly or indirectly specialize the Step Objects::Object::ownedPerformance. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Structure)) implies specializesFromLibrary('Objects::Object::ownedPerformance') Step
checkStepSpecialization Public A Step must directly or indirectly specialize the base Step Performances::performances from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::performances') Step
checkStepSubperformanceSpecialization Public AStep whose owningType is a Behavior or another Step, and which is composite, must directly or indirectly specialize the Step Performances::Performance::subperformance. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step)) and self.isComposite implies specializesFromLibrary('Performances::Performance::subperformance') Step
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
checkUsageVariationDefinitionSpecialization Public If a Usage has an owningVariationDefinition, then it must directly or indirectly specialize that Definition. OCL2.0: owningVariationDefinition <> null implies specializes(owningVariationDefinition) Usage
checkUsageVariationUsageSpecialization Public If a Usage has an owningVariationUsage, then it must directly or indirectly specialize that Usage. OCL2.0: owningVariationUsage <> null implies specializes(owningVariationUsage) Usage
checkUsageVariationUsageTypeFeaturing Public If a Usage has an owningVariationUsage, then it must have the same featuringTypes as that Usage. OCL2.0: owningVariationUsage <> null implies featuringType->asSet() = owningVariationUsage.featuringType->asSet() Usage
deriveCaseUsageActorParameter Public The actorParameters of a CaseUsage are the ownedActorParameters of the ActorMemberships of the CaseUsage. OCL2.0: actorParameter = featureMembership-> selectByKind(ActorMembership). ownedActorParameter CaseUsage
deriveCaseUsageObjectiveRequirement Public The objectiveRequirement of a CaseUsage is the RequirementUsage it owns via an ObjectiveMembership, if any. OCL2.0: objectiveRequirement = let objectives: OrderedSet(RequirementUsage) = featureMembership-> selectByKind(ObjectiveMembership). ownedRequirement in if objectives->isEmpty() then null else objectives->first().ownedObjectiveRequirement endif CaseUsage
deriveCaseUsageSubjectParameter Public The subjectParameter of a CaseUsage is the ownedSubjectParameter of its SubjectMembership (if any). OCL2.0: subjectParameter = let subjects : OrderedSet(SubjectMembership) = featureMembership->selectByKind(SubjectMembership) in if subjects->isEmpty() then null else subjects->first().ownedSubjectParameter endif CaseUsage
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveExpressionIsModelLevelEvaluable Public Whether an Expression isModelLevelEvaluable is determined by the modelLevelEvaluable() operation. OCL2.0: isModelLevelEvaluable = modelLevelEvaluable(Set(Element){}) Expression
deriveExpressionResult Public The result parameter of an Expression is its parameter owned (possibly in a supertype) via a ReturnParameterMembership (if any). OCL2.0: result = let resultParams : Sequence(Feature) = featureMemberships-> selectByKind(ReturnParameterMembership). ownedMemberParameter in if resultParams->notEmpty() then resultParams->first() else null endif Expression
deriveFeatureChainingFeature Public The chainingFeatures of a Feature are the chainingFeatures of its ownedFeatureChainings. OCL2.0: chainingFeature = ownedFeatureChaining.chainingFeature Feature
deriveFeatureCrossFeature Public The crossFeature of a Feature is the second chainingFeature of the crossedFeature of the ownedCrossSubsetting of the Feature, if any. OCL2.0: crossFeature = if ownedCrossSubsetting = null then null else let chainingFeatures: Sequence(Feature) = ownedCrossSubsetting.crossedFeature.chainingFeature in if chainingFeatures->size() < 2 then null else chainingFeatures->at(2) endif Feature
deriveFeatureFeatureTarget Public If a Feature has no chainingFeatures, then its featureTarget is the Feature itself, otherwise the featureTarget is the last of the chainingFeatures. OCL2.0: featureTarget = if chainingFeature->isEmpty() then self else chainingFeature->last() endif Feature
deriveFeatureFeaturingType Public The featuringTypes of a Feature include the featuringTypes of all the typeFeaturings of the Feature. If the Feature has chainingFeatures, then its featuringTypes also include the featuringTypes of the first chainingFeature. OCL2.0: featuringType = let featuringTypes : OrderedSet(Type) = featuring.type->asOrderedSet() in if chainingFeature->isEmpty() then featuringTypes else featuringTypes-> union(chainingFeature->first().featuringType)-> asOrderedSet() endif Feature
deriveFeatureOwnedCrossSubsetting Public The ownedCrossSubsetting of a Feature is the ownedSubsetting that is a CrossSubsetting, if any. OCL2.0: ownedCrossSubsetting = let crossSubsettings: Sequence(CrossSubsetting) = ownedSubsetting->selectByKind(CrossSubsetting) in if crossSubsettings->isEmpty() then null else crossSubsettings->first() endif Feature
deriveFeatureOwnedFeatureChaining Public The ownedFeatureChainings of a Feature are the ownedRelationships that are FeatureChainings. OCL2.0: ownedFeatureChaining = ownedRelationship->selectByKind(FeatureChaining) Feature
deriveFeatureOwnedFeatureInverting Public The ownedFeatureInvertings of a Feature are its ownedRelationships that are FeatureInvertings. OCL2.0: ownedFeatureInverting = ownedRelationship->selectByKind(FeatureInverting)-> select(fi | fi.featureInverted = self) Feature
deriveFeatureOwnedRedefinition Public The ownedRedefinitions of a Feature are its ownedSubsettings that are Redefinitions. OCL2.0: ownedRedefinition = ownedSubsetting->selectByKind(Redefinition) Feature
deriveFeatureOwnedReferenceSubsetting Public The ownedReferenceSubsetting of a Feature is the first ownedSubsetting that is a ReferenceSubsetting (if any). OCL2.0: ownedReferenceSubsetting = let referenceSubsettings : OrderedSet(ReferenceSubsetting) = ownedSubsetting->selectByKind(ReferenceSubsetting) in if referenceSubsettings->isEmpty() then null else referenceSubsettings->first() endif Feature
deriveFeatureOwnedSubsetting Public The ownedSubsettings of a Feature are its ownedSpecializations that are Subsettings. OCL2.0: ownedSubsetting = ownedSpecialization->selectByKind(Subsetting) Feature
deriveFeatureOwnedTypeFeaturing Public The ownedTypeFeaturings of a Feature are its ownedRelationships that are TypeFeaturings and which have the Feature as their featureOfType. OCL2.0: ownedTypeFeaturing = ownedRelationship->selectByKind(TypeFeaturing)-> select(tf | tf.featureOfType = self) Feature
deriveFeatureOwnedTyping Public The ownedTypings of a Feature are its ownedSpecializations that are FeatureTypings. OCL2.0: ownedTyping = ownedGeneralization->selectByKind(FeatureTyping) Feature
deriveFeatureType Public The types of a Feature are the union of the types of its typings and the types of the Features it subsets, with all redundant supertypes removed. If the Feature has chainingFeatures, then the union also includes the types of the last chainingFeature. OCL2.0: type = let types : OrderedSet(Types) = OrderedSet{self}-> -- Note: The closure operation automatically handles circular relationships. closure(typingFeatures()).typing.type->asOrderedSet() in types->reject(t1 | types->exist(t2 | t2 <> t1 and t2.specializes(t1))) Feature
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOccurrenceUsageIndividualDefinition Public The individualDefinition of an OccurrenceUsage is the occurrenceDefinition that is an OccurrenceDefinition with isIndividual = true, if any. OCL2.0: individualDefinition = let individualDefinitions : OrderedSet(OccurrenceDefinition) = occurrenceDefinition-> selectByKind(OccurrenceDefinition)-> select(isIndividual) in if individualDefinitions->isEmpty() then null else individualDefinitions->first() endif OccurrenceUsage
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveStepBehavior Public The behaviors of a Step are all its types that are Behaviors. OCL2.0: behavior = type->selectByKind(Behavior) Step
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
deriveUsageDirectedUsage Public The directedUsages of a Usage are all its directedFeatures that are Usages. OCL2.0: directedUsage = directedFeature->selectByKind(Usage) Usage
deriveUsageIsReference Public A Usage is referential if it is not composite. OCL2.0: isReference = not isComposite Usage
deriveUsageMayTimeVary Public A Usage mayTimeVary if and only if all of the following are true
  • It has an owningType that specializes Occurrences::Occurrence (from the Kernel Semantic Library).
  • It is not a portion.
  • It does not specialize Links::SelfLink or Occurrences::HappensLink (from the Kernel Semantic Library).
  • If isComposite = true, it does not specialize Actions::Action (from the Systems Model Library).
OCL2.0: mayTimeVary = owningType <> null and owningType.specializesFromLibrary('Occurrences::Occurrence') and not ( isPortion or specializesFromLibrary('Links::SelfLink') or specializesFromLibrary('Occurrences::HappensLink') or isComposite and specializesFromLibrary('Actions::Action') ) Usage
deriveUsageNestedAction Public The ownedActions of a Usage are all its ownedUsages that are ActionUsages. OCL2.0: nestedAction = nestedUsage->selectByKind(ActionUsage) Usage
deriveUsageNestedAllocation Public The ownedAllocations of a Usage are all its ownedUsages that are AllocationUsages. OCL2.0: nestedAllocation = nestedUsage->selectByKind(AllocationUsage) Usage
deriveUsageNestedAnalysisCase Public The ownedAnalysisCases of a Usage are all its ownedUsages that are AnalysisCaseUsages. OCL2.0: nestedAnalysisCase = nestedUsage->selectByKind(AnalysisCaseUsage) Usage
deriveUsageNestedAttribute Public The ownedAttributes of a Usage are all its ownedUsages that are AttributeUsages. OCL2.0: nestedAttribute = nestedUsage->selectByKind(AttributeUsage) Usage
deriveUsageNestedCalculation Public The ownedCalculations of a Usage are all its ownedUsages that are CalculationUsages. OCL2.0: nestedCalculation = nestedUsage->selectByKind(CalculationUsage) Usage
deriveUsageNestedCase Public The ownedCases of a Usage are all its ownedUsages that are CaseUsages. OCL2.0: nestedCase = nestedUsage->selectByKind(CaseUsage) Usage
deriveUsageNestedConcern Public The ownedConcerns of a Usage are all its ownedUsages that are ConcernUsages. OCL2.0: nestedConcern = nestedUsage->selectByKind(ConcernUsage) Usage
deriveUsageNestedConnection Public The ownedConnections of a Usage are all its ownedUsages that are ConnectorAsUsages. OCL2.0: nestedConnection = nestedUsage->selectByKind(ConnectorAsUsage) Usage
deriveUsageNestedConstraint Public The ownedConstraints of a Usage are all its ownedUsages that are ConstraintUsages. OCL2.0: nestedConstraint = nestedUsage->selectByKind(ConstraintUsage) Usage
deriveUsageNestedEnumeration Public The ownedEnumerations of a Usage are all its ownedUsages that are EnumerationUsages. OCL2.0: ownedNested = nestedUsage->selectByKind(EnumerationUsage) Usage
deriveUsageNestedFlow Public The ownedFlows of a Usage are all its ownedUsages that are FlowConnectionUsages. OCL2.0: nestedFlow = nestedUsage->selectByKind(FlowConnectionUsage) Usage
deriveUsageNestedInterface Public The ownedInterfaces of a Usage are all its ownedUsages that are InterfaceUsages. OCL2.0: nestedInterface = nestedUsage->selectByKind(ReferenceUsage) Usage
deriveUsageNestedItem Public The ownedItems of a Usage are all its ownedUsages that are ItemUsages. OCL2.0: nestedItem = nestedUsage->selectByKind(ItemUsage) Usage
deriveUsageNestedMetadata Public The ownedMetadata of a Usage are all its ownedUsages that are MetadataUsages. OCL2.0: nestedMetadata = nestedUsage->selectByKind(MetadataUsage) Usage
deriveUsageNestedOccurrence Public The ownedOccurrences of a Usage are all its ownedUsages that are OccurrenceUsages. OCL2.0: nestedOccurrence = nestedUsage->selectByKind(OccurrenceUsage) Usage
deriveUsageNestedPart Public The ownedParts of a Usage are all its ownedUsages that are PartUsages. OCL2.0: nestedPart = nestedUsage->selectByKind(PartUsage) Usage
deriveUsageNestedPort Public The ownedPorts of a Usage are all its ownedUsages that are PortUsages. OCL2.0: nestedPort = nestedUsage->selectByKind(PortUsage) Usage
deriveUsageNestedReference Public The ownedReferences of a Usage are all its ownedUsages that are ReferenceUsages. OCL2.0: nestedReference = nestedUsage->selectByKind(ReferenceUsage) Usage
deriveUsageNestedRendering Public The ownedRenderings of a Usage are all its ownedUsages that are RenderingUsages. OCL2.0: nestedRendering = nestedUsage->selectByKind(RenderingUsage) Usage
deriveUsageNestedRequirement Public The ownedRequirements of a Usage are all its ownedUsages that are RequirementUsages. OCL2.0: nestedRequirement = nestedUsage->selectByKind(RequirementUsage) Usage
deriveUsageNestedState Public The ownedStates of a Usage are all its ownedUsages that are StateUsages. OCL2.0: nestedState = nestedUsage->selectByKind(StateUsage) Usage
deriveUsageNestedTransition Public The ownedTransitions of a Usage are all its ownedUsages that are TransitionUsages. OCL2.0: nestedTransition = nestedUsage->selectByKind(TransitionUsage) Usage
deriveUsageNestedUsage Public The ownedUsages of a Usage are all its ownedFeatures that are Usages. OCL2.0: nestedUsage = ownedFeature->selectByKind(Usage) Usage
deriveUsageNestedUseCase Public The ownedUseCases of a Usage are all its ownedUsages that are UseCaseUsages. OCL2.0: nestedUseCase = nestedUsage->selectByKind(UseCaseUsage) Usage
deriveUsageNestedVerificationCase Public The ownedValidationCases of a Usage are all its ownedUsages that are ValidationCaseUsages. OCL2.0: nestedVerificationCase = nestedUsage->selectByKind(VerificationCaseUsage) Usage
deriveUsageNestedView Public The ownedViews of a Usage are all its ownedUsages that are ViewUsages. OCL2.0: nestedView = nestedUsage->selectByKind(ViewUsage) Usage
deriveUsageNestedViewpoint Public The ownedViewpoints of a Usage are all its ownedUsages that are ViewpointUsages. OCL2.0: nestedViewpoint = nestedUsage->selectByKind(ViewpointUsage) Usage
deriveUsageUsage Public The usages of a Usage are all its features that are Usages. OCL2.0: usage = feature->selectByKind(Usage) Usage
deriveUsageVariant Public The variants of a Usage are the ownedVariantUsages of its variantMemberships. OCL2.0: variant = variantMembership.ownedVariantUsage Usage
deriveUsageVariantMembership Public The variantMemberships of a Usage are those ownedMemberships that are VariantMemberships. OCL2.0: variantMembership = ownedMembership->selectByKind(VariantMembership) Usage
validateCaseUsageOnlyOneObjective Public A CaseUsage must have at most one featureMembership that is a ObjectiveMembership. OCL2.0: featureMembership-> selectByKind(ObjectiveMembership)-> size() <= 1 CaseUsage
validateCaseUsageOnlyOneSubject Public A CaseUsage must have at most one featureMembership that is a SubjectMembership. OCL2.0: featureMembership-> selectByKind(SubjectMembership)-> size() <= 1 CaseUsage
validateCaseUsageSubjectParameterPosition Public The subjectParameter of a CaseUsage must be its first input. OCL2.0: input->notEmpty() and input->first() = subjectParameter CaseUsage
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateExpressionResultExpressionMembership Public An Expression must have at most one ResultExpressionMembership. OCL2.0: membership->selectByKind(ResultExpressionMembership)->size() <= 1 Expression
validateExpressionResultParameterMembership Public An Expression must have exactly one featureMembership (owned or inherited) that is a ResultParameterMembership. OCL2.0: featureMembership-> selectByKind(ReturnParameterMembership)-> size() = 1 Expression
validateFeatureChainingFeatureConformance Public Each chainingFeature (other than the first) must be featured within the previous chainingFeature. OCL2.0: Sequence{2..chainingFeature->size()}->forAll(i | chainingFeature->at(i).isFeaturedWithin(chainingFeature->at(i-1))) Feature
validateFeatureChainingFeatureNotOne Public A Feature must have either no chainingFeatures or more than one. OCL2.0: chainingFeature->size() <> 1 Feature
validateFeatureChainingFeaturesNotSelf Public A Feature cannot be one of its own chainingFeatures. English: chainingFeature->excludes(self) Feature
validateFeatureConstantIsVariable Public A Feature with isConstant = true must have isVariable = true. OCL2.0: isConstant implies isVariable Feature
validateFeatureCrossFeatureSpecialization Public If this Feature has a crossFeature, then, for any Feature that is redefined by this Feature, the crossFeature must specialize the crossFeature of the redefined end Feature, if this exists. OCL2.0: crossFeature <> null implies ownedRedefinition.redefinedFeature.crossFeature-> forAll(f | f <> null implies crossFeature.specializes(f)) Feature
validateFeatureCrossFeatureType Public The crossFeature of a Feature must have the same types as the Feature. OCL2.0: crossFeature <> null implies crossFeature.type->asSet() = type->asSet() Feature
validateFeatureEndIsConstant Public A Feature with isEnd = true and isVariable = true must have isConstant = true. OCL2.0: isEnd and isVariable implies isConstant Feature
validateFeatureEndMultiplicity Public If a Feature has isEnd = true, then it must have multiplicity 1..1. OCL2.0: isEnd implies multiplicities().allSuperTypes()->flatten()-> selectByKind(MultiplicityRange)->exists(hasBounds(1,1)) Feature
validateFeatureEndNoDirection Public A Feature with isEnd = true must have no direction. OCL2.0: isEnd implied direction = null Feature
validateFeatureEndNotDerivedAbstractCompositeOrPortion Public A Feature with isEnd = true must have all of isDerived = false, isAbstract = false, isComposite = false, and isPortion = false. OCL2.0: isEnd implies not (isDerived or isAbstract or isComposite or isPortion) Feature
validateFeatureIsVariable Public A Feature with isVariable = true must have an owningType that directly or indirectly specializes the Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: isVariable implies owningType <> null and owningType.specializes('Occurrences::Occurrence') Feature
validateFeatureMultiplicityDomain Public If a Feature has a multiplicity, then the featuringTypes of the multiplicity must be the same as those of the Feature itself. OCL2.0: multiplicity <> null implies multiplicity.featuringType = featuringType Feature
validateFeatureOwnedCrossSubsetting Public A Feature must have at most one ownedSubsetting that is a CrossSubsetting. OCL2.0: ownedSubsetting->selectByKind(CrossSubsetting)->size() <= 1 Feature
validateFeatureOwnedReferenceSubsetting Public A Feature must have at most one ownedSubsetting that is an ReferenceSubsetting. OCL2.0: ownedSubsetting->selectByKind(ReferenceSubsetting)->size() <= 1 Feature
validateFeaturePortionNotVariable Public No Documentation Provided OCL2.0: isPortion implies not isVariable Feature
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateOccurrenceUsageIndividualDefinition Public An OccurrenceUsage must have at most one occurrenceDefinition with isIndividual = true. OCL2.0: occurrenceDefinition-> selectByKind(OccurrenceDefinition)-> select(isIndividual).size() <= 1 OccurrenceUsage
validateOccurrenceUsageIndividualUsage Public If an OccurrenceUsage has isIndividual = true, then it must have an individualDefinition. OCL2.0: isIndividual implies individualDefinition <> null OccurrenceUsage
validateOccurrenceUsageIsPortion Public If an OccurrenceUsage has a non-null portionKind, then it must have isPortion = true. OCL2.0: portionKind <> null implies isPortion OccurrenceUsage
validateOccurrenceUsagePortionKind Public If an OccurrenceUsage has a non-null portionKind, then its owningType must be an OccurrenceDefinition or an OccurrenceUsage. OCL2.0: portionKind <> null implies owningType <> null and (owningType.oclIsKindOf(OccurrenceDefinition) or owningType.oclIsKindOf(OccurrenceUsage)) OccurrenceUsage
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type
validateUsageIsReferential Public A Usage that is directed, an end feature or has no featuringTypes must be referential. OCL2.0: direction <> null or isEnd or featuringType->isEmpty() implies isReference Usage
validateUsageVariationIsAbstract Public If a Usage is a variation, then it must be abstract. OCL2.0: isVariation implies isAbstract Usage
validateUsageVariationOwnedFeatureMembership Public If a Usage is a variation, then it must not have any ownedFeatureMemberships. OCL2.0: isVariation implies ownedFeatureMembership->isEmpty() Usage
validateUsageVariationSpecialization Public A variation Usage may not specialize any variation Definition or Usage. OCL2.0: isVariation implies not ownedSpecialization.specific->exists( oclIsKindOf(Definition) and oclAsType(Definition).isVariation or oclIsKindOf(Usage) and oclAsType(Usage).isVariation) Usage

Properties

Name Visibility Type Default Description Owner
actionDefinition Public Behavior [0..*] {derived} {ordered} {redefines: Step.behavior} {many-to-many:ActionUsage.definedAction} null The Behaviors that are the types of this ActionUsage. Nominally, these would be ActionDefinitions, but other kinds of Kernel Behaviors are also allowed, to permit use of Behaviors from the Kernel Model Libraries. ActionUsage
actorParameter Public PartUsage [0..*] {derived} {ordered} {subsetted: Step.parameter} null The parameters of this CaseUsage that represent actors involved in the case. CaseUsage
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
behavior Public Behavior [0..*] {derived} {ordered} {redefined by: Expression.function} {subsetted: Feature.type} {many-to-many:Step.typedStep} null The Behaviors that type this Step. Step
calculationDefinition Public Function [0..1] {derived} {ordered} {redefines: Expression.function} {redefined by: CaseUsage.caseDefinition} null The Function that is the type of this CalculationUsage. Nominally, this would be a CalculationDefinition, but a kernel Function is also allowed, to permit use of Functions from the Kernel Model Libraries. CalculationUsage
caseDefinition Public CaseDefinition [0..1] {derived} {redefines: CalculationUsage.calculationDefinition} null The CaseDefinition that is the type of this CaseUsage. CaseUsage
chainingFeature Public Feature [0..*] {derived} {ordered} {many-to-many:Feature.chainedFeature} null The Feature that are chained together to determine the values of this Feature, derived from the chainingFeatures of the ownedFeatureChainings of this Feature, in the same order. The values of a Feature with chainingFeatures are the same as values of the last Feature in the chain, which can be found by starting with the values of the first Feature (for each instance of the domain of the original Feature), then using each of those as domain instances to find the values of the second Feature in chainingFeatures, and so on, to values of the last Feature. Feature
crossFeature Public Feature [0..1] {derived} null The second chainingFeature of the crossedFeature of the ownedCrossSubsetting of this Feature, if it has one. Semantically, the values of the crossFeature of an end Feature must include all values of the end Feature obtained when navigating from values of the other end Features of the same owningType. Feature
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
definition Public Classifier [0..*] {derived} {ordered} {redefines: Feature.type} {redefined by: OccurrenceUsage.occurrenceDefinition} {many-to-many:Usage.definedUsage} null The Classifiers that are the types of this Usage. Nominally, these are Definitions, but other kinds of Kernel Classifiers are also allowed, to permit use of Classifiers from the Kernel Model Libraries. Usage
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {redefined by: Step.parameter} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
directedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Usage.usageWithDirectedUsage} null The usages of this Usage that are directedFeatures. Usage
direction Public FeatureDirectionKind [0..1] null Indicates how values of this Feature are determined or used (as specified for the FeatureDirectionKind). Feature
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
endOwningType Public Type [0..1] {derived} {subsetted: A_endFeature_typeWithEndFeature.typeWithEndFeature} {subsetted: Feature.owningType} null The Type that is related to this Feature by an EndFeatureMembership in which the Feature is an ownedMemberFeature. Feature
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
featureTarget Public Feature [1..1] {derived} null The last of the chainingFeatures of this Feature, if it has any. Otherwise, this Feature itself. Feature
featuringType Public Type [0..*] {derived} {ordered} {many-to-many:Feature.featureOfType} null Types that feature this Feature, such that any instance in the domain of the Feature must be classified by all of these Types, including at least all the featuringTypes of its typeFeaturings. If the Feature is chained, then the featuringTypes of the first Feature in the chain are also featuringTypes of the chained Feature. Feature
function Public Function [0..1] {derived} {redefines: Step.behavior} {redefined by: CalculationUsage.calculationDefinition} null The Function that types this Expression. Expression
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
individualDefinition Public OccurrenceDefinition [0..1] {derived} {subsetted: OccurrenceUsage.occurrenceDefinition} null The at most one occurrenceDefinition that has isIndividual = true. OccurrenceUsage
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isComposite Public Boolean [1..1] false Whether the Feature is a composite feature of its featuringType. If so, the values of the Feature cannot exist after its featuring instance no longer does and cannot be values of another composite feature that is not on the same featuring instance. Feature
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isConstant Public Boolean [1..1] false If isVariable is true, then whether the value of this Feature nevertheless does not change over all snapshots of its owningType. Feature
isDerived Public Boolean [1..1] false Whether the values of this Feature can always be computed from the values of other Features. Feature
isEnd Public Boolean [1..1] false Whether or not this Feature is an end Feature. An end Feature always has multiplicity 1, mapping each of its domain instances to a single co-domain instance. However, it may have a crossFeature, in which case values of the crossFeature must be the same as those found by navigation across instances of the owningType from values of other end Features to values of this Feature. If the owningType has n end Features, then the multiplicity, ordering, and uniqueness declared for the crossFeature of any one of these end Features constrains the cardinality, ordering, and uniqueness of the collection of values of that Feature reached by navigation when the values of the other n-1 end Features are held fixed. Feature
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isIndividual Public Boolean [1..1] false Whether this OccurrenceUsage represents the usage of the specific individual represented by its individualDefinition. OccurrenceUsage
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isModelLevelEvaluable Public Boolean [1..1] {derived} null Whether this Expression meets the constraints necessary to be evaluated at model level, that is, using metadata within the model. Expression
isOrdered Public Boolean [1..1] false Whether an order exists for the values of this Feature or not. Feature
isPortion Public Boolean [1..1] false Whether the values of this Feature are contained in the space and time of instances of the domain of the Feature and represent the same thing as those instances. Feature
isReference Public Boolean [1..1] {derived} null Whether this Usage is a referential Usage, that is, it has isComposite = false. Usage
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
isUnique Public Boolean [1..1] true Whether or not values for this Feature must have no duplicates or not. Feature
isVariable Public Boolean [1..1] {redefined by: Usage.mayTimeVary} false Whether the value of this Feature might vary over time. That is, whether the Feature may have a different value for each snapshot of an owningType that is an Occurrence. Feature
isVariation Public Boolean [1..1] null Whether this Usage is for a variation point or not. If true, then all the memberships of the Usage must be VariantMemberships. Usage
mayTimeVary Public Boolean [1..1] {derived} {redefines: Feature.isVariable} null Whether this Usage may be time varying (that is, whether it is featured by the snapshots of its owningType, rather than being featured by the owningType itself). However, if isConstant is also true, then the value of the Usage is nevertheless constant over the entire duration of an instance of its owningType (that is, it has the same value on all snapshots). The property mayTimeVary redefines the KerML property Feature::isVariable, making it derived. The property isConstant is inherited from Feature. Usage
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
nestedAction Public ActionUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ActionUsages that are nestedUsages of this Usage. Usage
nestedAllocation Public AllocationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConnection} null The AllocationUsages that are nestedUsages of this Usage. Usage
nestedAnalysisCase Public AnalysisCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The AnalysisCaseUsages that are nestedUsages of this Usage. Usage
nestedAttribute Public AttributeUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The code>AttributeUsages that are nestedUsages of this Usage. Usage
nestedCalculation Public CalculationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAction} null The CalculationUsage that are nestedUsages of this Usage. Usage
nestedCase Public CaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCalculation} null The CaseUsages that are nestedUsages of this Usage. Usage
nestedConcern Public ConcernUsage [0..*] {derived} {subsetted: Usage.nestedRequirement} null The ConcernUsages that are nestedUsages of this Usage. Usage
nestedConnection Public ConnectorAsUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The ConnectorAsUsages that are nestedUsages of this Usage. Note that this list includes BindingConnectorAsUsages, SuccessionAsUsages, and FlowConnectionUsages because these are ConnectorAsUsages even though they are not ConnectionUsages. Usage
nestedConstraint Public ConstraintUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ConstraintUsages that are nestedUsages of this Usage. Usage
nestedEnumeration Public EnumerationUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAttribute} null The code>EnumerationUsages that are nestedUsages of this Usage. Usage
nestedFlow Public FlowUsage [0..*] {derived} {subsetted: Usage.nestedConnection} null The code>FlowUsages that are nestedUsages of this Usage. Usage
nestedInterface Public InterfaceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConnection} null The InterfaceUsages that are nestedUsages of this Usage. Usage
nestedItem Public ItemUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedOccurrence} null The ItemUsages that are nestedUsages of this Usage. Usage
nestedMetadata Public MetadataUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedItem} null The MetadataUsages that are nestedUsages of this of this Usage. Usage
nestedOccurrence Public OccurrenceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The OccurrenceUsages that are nestedUsages of this Usage. Usage
nestedPart Public PartUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedItem} null The PartUsages that are nestedUsages of this Usage. Usage
nestedPort Public PortUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The PortUsages that are nestedUsages of this Usage. Usage
nestedReference Public ReferenceUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedUsage} null The ReferenceUsages that are nestedUsages of this Usage. Usage
nestedRendering Public RenderingUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedPart} null The RenderingUsages that are nestedUsages of this Usage. Usage
nestedRequirement Public RequirementUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedConstraint} null The RequirementUsages that are nestedUsages of this Usage. Usage
nestedState Public StateUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedAction} null The StateUsages that are nestedUsages of this Usage. Usage
nestedTransition Public TransitionUsage [0..*] {derived} {subsetted: Usage.nestedUsage} null The TransitionUsages that are nestedUsages of this Usage. Usage
nestedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.ownedFeature} null The Usages that are ownedFeatures of this Usage. Usage
nestedUseCase Public UseCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The UseCaseUsages that are nestedUsages of this Usage. Usage
nestedVerificationCase Public VerificationCaseUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedCase} null The VerificationCaseUsages that are nestedUsages of this Usage. Usage
nestedView Public ViewUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedPart} null The ViewUsages that are nestedUsages of this Usage. Usage
nestedViewpoint Public ViewpointUsage [0..*] {derived} {ordered} {subsetted: Usage.nestedRequirement} null The ViewpointUsages that are nestedUsages of this Usage. Usage
objectiveRequirement Public RequirementUsage [0..1] {derived} {ordered} {subsetted: Usage.usage} null The RequirementUsage representing the objective of this CaseUsage. CaseUsage
occurrenceDefinition Public Class [0..*] {derived} {ordered} {redefines: Usage.definition} {many-to-many:OccurrenceUsage.definedOccurrence} null The Classes that are the types of this OccurrenceUsage. Nominally, these are OccurrenceDefinitions, but other kinds of kernel Classes are also allowed, to permit use of Classes from the Kernel Model Libraries. OccurrenceUsage
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedCrossSubsetting Public CrossSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a CrossSubsetting}, for which the Feature is the crossingFeature. Feature
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureChaining Public FeatureChaining [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Feature that are FeatureChainings, for which the Feature will be the featureChained. Feature
ownedFeatureInverting Public FeatureInverting [0..*] {composite} {derived} {subsetted: A_invertingFeatureInverting_featureInverted.invertingFeatureInverting} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are FeatureInvertings and for which the Feature is the featureInverted. Feature
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedRedefinition Public Redefinition [0..*] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The ownedSubsettings of this Feature that are Redefinitions, for which the Feature is the redefiningFeature. Feature
ownedReferenceSubsetting Public ReferenceSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a ReferenceSubsetting, for which the Feature is the referencingFeature. Feature
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedSubsetting Public Subsetting [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} {subsetted: A_subsettingFeature_subsetting.subsetting} null The ownedSpecializations of this Feature that are Subsettings, for which the Feature is the subsettingFeature. Feature
ownedTypeFeaturing Public TypeFeaturing [0..*] {composite} {derived} {ordered} {subsetted: A_featureOfType_typeFeaturing.typeFeaturing} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are TypeFeaturings and for which the Feature is the featureOfType. Feature
ownedTyping Public FeatureTyping [0..*] {composite} {derived} {ordered} {subsetted: Type.ownedSpecialization} {subsetted: A_typing_typedFeature.typing} null The ownedSpecializations of this Feature that are FeatureTypings, for which the Feature is the typedFeature. Feature
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningDefinition Public Definition [0..1] {derived} {subsetted: Feature.owningType} null The Definition that owns this Usage (if any). Usage
owningFeatureMembership Public FeatureMembership [0..1] {derived} {subsetted: Element.owningMembership} null The FeatureMembership that owns this Feature as an ownedMemberFeature, determining its owningType. Feature
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
owningType Public Type [0..1] {derived} {subsetted: A_typeWithFeature_feature.typeWithFeature} {subsetted: Element.owningNamespace} {subsetted: Feature.featuringType} null The Type that is the owningType of the owningFeatureMembership of this Feature. Feature
owningUsage Public Usage [0..1] {derived} {subsetted: Feature.owningType} null The Usage in which this Usage is nested (if any). Usage
parameter Public Feature [0..*] {derived} {ordered} {redefines: Type.directedFeature} {many-to-many:Step.parameteredStep} null The parameters of this Step, which are defined as its directedFeatures, whose values are passed into and/or out of a performance of the Step. Step
portionKind Public PortionKind [0..1] null The kind of temporal portion (time slice or snapshot) is represented by this OccurrenceUsage. If portionKind is not null, then the owningType of the OccurrenceUsage must be non-null, and the OccurrenceUsage represents portions of the featuring instance of the owningType. OccurrenceUsage
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
result Public Feature [1..1] {derived} {subsetted: Type.output} {subsetted: Step.parameter} null An output parameter of the Expression whose value is the result of the Expression. The result of an Expression is either inherited from its function or it is related to the Expression via a ReturnParameterMembership, in which case it redefines the result parameter of its function. Expression
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
subjectParameter Public Usage [1..1] {derived} {subsetted: Step.parameter} null The parameter of this CaseUsage that represents its subject. CaseUsage
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
type Public Type [0..*] {derived} {ordered} {redefined by: Usage.definition} {many-to-many:Feature.typedFeature} null Types that restrict the values of this Feature, such that the values must be instances of all the types. The types of a Feature are derived from its typings and the types of its subsettings. If the Feature is chained, then the types of the last Feature in the chain are also types of the chained Feature. Feature
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type
usage Public Usage [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Usage.featuringUsage} null The Usages that are features of this Usage (not necessarily owned). Usage
variant Public Usage [0..*] {derived} {subsetted: Namespace.ownedMember} null The Usages which represent the variants of this Usage as a variation point Usage, if isVariation = true. If isVariation = false, then there must be no variants. Usage
variantMembership Public VariantMembership [0..*] {composite} {derived} {subsetted: Namespace.ownedMembership} null The ownedMemberships of this Usage that are VariantMemberships. If isVariation = true, then this must be all memberships of the Usage. If isVariation = false, then variantMembershipmust be empty. Usage

Class [Class]

Features

Name Description
Fully Qualified Name KerML::Kernel::Classes::Class
Visibility Public
Definition A Class is a Classifier of things (in the universe) that can be distinguished without regard to how they are related to other things (via Features). This means multiple things classified by the same Class can be distinguished, even when they are related other things in exactly the same way.
Is Abstract FALSE
Generalizations Classifier
Specializations Behavior Structure
Containers

Rules

Name Visibilty Description Specification Owner
checkClassSpecialization Public A Class must directly or indirectly specialize the base Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Occurrences::Occurrence') Class
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
deriveClassifierOwnedSubclassification Public The ownedSubclassifications of a Classifier are its ownedSpecializations that are Subclassifications. OCL2.0: ownedSubclassification = ownedSpecialization->selectByKind(Subclassification) Classifier
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
validateClassifierMultiplicityDomain Public If a Classifier has a multiplicity, then the multiplicity must have no featuringTypes (meaning that its domain is implicitly Base::Anything). OCL2.0: multiplicity <> null implies multiplicity.featuringType->isEmpty() Classifier
validateClassSpecialization Public A Class must not specialize a DataType and it can only specialize an Association if it is also itself a kind of Association (such as an AssociationStructure or Interaction). OCL2.0: ownedSpecialization.general-> forAll(not oclIsKindOf(DataType)) and not oclIsKindOf(Association) implies ownedSpecialization.general-> forAll(not oclIsKindOf(Association)) Class
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type

Properties

Name Visibility Type Default Description Owner
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedSubclassification Public Subclassification [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} null The ownedSpecializations of this Classifier that are Subclassifications, for which this Classifier is the subclassifier. Classifier
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type

Classifier [Class]

Features

Name Description
Fully Qualified Name KerML::Core::Classifiers::Classifier
Visibility Public
Definition A Classifier is a Type that classifies:
  • Things (in the universe) regardless of how Features relate them. (These are interpreted semantically as sequences of exactly one thing.)
  • How the above things are related by Features. (These are interpreted semantically as sequences of multiple things, such that the last thing in the sequence is also classified by the Classifier. Note that this means that a Classifier modeled as specializing a Feature cannot classify anything.)
Is Abstract FALSE
Generalizations Type
Specializations Association Class DataType
Containers

Rules

Name Visibilty Description Specification Owner
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
deriveClassifierOwnedSubclassification Public The ownedSubclassifications of a Classifier are its ownedSpecializations that are Subclassifications. OCL2.0: ownedSubclassification = ownedSpecialization->selectByKind(Subclassification) Classifier
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
validateClassifierMultiplicityDomain Public If a Classifier has a multiplicity, then the multiplicity must have no featuringTypes (meaning that its domain is implicitly Base::Anything). OCL2.0: multiplicity <> null implies multiplicity.featuringType->isEmpty() Classifier
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type

Properties

Name Visibility Type Default Description Owner
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedSubclassification Public Subclassification [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} null The ownedSpecializations of this Classifier that are Subclassifications, for which this Classifier is the subclassifier. Classifier
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type

CollectExpression [Class]

Features

Name Description
Fully Qualified Name KerML::Kernel::Expressions::CollectExpression
Visibility Public
Definition A CollectExpression is an OperatorExpression whose operator is "collect", which resolves to the Function ControlFunctions::collect from the Kernel Functions Library.
Is Abstract FALSE
Generalizations OperatorExpression
Specializations
Containers

Rules

Name Visibilty Description Specification Owner
checkExpressionResultBindingConnector Public If an Expression has an Expression owned via a ResultExpressionMembership, then the owning Expression must also own a BindingConnector between its result parameter and the result parameter of the result Expression. OCL2.0: ownedMembership.selectByKind(ResultExpressionMembership)-> forAll(mem | ownedFeature.selectByKind(BindingConnector)-> exists(binding | binding.relatedFeature->includes(result) and binding.relatedFeature->includes(mem.ownedResultExpression.result))) Expression
checkExpressionSpecialization Public An Expression must directly or indirectly specialize the base Expression Performances::evaluations from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::evaluations') Expression
checkExpressionTypeFeaturing Public If this Expression is owned by a FeatureValue, then it must have the same featuringTypes as the featureWithValue of the FeatureValue. OCL2.0: owningMembership <> null and owningMembership.oclIsKindOf(FeatureValue) implies let featureWithValue : Feature = owningMembership.oclAsType(FeatureValue).featureWithValue in featuringType = featureWithValue.featuringType Expression
checkFeatureCrossingSpecialization Public If this Feature has isEnd = true and ownedCrossFeature returns a non-null value, then the crossFeature of the Feature must be the Feature returned from ownedCrossFeature (which implies that this Feature has an appropriate ownedCrossSubsetting to realize this). OCL2.0: ownedCrossFeature() <> null implies crossFeature = ownedCrossFeature() Feature
checkFeatureDataValueSpecialization Public If a Feature has an ownedTyping relationship to a DataType, then it must directly or indirectly specialize Base::dataValues from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(DataType)) implies specializesFromLibrary('Base::dataValues') Feature
checkFeatureEndRedefinition Public If a Feature has isEnd = true and an owningType that is not empty, then, for each direct supertype of its owningType, it must redefine the endFeature at the same position, if any. OCL2.0: isEnd and owningType <> null implies let i : Integer = owningType.ownedEndFeature->indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | supertype.endFeature->size() >= i implies redefines(supertype.endFeature->at(i)) Feature
checkFeatureEndSpecialization Public If a Feature has isEnd = true and an owningType that is an Association or a Connector, then it must directly or indirectly specialize Links::Link::participant from the Kernel Semantic Library. OCL2.0: isEnd and owningType <> null and (owningType.oclIsKindOf(Association) or owningType.oclIsKindOf(Connector)) implies specializesFromLibrary('Links::Link::participant') Feature
checkFeatureFeatureMembershipTypeFeaturing Public If a Feature is owned via a FeatureMembership, then it must have a featuringType for which the operation isFeaturingType returns true. OCL2.0: owningFeatureMembership <> null implies featuringTypes->exists(t | isFeaturingType(t)) Feature
checkFeatureFlowFeatureRedefinition Public If a Feature is the first ownedFeature of a first or second FlowEnd, then it must directly or indirectly specialize either Transfers::Transfer::source::sourceOutput or Transfers::Transfer::target::targetInput, respectively, from the Kernel Semantic Library. OCL2.0: owningType <> null and owningType.oclIsKindOf(FlowEnd) and owningType.ownedFeature->at(1) = self implies let flowType : Type = owningType.owningType in flowType <> null implies let i : Integer = flowType.ownedFeature.indexOf(owningType) in (i = 1 implies redefinesFromLibrary('Transfers::Transfer::source::sourceOutput')) and (i = 2 implies redefinesFromLibrary('Transfers::Transfer::source::targetInput')) Feature
checkFeatureObjectSpecialization Public If a Feature has an ownedTyping relationship to a Structure, then it must directly or indirectly specialize Objects::objects from the Kernel Semantics Library. OCL2.0: ownedTyping.type->exists(selectByKind(Structure)) implies specializesFromLibary('Objects::objects') Feature
checkFeatureOccurrenceSpecialization Public If a Feature has an ownedTyping relationship to a Class, then it must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(Class)) implies specializesFromLibrary('Occurrences::occurrences') Feature
checkFeatureOwnedCrossFeatureRedefinitionSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then, for any end Feature that is redefined by the owning end Feature of this Feature, this Feature must subset the crossFeature of the redefined end Feature, if this exists. OCL2.0: isOwnedCrossFeature() implies ownedSubsetting.subsettedFeature->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature <> null).crossFeature) Feature
checkFeatureOwnedCrossFeatureSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then it must directly or indirectly specialize the types of its owning end Feature. OCL2.0: isOwnedCrossFeature() implies owner.oclAsType(Feature).type->forAll(t | self.specializes(t)) Feature
checkFeatureOwnedCrossFeatureTypeFeaturing Public If this Feature is the ownedCrossFeature of an end Feature, then it must have featuringTypes consistent with the crossing from other end Features of the owningType of its end Feature. OCL2.0: isOwnedCrossFeature() implies let otherEnds : OrderedSet(Feature) = owner.oclAsType(Feature).owningType.endFeature->excluding(self) in if (otherEnds->size() = 1) then featuringType = otherEnds->first().type else featuringType->size() = 1 and featuringType->first().isCartesianProduct() and featuringType->first().asCartesianProduct() = otherEnds.type and featuringType->first().allSupertypes()->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature() <> null).crossFeature().featuringType) endif Feature
checkFeatureParameterRedefinition Public If a Feature is a parameter of an owningType that is a Behavior or Step, but not
  • A result parameter
  • A parameter of an InvocationExpression, with at least one non-implied ownedRedefinition
then, for each direct supertype of its owningType that is also a Behavior or Step, it must redefine the parameter at the same position, if any.
OCL2.0: owningType <> null and not owningFeatureMembership. oclIsKindOf(ReturnParameterMembership) and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step) and (owningType.oclIsKindOf(InvocationExpression) implies not ownedRedefinition->exists(not isImplied)) implies let i : Integer = owningType.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership))-> indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | let ownedParameters : Sequence(Feature) = supertype.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership)) in ownedParameters->size() >= i implies redefines(ownedParameters->at(i)) Feature
checkFeaturePortionSpecialization Public If a Feature has isPortion = true, an ownedTyping relationship to a Class, and an owningType that is a Class or another Feature typed by a Class, then it must directly or indirectly specialize Occurrences::Occurrence::portions from the Kernel Semantic Library. OCL2.0: isPortion and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::portions') Feature
checkFeatureResultRedefinition Public If a Feature is a result parameter of an owningType that is a Function or Expression, then, for each direct supertype of its owningType that is also a Function or Expression, it must redefine the result parameter. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Function) and self = owningType.oclAsType(Function).result or owningType.oclIsKindOf(Expression) and self = owningType.oclAsType(Expression).result) implies owningType.ownedSpecialization.general-> select(oclIsKindOf(Function) or oclIsKindOf(Expression))-> forAll(supertype | redefines( if superType.oclIsKindOf(Function) then superType.oclAsType(Function).result else superType.oclAsType(Expression).result endif) Feature
checkFeatureSpecialization Public A Feature must directly or indirectly specialize Base::things from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::things') Feature
checkFeatureSubobjectSpecialization Public A composite Feature typed by a Structure, and whose ownedType is a Structure or another Feature typed by a Structure must directly or indirectly specialize Objects::Object::subobjects. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Structure)) and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.type->includes(oclIsKindOf(Structure))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureSuboccurrenceSpecialization Public A composite Feature that has an ownedTyping relationship to a Class, and whose ownedType is a Class or another Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureValuationSpecialization Public If a Feature has a FeatureValue, no ownedSpecializations that are not implied, and is not directed, then it must specialize the result of the value Expression of the FeatureValue. OCL2.0: direction = null and ownedSpecializations->forAll(isImplied) implies ownedMembership-> selectByKind(FeatureValue)-> forAll(fv | specializes(fv.value.result)) Feature
checkInvocationExpressionBehaviorBindingConnector Public If the instantiatedType of an InvocationExpression is neither a Function nor a Feature whose type is a Function, then the InvocationExpression must own a BindingConnector between itself and its result parameter. OCL2.0: not instantiatedType.oclIsKindOf(Function) and not (instantiatedType.oclIsKindOf(Feature) and instantiatedType.oclAsType(Feature).type->exists(oclIsKindOf(Function))) implies ownedFeature.selectByKind(BindingConnector)->exists( relatedFeature->includes(self) and relatedFeature->includes(result)) InvocationExpression
checkInvocationExpressionBehaviorResultSpecialization Public If the instantiatedType of an InvocationExpression is neither a Function nor a Feature whose type is a Function, then the result of the InvocationExpression must specialize the instantiatedType. OCL2.0: not instantiatedType.oclIsKindOf(Function) and not (instantiatedType.oclIsKindOf(Feature) and instantiatedType.oclAsType(Feature).type->exists(oclIsKindOf(Function))) implies result.specializes(instantiatedType) InvocationExpression
checkInvocationExpressionDefaultValueBindingConnector Public An InvocationExpression must own a BindingConnector between the featureWithValue and value Expression of any FeatureValue that is the effective default value for a feature of the instantiatedType of the InvocationExpression. OCL2.0: TBD InvocationExpression
checkInvocationExpressionSpecialization Public An InvocationExpression must specialize its instantiatedType. OCL2.0: specializes(instantiatedType) InvocationExpression
checkStepEnclosedPerformanceSpecialization Public AStep whose owningType is a Behavior or another Step must directly or indirectly specialize the Step Performances::Performance::enclosedPerformance. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step)) implies specializesFromLibrary('Performances::Performance::enclosedPerformance') Step
checkStepOwnedPerformanceSpecialization Public A composite Step whose owningType is a Structure or a Feature typed by a Structure must directly or indirectly specialize the Step Objects::Object::ownedPerformance. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Structure)) implies specializesFromLibrary('Objects::Object::ownedPerformance') Step
checkStepSpecialization Public A Step must directly or indirectly specialize the base Step Performances::performances from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::performances') Step
checkStepSubperformanceSpecialization Public AStep whose owningType is a Behavior or another Step, and which is composite, must directly or indirectly specialize the Step Performances::Performance::subperformance. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step)) and self.isComposite implies specializesFromLibrary('Performances::Performance::subperformance') Step
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveExpressionIsModelLevelEvaluable Public Whether an Expression isModelLevelEvaluable is determined by the modelLevelEvaluable() operation. OCL2.0: isModelLevelEvaluable = modelLevelEvaluable(Set(Element){}) Expression
deriveExpressionResult Public The result parameter of an Expression is its parameter owned (possibly in a supertype) via a ReturnParameterMembership (if any). OCL2.0: result = let resultParams : Sequence(Feature) = featureMemberships-> selectByKind(ReturnParameterMembership). ownedMemberParameter in if resultParams->notEmpty() then resultParams->first() else null endif Expression
deriveFeatureChainingFeature Public The chainingFeatures of a Feature are the chainingFeatures of its ownedFeatureChainings. OCL2.0: chainingFeature = ownedFeatureChaining.chainingFeature Feature
deriveFeatureCrossFeature Public The crossFeature of a Feature is the second chainingFeature of the crossedFeature of the ownedCrossSubsetting of the Feature, if any. OCL2.0: crossFeature = if ownedCrossSubsetting = null then null else let chainingFeatures: Sequence(Feature) = ownedCrossSubsetting.crossedFeature.chainingFeature in if chainingFeatures->size() < 2 then null else chainingFeatures->at(2) endif Feature
deriveFeatureFeatureTarget Public If a Feature has no chainingFeatures, then its featureTarget is the Feature itself, otherwise the featureTarget is the last of the chainingFeatures. OCL2.0: featureTarget = if chainingFeature->isEmpty() then self else chainingFeature->last() endif Feature
deriveFeatureFeaturingType Public The featuringTypes of a Feature include the featuringTypes of all the typeFeaturings of the Feature. If the Feature has chainingFeatures, then its featuringTypes also include the featuringTypes of the first chainingFeature. OCL2.0: featuringType = let featuringTypes : OrderedSet(Type) = featuring.type->asOrderedSet() in if chainingFeature->isEmpty() then featuringTypes else featuringTypes-> union(chainingFeature->first().featuringType)-> asOrderedSet() endif Feature
deriveFeatureOwnedCrossSubsetting Public The ownedCrossSubsetting of a Feature is the ownedSubsetting that is a CrossSubsetting, if any. OCL2.0: ownedCrossSubsetting = let crossSubsettings: Sequence(CrossSubsetting) = ownedSubsetting->selectByKind(CrossSubsetting) in if crossSubsettings->isEmpty() then null else crossSubsettings->first() endif Feature
deriveFeatureOwnedFeatureChaining Public The ownedFeatureChainings of a Feature are the ownedRelationships that are FeatureChainings. OCL2.0: ownedFeatureChaining = ownedRelationship->selectByKind(FeatureChaining) Feature
deriveFeatureOwnedFeatureInverting Public The ownedFeatureInvertings of a Feature are its ownedRelationships that are FeatureInvertings. OCL2.0: ownedFeatureInverting = ownedRelationship->selectByKind(FeatureInverting)-> select(fi | fi.featureInverted = self) Feature
deriveFeatureOwnedRedefinition Public The ownedRedefinitions of a Feature are its ownedSubsettings that are Redefinitions. OCL2.0: ownedRedefinition = ownedSubsetting->selectByKind(Redefinition) Feature
deriveFeatureOwnedReferenceSubsetting Public The ownedReferenceSubsetting of a Feature is the first ownedSubsetting that is a ReferenceSubsetting (if any). OCL2.0: ownedReferenceSubsetting = let referenceSubsettings : OrderedSet(ReferenceSubsetting) = ownedSubsetting->selectByKind(ReferenceSubsetting) in if referenceSubsettings->isEmpty() then null else referenceSubsettings->first() endif Feature
deriveFeatureOwnedSubsetting Public The ownedSubsettings of a Feature are its ownedSpecializations that are Subsettings. OCL2.0: ownedSubsetting = ownedSpecialization->selectByKind(Subsetting) Feature
deriveFeatureOwnedTypeFeaturing Public The ownedTypeFeaturings of a Feature are its ownedRelationships that are TypeFeaturings and which have the Feature as their featureOfType. OCL2.0: ownedTypeFeaturing = ownedRelationship->selectByKind(TypeFeaturing)-> select(tf | tf.featureOfType = self) Feature
deriveFeatureOwnedTyping Public The ownedTypings of a Feature are its ownedSpecializations that are FeatureTypings. OCL2.0: ownedTyping = ownedGeneralization->selectByKind(FeatureTyping) Feature
deriveFeatureType Public The types of a Feature are the union of the types of its typings and the types of the Features it subsets, with all redundant supertypes removed. If the Feature has chainingFeatures, then the union also includes the types of the last chainingFeature. OCL2.0: type = let types : OrderedSet(Types) = OrderedSet{self}-> -- Note: The closure operation automatically handles circular relationships. closure(typingFeatures()).typing.type->asOrderedSet() in types->reject(t1 | types->exist(t2 | t2 <> t1 and t2.specializes(t1))) Feature
deriveInstantiationExpressionInstantiatedType Public The instantiatedType of an InstantiationExpression is given by the result of the instantiatedType() operation. OCL2.0: instantiatedType = instantiatedType() InstantiationExpression
deriveInvocationExpressionArgument Public The arguments of an InvocationExpression are the value Expressions of the FeatureValues of its ownedFeatures, in an order corresponding to the order of the input parameters of the instantiatedType that the ownedFeatures redefine. OCL2.0: instantiatedType.input->collect(inp | ownedFeatures->select(redefines(inp)).valuation-> select(v | v <> null).value ) InvocationExpression
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveStepBehavior Public The behaviors of a Step are all its types that are Behaviors. OCL2.0: behavior = type->selectByKind(Behavior) Step
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
validateCollectExpressionOperator Public The operator of a CollectExpression must be "collect". OCL2.0: operator = 'collect' CollectExpression
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateExpressionResultExpressionMembership Public An Expression must have at most one ResultExpressionMembership. OCL2.0: membership->selectByKind(ResultExpressionMembership)->size() <= 1 Expression
validateExpressionResultParameterMembership Public An Expression must have exactly one featureMembership (owned or inherited) that is a ResultParameterMembership. OCL2.0: featureMembership-> selectByKind(ReturnParameterMembership)-> size() = 1 Expression
validateFeatureChainingFeatureConformance Public Each chainingFeature (other than the first) must be featured within the previous chainingFeature. OCL2.0: Sequence{2..chainingFeature->size()}->forAll(i | chainingFeature->at(i).isFeaturedWithin(chainingFeature->at(i-1))) Feature
validateFeatureChainingFeatureNotOne Public A Feature must have either no chainingFeatures or more than one. OCL2.0: chainingFeature->size() <> 1 Feature
validateFeatureChainingFeaturesNotSelf Public A Feature cannot be one of its own chainingFeatures. English: chainingFeature->excludes(self) Feature
validateFeatureConstantIsVariable Public A Feature with isConstant = true must have isVariable = true. OCL2.0: isConstant implies isVariable Feature
validateFeatureCrossFeatureSpecialization Public If this Feature has a crossFeature, then, for any Feature that is redefined by this Feature, the crossFeature must specialize the crossFeature of the redefined end Feature, if this exists. OCL2.0: crossFeature <> null implies ownedRedefinition.redefinedFeature.crossFeature-> forAll(f | f <> null implies crossFeature.specializes(f)) Feature
validateFeatureCrossFeatureType Public The crossFeature of a Feature must have the same types as the Feature. OCL2.0: crossFeature <> null implies crossFeature.type->asSet() = type->asSet() Feature
validateFeatureEndIsConstant Public A Feature with isEnd = true and isVariable = true must have isConstant = true. OCL2.0: isEnd and isVariable implies isConstant Feature
validateFeatureEndMultiplicity Public If a Feature has isEnd = true, then it must have multiplicity 1..1. OCL2.0: isEnd implies multiplicities().allSuperTypes()->flatten()-> selectByKind(MultiplicityRange)->exists(hasBounds(1,1)) Feature
validateFeatureEndNoDirection Public A Feature with isEnd = true must have no direction. OCL2.0: isEnd implied direction = null Feature
validateFeatureEndNotDerivedAbstractCompositeOrPortion Public A Feature with isEnd = true must have all of isDerived = false, isAbstract = false, isComposite = false, and isPortion = false. OCL2.0: isEnd implies not (isDerived or isAbstract or isComposite or isPortion) Feature
validateFeatureIsVariable Public A Feature with isVariable = true must have an owningType that directly or indirectly specializes the Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: isVariable implies owningType <> null and owningType.specializes('Occurrences::Occurrence') Feature
validateFeatureMultiplicityDomain Public If a Feature has a multiplicity, then the featuringTypes of the multiplicity must be the same as those of the Feature itself. OCL2.0: multiplicity <> null implies multiplicity.featuringType = featuringType Feature
validateFeatureOwnedCrossSubsetting Public A Feature must have at most one ownedSubsetting that is a CrossSubsetting. OCL2.0: ownedSubsetting->selectByKind(CrossSubsetting)->size() <= 1 Feature
validateFeatureOwnedReferenceSubsetting Public A Feature must have at most one ownedSubsetting that is an ReferenceSubsetting. OCL2.0: ownedSubsetting->selectByKind(ReferenceSubsetting)->size() <= 1 Feature
validateFeaturePortionNotVariable Public No Documentation Provided OCL2.0: isPortion implies not isVariable Feature
validateInstantiationExpressionInstantiatedType Public An InstantiationExpression must have an InstantiatedType. OCL2.0: instantiatedType() <> null InstantiationExpression
validateInstantiationExpressionResult Public An InstantiationExpression must own its result parameter. OCL2.0: result.owningType = self InstantiationExpression
validateInvocationExpressionInstantiatedType Public The instantiatedType of an InvocationExpression must be either a Behavior or a Feature with a single type, which is a Behavior. OCL2.0: instantiatedType.oclIsKindOf(Behavior) or instantiatedType.oclIsKindOf(Feature) and instantiatedType.type->exists(oclIsKindOf(Behavior)) and instantiatedType.type->size(1) InvocationExpression
validateInvocationExpressionNoDuplicateParameterRedefinition Public Two different ownedFeatures of an InvocationExpression must not redefine the same feature of the instantiatedType of the InvocationExpression. OCL2.0: let features : OrderedSet(Feature) = instantiatedType.feature in input->forAll(inp1 | input->forAll(inp2 | inp1 <> inp2 implies inp1.ownedRedefinition.redefinedFeature-> intersection(inp2.ownedRedefinition.redefinedFeature)-> intersection(features)->isEmpty())) InvocationExpression
validateInvocationExpressionOwnedFeatures Public Other than its result, all the ownedFeatures of an InvocationExpression must have direction = in. OCL2.0: ownedFeature->forAll(f | f <> result implies f.direction = FeatureDirectionKind::_'in') InvocationExpression
validateInvocationExpressionParameterRedefinition Public Each input parameter of an InvocationExpression must redefine exactly one input parameter of the instantiatedType of the InvocationExpression. OCL2.0: let parameters : OrderedSet(Feature) = instantiatedType.input in input->forAll(inp | inp.ownedRedefinition.redefinedFeature-> intersection(parameters)->size() = 1) InvocationExpression
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type

Properties

Name Visibility Type Default Description Owner
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
argument Public Expression [0..*] {derived} {ordered} null The Expressions whose results are bound to features of the instantiatedType. The arguments are ordered consistent with the order of the features, though they may not be one-to-one with all the features. Note. The derivation of argument is given in the concrete subclasses of InstantiationExpression. InstantiationExpression
behavior Public Behavior [0..*] {derived} {ordered} {redefined by: Expression.function} {subsetted: Feature.type} {many-to-many:Step.typedStep} null The Behaviors that type this Step. Step
chainingFeature Public Feature [0..*] {derived} {ordered} {many-to-many:Feature.chainedFeature} null The Feature that are chained together to determine the values of this Feature, derived from the chainingFeatures of the ownedFeatureChainings of this Feature, in the same order. The values of a Feature with chainingFeatures are the same as values of the last Feature in the chain, which can be found by starting with the values of the first Feature (for each instance of the domain of the original Feature), then using each of those as domain instances to find the values of the second Feature in chainingFeatures, and so on, to values of the last Feature. Feature
crossFeature Public Feature [0..1] {derived} null The second chainingFeature of the crossedFeature of the ownedCrossSubsetting of this Feature, if it has one. Semantically, the values of the crossFeature of an end Feature must include all values of the end Feature obtained when navigating from values of the other end Features of the same owningType. Feature
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {redefined by: Step.parameter} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
direction Public FeatureDirectionKind [0..1] null Indicates how values of this Feature are determined or used (as specified for the FeatureDirectionKind). Feature
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
endOwningType Public Type [0..1] {derived} {subsetted: A_endFeature_typeWithEndFeature.typeWithEndFeature} {subsetted: Feature.owningType} null The Type that is related to this Feature by an EndFeatureMembership in which the Feature is an ownedMemberFeature. Feature
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
featureTarget Public Feature [1..1] {derived} null The last of the chainingFeatures of this Feature, if it has any. Otherwise, this Feature itself. Feature
featuringType Public Type [0..*] {derived} {ordered} {many-to-many:Feature.featureOfType} null Types that feature this Feature, such that any instance in the domain of the Feature must be classified by all of these Types, including at least all the featuringTypes of its typeFeaturings. If the Feature is chained, then the featuringTypes of the first Feature in the chain are also featuringTypes of the chained Feature. Feature
function Public Function [0..1] {derived} {redefines: Step.behavior} null The Function that types this Expression. Expression
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
instantiatedType Public Type [1..1] {derived} {subsetted: Namespace.member} null The Type that is being instantiated. InstantiationExpression
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isComposite Public Boolean [1..1] false Whether the Feature is a composite feature of its featuringType. If so, the values of the Feature cannot exist after its featuring instance no longer does and cannot be values of another composite feature that is not on the same featuring instance. Feature
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isConstant Public Boolean [1..1] false If isVariable is true, then whether the value of this Feature nevertheless does not change over all snapshots of its owningType. Feature
isDerived Public Boolean [1..1] false Whether the values of this Feature can always be computed from the values of other Features. Feature
isEnd Public Boolean [1..1] false Whether or not this Feature is an end Feature. An end Feature always has multiplicity 1, mapping each of its domain instances to a single co-domain instance. However, it may have a crossFeature, in which case values of the crossFeature must be the same as those found by navigation across instances of the owningType from values of other end Features to values of this Feature. If the owningType has n end Features, then the multiplicity, ordering, and uniqueness declared for the crossFeature of any one of these end Features constrains the cardinality, ordering, and uniqueness of the collection of values of that Feature reached by navigation when the values of the other n-1 end Features are held fixed. Feature
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isModelLevelEvaluable Public Boolean [1..1] {derived} null Whether this Expression meets the constraints necessary to be evaluated at model level, that is, using metadata within the model. Expression
isOrdered Public Boolean [1..1] false Whether an order exists for the values of this Feature or not. Feature
isPortion Public Boolean [1..1] false Whether the values of this Feature are contained in the space and time of instances of the domain of the Feature and represent the same thing as those instances. Feature
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
isUnique Public Boolean [1..1] true Whether or not values for this Feature must have no duplicates or not. Feature
isVariable Public Boolean [1..1] false Whether the value of this Feature might vary over time. That is, whether the Feature may have a different value for each snapshot of an owningType that is an Occurrence. Feature
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
operator Public String [1..1] {redefines: OperatorExpression.operator} collect No Documentation Provided CollectExpression
operator Public String [1..1] {redefined by: CollectExpression.operator} null An operator symbol that names a corresponding Function from one of the standard packages from the Kernel Function Library . OperatorExpression
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedCrossSubsetting Public CrossSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a CrossSubsetting}, for which the Feature is the crossingFeature. Feature
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureChaining Public FeatureChaining [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Feature that are FeatureChainings, for which the Feature will be the featureChained. Feature
ownedFeatureInverting Public FeatureInverting [0..*] {composite} {derived} {subsetted: A_invertingFeatureInverting_featureInverted.invertingFeatureInverting} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are FeatureInvertings and for which the Feature is the featureInverted. Feature
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedRedefinition Public Redefinition [0..*] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The ownedSubsettings of this Feature that are Redefinitions, for which the Feature is the redefiningFeature. Feature
ownedReferenceSubsetting Public ReferenceSubsetting [0..1] {composite} {derived} {subsetted: Feature.ownedSubsetting} null The one ownedSubsetting of this Feature, if any, that is a ReferenceSubsetting, for which the Feature is the referencingFeature. Feature
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedSubsetting Public Subsetting [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} {subsetted: A_subsettingFeature_subsetting.subsetting} null The ownedSpecializations of this Feature that are Subsettings, for which the Feature is the subsettingFeature. Feature
ownedTypeFeaturing Public TypeFeaturing [0..*] {composite} {derived} {ordered} {subsetted: A_featureOfType_typeFeaturing.typeFeaturing} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Feature that are TypeFeaturings and for which the Feature is the featureOfType. Feature
ownedTyping Public FeatureTyping [0..*] {composite} {derived} {ordered} {subsetted: Type.ownedSpecialization} {subsetted: A_typing_typedFeature.typing} null The ownedSpecializations of this Feature that are FeatureTypings, for which the Feature is the typedFeature. Feature
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningFeatureMembership Public FeatureMembership [0..1] {derived} {subsetted: Element.owningMembership} null The FeatureMembership that owns this Feature as an ownedMemberFeature, determining its owningType. Feature
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
owningType Public Type [0..1] {derived} {subsetted: A_typeWithFeature_feature.typeWithFeature} {subsetted: Element.owningNamespace} {subsetted: Feature.featuringType} null The Type that is the owningType of the owningFeatureMembership of this Feature. Feature
parameter Public Feature [0..*] {derived} {ordered} {redefines: Type.directedFeature} {many-to-many:Step.parameteredStep} null The parameters of this Step, which are defined as its directedFeatures, whose values are passed into and/or out of a performance of the Step. Step
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
result Public Feature [1..1] {derived} {subsetted: Type.output} {subsetted: Step.parameter} null An output parameter of the Expression whose value is the result of the Expression. The result of an Expression is either inherited from its function or it is related to the Expression via a ReturnParameterMembership, in which case it redefines the result parameter of its function. Expression
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
type Public Type [0..*] {derived} {ordered} {many-to-many:Feature.typedFeature} null Types that restrict the values of this Feature, such that the values must be instances of all the types. The types of a Feature are derived from its typings and the types of its subsettings. If the Feature is chained, then the types of the last Feature in the chain are also types of the chained Feature. Feature
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type

Comment [Class]

Features

Name Description
Fully Qualified Name KerML::Root::Annotations::Comment
Visibility Public
Definition A Comment is an AnnotatingElement whose body in some way describes its annotatedElements.
Is Abstract FALSE
Generalizations AnnotatingElement
Specializations Documentation
Containers

Rules

Name Visibilty Description Specification Owner
deriveAnnotatingElementAnnotatedElement Public If an AnnotatingElement has annotations, then its annotatedElements are the annotatedElements of all its annotations. Otherwise, it's single annotatedElement is its owningNamespace. OCL2.0: annotatedElement = if annotation->notEmpty() then annotation.annotatedElement else Sequence{owningNamespace} endif AnnotatingElement
deriveAnnotatingElementAnnotation Public The annotations of an AnnotatingElement are its owningAnnotatingRelationship (if any) followed by all its ownedAnnotatingRelationships. OCL2.0: annotation = if owningAnnotatingRelationship = null then ownedAnnotatingRelationship else owningAnnotatingRelationship->prepend(owningAnnotatingRelationship) endif AnnotatingElement
deriveAnnotatingElementOwnedAnnotatingRelationship Public The ownedAnnotatingRelationships of an AnnotatingElement are its ownedRelationships that are Annotations, for which the AnnotatingElement is not the annotatedElement. OCL2.0: ownedAnnotatingRelationship = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement <> self) AnnotatingElement
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element

Properties

Name Visibility Type Default Description Owner
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
annotatedElement Public Element [1..*] {derived} {ordered} {many-to-many:AnnotatingElement.annotatingElement} null The Elements that are annotated by this AnnotatingElement. If annotation is not empty, these are the annotatedElements of the annotations. If annotation is empty, then it is the owningNamespace of the AnnotatingElement. AnnotatingElement
annotation Public Annotation [0..*] {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} null The Annotations that relate this AnnotatingElement to its annotatedElements. This includes the owningAnnotatingRelationship (if any) followed by all the ownedAnnotatingRelationshps. AnnotatingElement
body Public String [1..1] null The annotation text for the Comment. Comment
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
locale Public String [0..1] null Identification of the language of the body text and, optionally, the region and/or encoding. The format shall be a POSIX locale conformant to ISO/IEC 15897, with the format [language[_territory][.codeset][@modifier]]. Comment
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
ownedAnnotatingRelationship Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: AnnotatingElement.annotation} {subsetted: Element.ownedRelationship} null The ownedRelationships of this AnnotatingElement that are Annotations, for which this AnnotatingElement is the annotatingElement. AnnotatingElement
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningAnnotatingRelationship Public Annotation [0..1] {derived} {subsetted: Element.owningRelationship} {subsetted: AnnotatingElement.annotation} null The owningRelationship of this AnnotatingRelationship, if it is an Annotation AnnotatingElement
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element

ConcernDefinition [Class]

Features

Name Description
Fully Qualified Name SysML::Systems::Requirements::ConcernDefinition
Visibility Public
Definition A ConcernDefinition is a RequirementDefinition that one or more stakeholders may be interested in having addressed. These stakeholders are identified by the ownedStakeholdersof the ConcernDefinition.
Is Abstract FALSE
Generalizations RequirementDefinition
Specializations
Containers

Rules

Name Visibilty Description Specification Owner
checkBehaviorSpecialization Public A Behavior must directly or indirectly specialize the base Behavior Performances::Performance from the Kernel Semantic Library. English: specializesFromLibrary('Performances::Performance') Behavior
checkClassSpecialization Public A Class must directly or indirectly specialize the base Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Occurrences::Occurrence') Class
checkConcernDefinitionSpecialization Public A ConcernDefinition must directly or indirectly specialize the base ConcernDefinition Requirements::ConcernCheck from the Systems Model Library. OCL2.0: specializesFromLibrary('Requirements::ConcernCheck') ConcernDefinition
checkConstraintDefinitionSpecialization Public A ConstraintDefinition must directly or indirectly specialize the base ConstraintDefinition Constraints::ConstraintCheck from the Systems Model Library. OCL2.0: specializesFromLibrary('Constraints::ConstraintCheck') ConstraintDefinition
checkFunctionResultBindingConnector Public If a Function has an Expression owned via a ResultExpressionMembership, then the owning Function must also own a BindingConnector between its result parameter and the result parameter of the result Expression. OCL2.0: ownedMembership.selectByKind(ResultExpressionMembership)-> forAll(mem | ownedFeature.selectByKind(BindingConnector)-> exists(binding | binding.relatedFeature->includes(result) and binding.relatedFeature->includes(mem.ownedResultExpression.result))) Function
checkFunctionSpecialization Public A Function must directly or indirectly specialize the base Function Performances::Evaluation from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::Evaluation') Function
checkOccurrenceDefinitionIndividualSpecialization Public An OccurrenceDefinition with isIndividual = true must directly or indirectly specialize Occurrences::Life from the Kernel Semantic Library. OCL2.0: isIndividual implies specializesFromLibrary('Occurrences::Life') OccurrenceDefinition
checkOccurrenceDefinitionMultiplicitySpecialization Public An OccurrenceDefinition with isIndividual = true must have a multiplicity that specializes Base::zeroOrOne from the Kernel Semantic Library. OCL2.0: isIndividual implies multiplicity <> null and multiplicity.specializesFromLibrary('Base::zeroOrOne') OccurrenceDefinition
checkPredicateSpecialization Public A Predicate must directly or indirectly specialize the base Predicate Performances::BooleanEvaluation from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::BooleanEvaluation') Predicate
checkRequirementDefinitionSpecialization Public A RequirementDefinition must directly or indirectly specialize the base RequirementDefinition Requirements::RequirementCheck from the Systems Model Library. OCL2.0: specializesFromLibrary('Requirements::RequirementCheck') RequirementDefinition
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
deriveBehaviorStep Public The steps of a Behavior are its features that are Steps. OCL2.0: step = feature->selectByKind(Step) Behavior
deriveClassifierOwnedSubclassification Public The ownedSubclassifications of a Classifier are its ownedSpecializations that are Subclassifications. OCL2.0: ownedSubclassification = ownedSpecialization->selectByKind(Subclassification) Classifier
deriveDefinitionDirectedUsage Public The directedUsages of a Definition are all its directedFeatures that are Usages. OCL2.0: directedUsage = directedFeature->selectByKind(Usage) Definition
deriveDefinitionOwnedAction Public The ownedActions of a Definition are all its ownedUsages that are ActionUsages. OCL2.0: ownedAction = ownedUsage->selectByKind(ActionUsage) Definition
deriveDefinitionOwnedAllocation Public The ownedAllocations of a Definition are all its ownedUsages that are AllocationUsages. OCL2.0: ownedAllocation = ownedUsage->selectByKind(AllocationUsage) Definition
deriveDefinitionOwnedAnalysisCase Public The ownedAnalysisCases of a Definition are all its ownedUsages that are AnalysisCaseUsages. OCL2.0: ownedAnalysisCase = ownedUsage->selectByKind(AnalysisCaseUsage) Definition
deriveDefinitionOwnedAttribute Public The ownedAttributes of a Definition are all its ownedUsages that are AttributeUsages. OCL2.0: ownedAttribute = ownedUsage->selectByKind(AttributeUsage) Definition
deriveDefinitionOwnedCalculation Public The ownedCalculations of a Definition are all its ownedUsages that are CalculationUsages. OCL2.0: ownedCalculation = ownedUsage->selectByKind(CalculationUsage) Definition
deriveDefinitionOwnedCase Public The ownedCases of a Definition are all its ownedUsages that are CaseUsages. OCL2.0: ownedCase = ownedUsage->selectByKind(CaseUsage) Definition
deriveDefinitionOwnedConcern Public The ownedConcerns of a Definition are all its ownedUsages that are ConcernUsages. OCL2.0: ownedConcern = ownedUsage->selectByKind(ConcernUsage) Definition
deriveDefinitionOwnedConnection Public The ownedConnections of a Definition are all its ownedUsages that are ConnectorAsUsages. OCL2.0: ownedConnection = ownedUsage->selectByKind(ConnectorAsUsage) Definition
deriveDefinitionOwnedConstraint Public The ownedConstraints of a Definition are all its ownedUsages that are ConstraintUsages. OCL2.0: ownedConstraint = ownedUsage->selectByKind(ConstraintUsage) Definition
deriveDefinitionOwnedEnumeration Public The ownedEnumerations of a Definition are all its ownedUsages that are EnumerationUsages. OCL2.0: ownedEnumeration = ownedUsage->selectByKind(EnumerationUsage) Definition
deriveDefinitionOwnedFlow Public The ownedFlows of a Definition are all its ownedUsages that are FlowUsages. OCL2.0: ownedFlow = ownedUsage->selectByKind(FlowConnectionUsage) Definition
deriveDefinitionOwnedInterface Public The ownedInterfaces of a Definition are all its ownedUsages that are InterfaceUsages. OCL2.0: ownedInterface = ownedUsage->selectByKind(ReferenceUsage) Definition
deriveDefinitionOwnedItem Public The ownedItems of a Definition are all its ownedUsages that are ItemUsages. OCL2.0: ownedItem = ownedUsage->selectByKind(ItemUsage) Definition
deriveDefinitionOwnedMetadata Public The ownedMetadata of a Definition are all its ownedUsages that are MetadataUsages. OCL2.0: ownedMetadata = ownedUsage->selectByKind(MetadataUsage) Definition
deriveDefinitionOwnedOccurrence Public The ownedOccurrences of a Definition are all its ownedUsages that are OccurrenceUsages. OCL2.0: ownedOccurrence = ownedUsage->selectByKind(OccurrenceUsage) Definition
deriveDefinitionOwnedPart Public The ownedParts of a Definition are all its ownedUsages that are PartUsages. OCL2.0: ownedPart = ownedUsage->selectByKind(PartUsage) Definition
deriveDefinitionOwnedPort Public The ownedPorts of a Definition are all its ownedUsages that are PortUsages. OCL2.0: ownedPort = ownedUsage->selectByKind(PortUsage) Definition
deriveDefinitionOwnedReference Public The ownedReferences of a Definition are all its ownedUsages that are ReferenceUsages. OCL2.0: ownedReference = ownedUsage->selectByKind(ReferenceUsage) Definition
deriveDefinitionOwnedRendering Public The ownedRenderings of a Definition are all its ownedUsages that are RenderingUsages. OCL2.0: ownedRendering = ownedUsage->selectByKind(RenderingUsage) Definition
deriveDefinitionOwnedRequirement Public The ownedRequirements of a Definition are all its ownedUsages that are RequirementUsages. OCL2.0: ownedRequirement = ownedUsage->selectByKind(RequirementUsage) Definition
deriveDefinitionOwnedState Public The ownedStates of a Definition are all its ownedUsages that are StateUsages. OCL2.0: ownedState = ownedUsage->selectByKind(StateUsage) Definition
deriveDefinitionOwnedTransition Public The ownedTransitions of a Definition are all its ownedUsages that are TransitionUsages. OCL2.0: ownedTransition = ownedUsage->selectByKind(TransitionUsage) Definition
deriveDefinitionOwnedUsage Public The ownedUsages of a Definition are all its ownedFeatures that are Usages. OCL2.0: ownedUsage = ownedFeature->selectByKind(Usage) Definition
deriveDefinitionOwnedUseCase Public The ownedUseCases of a Definition are all its ownedUsages that are UseCaseUsages. OCL2.0: ownedUseCase = ownedUsage->selectByKind(UseCaseUsage) Definition
deriveDefinitionOwnedVerificationCase Public The ownedValidationCases of a Definition are all its ownedUsages that are ValidationCaseUsages. OCL2.0: ownedVerificationCase = ownedUsage->selectByKind(VerificationCaseUsage) Definition
deriveDefinitionOwnedView Public The ownedViews of a Definition are all its ownedUsages that are ViewUsages. OCL2.0: ownedView = ownedUsage->selectByKind(ViewUsage) Definition
deriveDefinitionOwnedViewpoint Public The ownedViewpoints of a Definition are all its ownedUsages that are ViewpointUsages. OCL2.0: ownedViewpoint = ownedUsage->selectByKind(ViewpointUsage) Definition
deriveDefinitionUsage Public The usages of a Definition are all its features that are Usages. OCL2.0: usage = feature->selectByKind(Usage) Definition
deriveDefinitionVariant Public The variants of a Definition are the ownedVariantUsages of its variantMemberships. OCL2.0: variant = variantMembership.ownedVariantUsage Definition
deriveDefinitionVariantMembership Public The variantMemberships of a Definition are those ownedMemberships that are VariantMemberships. OCL2.0: variantMembership = ownedMembership->selectByKind(VariantMembership) Definition
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveFunctionResult Public The result parameter of a Function is its parameter owned (possibly in a supertype) via a ReturnParameterMembership (if any). OCL2.0: result = let resultParams : Sequence(Feature) = featureMemberships-> selectByKind(ReturnParameterMembership). ownedMemberParameter in if resultParams->notEmpty() then resultParams->first() else null endif Function
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveRequirementDefinitionActorParameter Public The actorParameters of a RequirementDefinition are the ownedActorParameters of the ActorMemberships of the RequirementDefinition. OCL2.0: actorParameter = featureMembership-> selectByKind(ActorMembership). ownedActorParameter RequirementDefinition
deriveRequirementDefinitionAssumedConstraint Public The assumedConstraints of a RequirementDefinition are the ownedConstraints of the RequirementConstraintMemberships of the RequirementDefinition with kind = assumption. OCL2.0: assumedConstraint = ownedFeatureMembership-> selectByKind(RequirementConstraintMembership)-> select(kind = RequirementConstraintKind::assumption). ownedConstraint RequirementDefinition
deriveRequirementDefinitionFramedConcern Public The framedConcerns of a RequirementDefinition are the ownedConcerns of the FramedConcernMemberships of the RequirementDefinition. OCL2.0: framedConcern = featureMembership-> selectByKind(FramedConcernMembership). ownedConcern RequirementDefinition
deriveRequirementDefinitionRequiredConstraint Public The requiredConstraints of a RequirementDefinition are the ownedConstraints of the RequirementConstraintMemberships of the RequirementDefinition with kind = requirement. OCL2.0: requiredConstraint = ownedFeatureMembership-> selectByKind(RequirementConstraintMembership)-> select(kind = RequirementConstraintKind::requirement). ownedConstraint RequirementDefinition
deriveRequirementDefinitionStakeholderParameter Public The stakeHolderParameters of a RequirementDefinition are the ownedStakeholderParameters of the StakeholderMemberships of the RequirementDefinition. OCL2.0: stakeholderParameter = featureMembership-> selectByKind(StakholderMembership). ownedStakeholderParameter RequirementDefinition
deriveRequirementDefinitionSubjectParameter Public The subjectParameter of a RequirementDefinition is the ownedSubjectParameter of its SubjectMembership (if any). OCL2.0: subjectParameter = let subjects : OrderedSet(SubjectMembership) = featureMembership->selectByKind(SubjectMembership) in if subjects->isEmpty() then null else subjects->first().ownedSubjectParameter endif RequirementDefinition
deriveRequirementDefinitionText Public The texts of aRequirementDefinition are the bodies of the documentation of the RequirementDefinition. OCL2.0: text = documentation.body RequirementDefinition
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
validateBehaviorSpecialization Public A Behavior must not specialize a Structure. OCL2.0: ownedSpecialization.general->forAll(not oclIsKindOf(Structure)) Behavior
validateClassifierMultiplicityDomain Public If a Classifier has a multiplicity, then the multiplicity must have no featuringTypes (meaning that its domain is implicitly Base::Anything). OCL2.0: multiplicity <> null implies multiplicity.featuringType->isEmpty() Classifier
validateClassSpecialization Public A Class must not specialize a DataType and it can only specialize an Association if it is also itself a kind of Association (such as an AssociationStructure or Interaction). OCL2.0: ownedSpecialization.general-> forAll(not oclIsKindOf(DataType)) and not oclIsKindOf(Association) implies ownedSpecialization.general-> forAll(not oclIsKindOf(Association)) Class
validateDefinitionVariationIsAbstract Public If a Definition is a variation, then it must be abstract. OCL2.0: isVariation implies isAbstract Definition
validateDefinitionVariationOwnedFeatureMembership Public If a Definition is a variation, then all it must not have any ownedFeatureMemberships. OCL2.0: isVariation implies ownedFeatureMembership->isEmpty() Definition
validateDefinitionVariationSpecialization Public A variation Definition may not specialize any other variation Definition. OCL2.0: isVariation implies not ownedSpecialization.specific->exists( oclIsKindOf(Definition) and oclAsType(Definition).isVariation) Definition
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateFunctionResultExpressionMembership Public A Function must have at most one ResultExpressionMembership. OCL2.0: membership->selectByKind(ResultExpressionMembership)->size() <= 1 Function
validateFunctionResultParameterMembership Public A Function must have exactly one featureMembership (owned or inherited) that is a ResultParameterMembership. OCL2.0: featureMembership-> selectByKind(ReturnParameterMembership)-> size() = 1 Function
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateRequirementDefinitionOnlyOneSubject Public A RequirementDefinition must have at most one featureMembership that is a SubjectMembership. OCL2.0: featureMembership-> selectByKind(SubjectMembership)-> size() <= 1 RequirementDefinition
validateRequirementDefinitionSubjectParameterPosition Public The subjectParameter of a RequirementDefinition must be its first input. OCL2.0: input->notEmpty() and input->first() = subjectParameter RequirementDefinition
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type

Properties

Name Visibility Type Default Description Owner
actorParameter Public PartUsage [0..*] {derived} {ordered} {subsetted: Behavior.parameter} null The parameters of this RequirementDefinition that represent actors involved in the requirement. RequirementDefinition
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
assumedConstraint Public ConstraintUsage [0..*] {derived} {ordered} {subsetted: Type.ownedFeature} null The owned ConstraintUsages that represent assumptions of this RequirementDefinition, which are the ownedConstraints of the RequirementConstraintMemberships of the RequirementDefinition with kind = assumption. RequirementDefinition
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] {redefined by: RequirementDefinition.reqId} null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
differencingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.differencedType} null The interpretations of a Type with differencingTypes are asserted to be those of the first of those Types, but not including those of the remaining Types. For example, a Classifier might be the difference of a Classifier for people and another for people of a particular nationality, leaving people who are not of that nationality. Similarly, a feature of people might be the difference between a feature for their children and a Classifier for people of a particular sex, identifying their children not of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
directedFeature Public Feature [0..*] {derived} {ordered} {redefined by: Behavior.parameter} {subsetted: Type.feature} {many-to-many:Type.typeWithDirectedFeature} null The features of this Type that have a non-null direction. Type
directedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Definition.definitionWithDirectedUsage} null The usages of this Definition that are directedFeatures. Definition
documentation Public Documentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The Documentation owned by this Element. Element
elementId Public String [1..1] {ID} null The globally unique identifier for this Element. This is intended to be set by tooling, and it must not change during the lifetime of the Element. Element
endFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.typeWithEndFeature} null All features of this Type with isEnd = true. Type
expression Public Expression [0..*] {derived} {subsetted: Behavior.step} {many-to-many:Function.computedFunction} null The Expressions that are steps in the calculation of the result of this Function. Function
feature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.member} {many-to-many:Type.typeWithFeature} null The ownedMemberFeatures of the featureMemberships of this Type. Type
featureMembership Public FeatureMembership [0..*] {derived} {ordered} {many-to-many:Type.type} null The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships). Type
framedConcern Public ConcernUsage [0..*] {derived} {ordered} {subsetted: RequirementDefinition.requiredConstraint} null The ConcernUsages framed by this RequirementDefinition, which are the ownedConcerns of all FramedConcernMemberships of the RequirementDefinition. RequirementDefinition
importedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Namespace.importingNamespace} null The Memberships in this Namespace that result from the ownedImports of this Namespace. Namespace
inheritedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Type.inheritingType} null All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships. Type
inheritedMembership Public Membership [0..*] {derived} {ordered} {subsetted: Namespace.membership} {many-to-many:Type.inheritingType} null All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type. Type
input Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithInput} null All features related to this Type by FeatureMemberships that have direction in or inout. Type
intersectingType Public Type [0..*] {derived} {ordered} {many-to-many:Type.intersectedType} null The interpretations of a Type with intersectingTypes are asserted to be those in common among the intersectingTypes, which are the Types derived from the intersectingType of the ownedIntersectings of this Type. For example, a Classifier might be an intersection of Classifiers for people of a particular sex and of a particular nationality. Similarly, a feature for people's children of a particular sex might be the intersection of a Feature for their children and a Classifier for people of that sex (because the interpretations of the children Feature that identify those of that sex are also interpretations of the Classifier for that sex). Type
isAbstract Public Boolean [1..1] false Indicates whether instances of this Type must also be instances of at least one of its specialized Types. Type
isConjugated Public Boolean [1..1] {derived} null Indicates whether this Type has an ownedConjugator. Type
isImpliedIncluded Public Boolean [1..1] false Whether all necessary implied Relationships have been included in the ownedRelationships of this Element. This property may be true, even if there are not actually any ownedRelationships with isImplied = true, meaning that no such Relationships are actually implied for this Element. However, if it is false, then ownedRelationships may not contain any implied Relationships. That is, either all required implied Relationships must be included, or none of them. Element
isIndividual Public Boolean [1..1] false Whether this OccurrenceDefinition is constrained to represent at most one thing. OccurrenceDefinition
isLibraryElement Public Boolean [1..1] {derived} null Whether this Element is contained in the ownership tree of a library model. Element
isModelLevelEvaluable Public Boolean [1..1] {derived} null Whether this Function can be used as the function of a model-level evaluable InvocationExpression. Certain Functions from the Kernel Functions Library are considered to have isModelLevelEvaluable = true. For all other Functions it is false. Note: See the specification of the KerML concrete syntax notation for Expressions for an identification of which library Functions are model-level evaluable. Function
isSufficient Public Boolean [1..1] false Whether all things that meet the classification conditions of this Type must be classified by the Type. (A Type gives conditions that must be met by whatever it classifies, but when isSufficient is false, things may meet those conditions but still not be classified by the Type. For example, a Type Car that is not sufficient could require everything it classifies to have four wheels, but not all four wheeled things would classify as cars. However, if the Type Car were sufficient, it would classify all four-wheeled things.) Type
isVariation Public Boolean [1..1] null Whether this Definition is for a variation point or not. If true, then all the memberships of the Definition must be VariantMemberships. Definition
member Public Element [0..*] {derived} {ordered} {many-to-many:Namespace.namespace} null The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace. Namespace
membership Public Membership [0..*] {derived} {derived-union} {ordered} {many-to-many:Namespace.membershipNamespace} null All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships. Namespace
multiplicity Public Multiplicity [0..1] {derived} {subsetted: Namespace.ownedMember} null An ownedMember of this Type that is a Multiplicity, which constraints the cardinality of the Type. If there is no such ownedMember, then the cardinality of this Type is constrained by all the Multiplicity constraints applicable to any direct supertypes. Type
name Public String [0..1] {derived} null The name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveName() operation. By default, it is the same as the declaredName, but this is overridden for certain kinds of Elements to compute a name even when the declaredName is null. Element
output Public Feature [0..*] {derived} {ordered} {subsetted: Type.directedFeature} {many-to-many:Type.typeWithOutput} null All features related to this Type by FeatureMemberships that have direction out or inout. Type
ownedAction Public ActionUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedOccurrence} null The ActionUsages that are ownedUsages of this Definition. Definition
ownedAllocation Public AllocationUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedConnection} null The AllocationUsages that are ownedUsages of this Definition. Definition
ownedAnalysisCase Public AnalysisCaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCase} null The AnalysisCaseUsages that are ownedUsages of this Definition. Definition
ownedAnnotation Public Annotation [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_annotatedElement_annotation.annotation} null The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement. Element
ownedAttribute Public AttributeUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The AttributeUsages that are ownedUsages of this Definition. Definition
ownedCalculation Public CalculationUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedAction} null The CalculationUsages that are ownedUsages of this Definition. Definition
ownedCase Public CaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCalculation} null The code>CaseUsages that are ownedUsages of this Definition. Definition
ownedConcern Public ConcernUsage [0..*] {derived} {subsetted: Definition.ownedRequirement} null The ConcernUsages that are ownedUsages of this Definition. Definition
ownedConjugator Public Conjugation [0..1] {composite} {derived} {subsetted: A_conjugatedType_conjugator.conjugator} {subsetted: Element.ownedRelationship} null A Conjugation owned by this Type for which the Type is the originalType. Type
ownedConnection Public ConnectorAsUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The ConnectorAsUsages that are ownedUsages of this Definition. Note that this list includes BindingConnectorAsUsages, SuccessionAsUsages, and FlowUsages because these are ConnectorAsUsages even though they are not ConnectionUsages. Definition
ownedConstraint Public ConstraintUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedOccurrence} null The ConstraintUsages that are ownedUsages of this Definition. Definition
ownedDifferencing Public Differencing [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced. Type
ownedDisjoining Public Disjoining [0..*] {composite} {derived} {subsetted: Element.ownedRelationship} {subsetted: A_disjoiningTypeDisjoining_typeDisjoined.disjoiningTypeDisjoining} null The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type. Type
ownedElement Public Element [0..*] {derived} {ordered} null The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. Element
ownedEndFeature Public Feature [0..*] {derived} {ordered} {subsetted: Type.endFeature} {subsetted: Type.ownedFeature} null All endFeatures of this Type that are ownedFeatures. Type
ownedEnumeration Public EnumerationUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedAttribute} null The EnumerationUsages that are ownedUsages of this Definition. Definition
ownedFeature Public Feature [0..*] {derived} {ordered} {subsetted: Namespace.ownedMember} null The ownedMemberFeatures of the ownedFeatureMemberships of this Type. Type
ownedFeatureMembership Public FeatureMembership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.ownedMembership} {subsetted: Type.featureMembership} null The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type. Type
ownedFlow Public FlowUsage [0..*] {derived} {subsetted: Definition.ownedConnection} null The FlowUsages that are ownedUsages of this Definition. Definition
ownedImport Public Import [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace. Namespace
ownedInterface Public InterfaceUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedConnection} null The InterfaceUsages that are ownedUsages of this Definition. Definition
ownedIntersecting Public Intersecting [0..*] {composite} {derived} {ordered} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected. Type
ownedItem Public ItemUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedOccurrence} null The ItemUsages that are ownedUsages of this Definition. Definition
ownedMember Public Element [0..*] {derived} {ordered} {subsetted: Namespace.member} null The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace. Namespace
ownedMembership Public Membership [0..*] {composite} {derived} {ordered} {subsetted: Namespace.membership} {subsetted: A_source_sourceRelationship.sourceRelationship} {subsetted: Element.ownedRelationship} null The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace. Namespace
ownedMetadata Public MetadataUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedItem} null The MetadataUsages that are ownedUsages of this Definition. Definition
ownedOccurrence Public OccurrenceUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The OccurrenceUsages that are ownedUsages of this Definition. Definition
ownedPart Public PartUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedItem} null The PartUsages that are ownedUsages of this Definition. Definition
ownedPort Public PortUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The PortUsages that are ownedUsages of this Definition. Definition
ownedReference Public ReferenceUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedUsage} null The ReferenceUsages that are ownedUsages of this Definition. Definition
ownedRelationship Public Relationship [0..*] {composite} {ordered} {subsetted: A_relatedElement_relationship.relationship} null The Relationships for which this Element is the owningRelatedElement. Element
ownedRendering Public RenderingUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedPart} null The RenderingUsages that are ownedUsages of this Definition. Definition
ownedRequirement Public RequirementUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedConstraint} null The RequirementUsages that are ownedUsages of this Definition. Definition
ownedSpecialization Public Specialization [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_specific_specialization.specialization} null The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type. Type
ownedState Public StateUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedAction} null The StateUsages that are ownedUsages of this Definition. Definition
ownedSubclassification Public Subclassification [0..*] {composite} {derived} {subsetted: Type.ownedSpecialization} null The ownedSpecializations of this Classifier that are Subclassifications, for which this Classifier is the subclassifier. Classifier
ownedTransition Public TransitionUsage [0..*] {derived} {subsetted: Definition.ownedUsage} null The TransitionUsages that are ownedUsages of this Definition. Definition
ownedUnioning Public Unioning [0..*] {composite} {derived} {ordered} {subsetted: Element.ownedRelationship} {subsetted: A_source_sourceRelationship.sourceRelationship} null The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned. Type
ownedUsage Public Usage [0..*] {derived} {ordered} {subsetted: Type.ownedFeature} null The Usages that are ownedFeatures of this Definition. Definition
ownedUseCase Public UseCaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCase} null The UseCaseUsages that are ownedUsages of this Definition. Definition
ownedVerificationCase Public VerificationCaseUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedCase} null The VerificationCaseUsages that are ownedUsages of this Definition. Definition
ownedView Public ViewUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedPart} null The ViewUsages that are ownedUsages of this Definition. Definition
ownedViewpoint Public ViewpointUsage [0..*] {derived} {ordered} {subsetted: Definition.ownedRequirement} null The ViewpointUsages that are ownedUsages of this Definition. Definition
owner Public Element [0..1] {derived} null The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any. Element
owningMembership Public OwningMembership [0..1] {derived} {subsetted: A_memberElement_membership.membership} {subsetted: Element.owningRelationship} null The owningRelationship of this Element, if that Relationship is a Membership. Element
owningNamespace Public Namespace [0..1] {derived} {subsetted: A_member_namespace.namespace} null The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any. Element
owningRelationship Public Relationship [0..1] {subsetted: A_relatedElement_relationship.relationship} null The Relationship for which this Element is an ownedRelatedElement, if any. Element
parameter Public Feature [0..*] {derived} {ordered} {redefines: Type.directedFeature} {many-to-many:Behavior.parameteredBehavior} null The parameters of this Behavior, which are defined as its directedFeatures, whose values are passed into and/or out of a performance of the Behavior. Behavior
qualifiedName Public String [0..1] {derived} null The full ownership-qualified name of this Element, represented in a form that is valid according to the KerML textual concrete syntax for qualified names (including use of unrestricted name notation and escaped characters, as necessary). The qualifiedName is null if this Element has no owningNamespace or if there is not a complete ownership chain of named Namespaces from a root Namespace to this Element. If the owningNamespace has other Elements with the same name as this one, then the qualifiedName is null for all such Elements other than the first. Element
reqId Public String [0..1] {redefines: Element.declaredShortName} null An optional modeler-specified identifier for this RequirementDefinition (used, e.g., to link it to an original requirement text in some source document), which is the declaredShortName for the RequirementDefinition. RequirementDefinition
requiredConstraint Public ConstraintUsage [0..*] {derived} {ordered} {subsetted: Type.ownedFeature} null The owned ConstraintUsages that represent requirements of this RequirementDefinition, derived as the ownedConstraints of the RequirementConstraintMemberships of the RequirementDefinition with kind = requirement. RequirementDefinition
result Public Feature [1..1] {derived} {subsetted: Type.output} {subsetted: Behavior.parameter} null The object or value that is the result of evaluating the Function. Function
shortName Public String [0..1] {derived} null The short name to be used for this Element during name resolution within its owningNamespace. This is derived using the effectiveShortName() operation. By default, it is the same as the declaredShortName, but this is overridden for certain kinds of Elements to compute a shortName even when the declaredName is null. Element
stakeholderParameter Public PartUsage [0..*] {derived} {ordered} {subsetted: Behavior.parameter} null The parameters of this RequirementDefinition that represent stakeholders for th requirement. RequirementDefinition
step Public Step [0..*] {derived} {subsetted: Type.feature} {many-to-many:Behavior.featuringBehavior} null The Steps that make up this Behavior. Behavior
subjectParameter Public Usage [1..1] {derived} {subsetted: Behavior.parameter} null The parameter of this RequirementDefinition that represents its subject. RequirementDefinition
text Public String [0..*] {derived} null An optional textual statement of the requirement represented by this RequirementDefinition, derived from the bodies of the documentation of the RequirementDefinition. RequirementDefinition
textualRepresentation Public TextualRepresentation [0..*] {derived} {ordered} {subsetted: A_annotatedElement_annotatingElement.annotatingElement} {subsetted: Element.ownedElement} null The TextualRepresentations that annotate this Element. Element
unioningType Public Type [0..*] {derived} {ordered} {many-to-many:Type.unionedType} null The interpretations of a Type with unioningTypes are asserted to be the same as those of all the unioningTypes together, which are the Types derived from the unioningType of the ownedUnionings of this Type. For example, a Classifier for people might be the union of Classifiers for all the sexes. Similarly, a feature for people's children might be the union of features dividing them in the same ways as people in general. Type
usage Public Usage [0..*] {derived} {ordered} {subsetted: Type.feature} {many-to-many:Definition.featuringDefinition} null The Usages that are features of this Definition (not necessarily owned). Definition
variant Public Usage [0..*] {derived} {subsetted: Namespace.ownedMember} null The Usages which represent the variants of this Definition as a variation point Definition, if isVariation = true. If isVariation = false, the there must be no variants. Definition
variantMembership Public VariantMembership [0..*] {composite} {derived} {subsetted: Namespace.ownedMembership} null The ownedMemberships of this Definition that are VariantMemberships. If isVariation = true, then this must be all ownedMemberships of the Definition. If isVariation = false, then variantMembershipmust be empty. Definition

ConcernUsage [Class]

Features

Name Description
Fully Qualified Name SysML::Systems::Requirements::ConcernUsage
Visibility Public
Definition A ConcernUsage is a Usage of a ConcernDefinition. The ownedStakeholder features of the ConcernUsage shall all subset the ConcernCheck::concernedStakeholders feature. If the ConcernUsage is an ownedFeature of a StakeholderDefinition or StakeholderUsage, then the ConcernUsage shall have an ownedStakeholder feature that is bound to the self feature of its owner.
Is Abstract FALSE
Generalizations RequirementUsage
Specializations
Containers FramedConcernMembership

Rules

Name Visibilty Description Specification Owner
checkBooleanExpressionSpecialization Public A BooleanExpression must directly or indirectly specialize the base BooleanExpression Performances::booleanEvaluations from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::booleanEvaluations') BooleanExpression
checkConcernUsageFramedConcernSpecialization Public If a ConcernUsage is owned via a FramedConcernMembership, then it must directly or indirectly specialize the ConcernUsage Requirements::RequirementCheck::concerns from the Systems Model Library. OCL2.0: owningFeatureMembership <> null and owningFeatureMembership.oclIsKindOf(FramedConcernMembership) implies specializesFromLibrary('Requirements::RequirementCheck::concerns') ConcernUsage
checkConcernUsageSpecialization Public A ConcernUsage must directly or indirectly specialize the base ConcernUsage Requirements::concernChecks from the Systems Model Library. OCL2.0: specializesFromLibrary('Requirements::concernChecks') ConcernUsage
checkConstraintUsageCheckedConstraintSpecialization Public A ConstraintUsage whose owningType is an ItemDefinition or ItemUsage must directly or indirectly specialize the ConstraintUsage Items::Item::checkedConstraints. OCL2.0: owningType <> null and (owningType.oclIsKindOf(ItemDefinition) or owningType.oclIsKindOf(ItemUsage)) implies specializesFromLibrary('Items::Item::checkedConstraints') ConstraintUsage
checkConstraintUsageRequirementConstraintSpecialization Public A ConstraintUsage whose owningFeatureMembership is a RequirementConstraintMembership must directly or indirectly specialize on the ConstraintUsages assumptions or constraints from the ConstraintDefinition Requirements::RequirementCheck in the Systems Model Library, depending on whether the kind of the RequirementConstraintMembership is assumption or requirement, respectively. OCL2.0: owningFeatureMembership <> null and owningFeatureMembership.oclIsKindOf(RequirementConstraintMembership) implies if owningFeatureMembership.oclAsType(RequirementConstraintMembership).kind = RequirementConstraintKind::assumption then specializesFromLibrary('Requirements::RequirementCheck::assumptions') else specializesFromLibrary('Requirements::RequirementCheck::constraints') endif ConstraintUsage
checkConstraintUsageSpecialization Public A ConstraintUsage must directly or indirectly specialize the base ConstraintUsage Constraints::constraintChecks from the Systems Model Library. OCL2.0: specializesFromLibrary('Constraints::constraintChecks') ConstraintUsage
checkExpressionResultBindingConnector Public If an Expression has an Expression owned via a ResultExpressionMembership, then the owning Expression must also own a BindingConnector between its result parameter and the result parameter of the result Expression. OCL2.0: ownedMembership.selectByKind(ResultExpressionMembership)-> forAll(mem | ownedFeature.selectByKind(BindingConnector)-> exists(binding | binding.relatedFeature->includes(result) and binding.relatedFeature->includes(mem.ownedResultExpression.result))) Expression
checkExpressionSpecialization Public An Expression must directly or indirectly specialize the base Expression Performances::evaluations from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::evaluations') Expression
checkExpressionTypeFeaturing Public If this Expression is owned by a FeatureValue, then it must have the same featuringTypes as the featureWithValue of the FeatureValue. OCL2.0: owningMembership <> null and owningMembership.oclIsKindOf(FeatureValue) implies let featureWithValue : Feature = owningMembership.oclAsType(FeatureValue).featureWithValue in featuringType = featureWithValue.featuringType Expression
checkFeatureCrossingSpecialization Public If this Feature has isEnd = true and ownedCrossFeature returns a non-null value, then the crossFeature of the Feature must be the Feature returned from ownedCrossFeature (which implies that this Feature has an appropriate ownedCrossSubsetting to realize this). OCL2.0: ownedCrossFeature() <> null implies crossFeature = ownedCrossFeature() Feature
checkFeatureDataValueSpecialization Public If a Feature has an ownedTyping relationship to a DataType, then it must directly or indirectly specialize Base::dataValues from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(DataType)) implies specializesFromLibrary('Base::dataValues') Feature
checkFeatureEndRedefinition Public If a Feature has isEnd = true and an owningType that is not empty, then, for each direct supertype of its owningType, it must redefine the endFeature at the same position, if any. OCL2.0: isEnd and owningType <> null implies let i : Integer = owningType.ownedEndFeature->indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | supertype.endFeature->size() >= i implies redefines(supertype.endFeature->at(i)) Feature
checkFeatureEndSpecialization Public If a Feature has isEnd = true and an owningType that is an Association or a Connector, then it must directly or indirectly specialize Links::Link::participant from the Kernel Semantic Library. OCL2.0: isEnd and owningType <> null and (owningType.oclIsKindOf(Association) or owningType.oclIsKindOf(Connector)) implies specializesFromLibrary('Links::Link::participant') Feature
checkFeatureFeatureMembershipTypeFeaturing Public If a Feature is owned via a FeatureMembership, then it must have a featuringType for which the operation isFeaturingType returns true. OCL2.0: owningFeatureMembership <> null implies featuringTypes->exists(t | isFeaturingType(t)) Feature
checkFeatureFlowFeatureRedefinition Public If a Feature is the first ownedFeature of a first or second FlowEnd, then it must directly or indirectly specialize either Transfers::Transfer::source::sourceOutput or Transfers::Transfer::target::targetInput, respectively, from the Kernel Semantic Library. OCL2.0: owningType <> null and owningType.oclIsKindOf(FlowEnd) and owningType.ownedFeature->at(1) = self implies let flowType : Type = owningType.owningType in flowType <> null implies let i : Integer = flowType.ownedFeature.indexOf(owningType) in (i = 1 implies redefinesFromLibrary('Transfers::Transfer::source::sourceOutput')) and (i = 2 implies redefinesFromLibrary('Transfers::Transfer::source::targetInput')) Feature
checkFeatureObjectSpecialization Public If a Feature has an ownedTyping relationship to a Structure, then it must directly or indirectly specialize Objects::objects from the Kernel Semantics Library. OCL2.0: ownedTyping.type->exists(selectByKind(Structure)) implies specializesFromLibary('Objects::objects') Feature
checkFeatureOccurrenceSpecialization Public If a Feature has an ownedTyping relationship to a Class, then it must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: ownedTyping.type->exists(selectByKind(Class)) implies specializesFromLibrary('Occurrences::occurrences') Feature
checkFeatureOwnedCrossFeatureRedefinitionSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then, for any end Feature that is redefined by the owning end Feature of this Feature, this Feature must subset the crossFeature of the redefined end Feature, if this exists. OCL2.0: isOwnedCrossFeature() implies ownedSubsetting.subsettedFeature->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature <> null).crossFeature) Feature
checkFeatureOwnedCrossFeatureSpecialization Public If this Feature is the ownedCrossFeature of an end Feature, then it must directly or indirectly specialize the types of its owning end Feature. OCL2.0: isOwnedCrossFeature() implies owner.oclAsType(Feature).type->forAll(t | self.specializes(t)) Feature
checkFeatureOwnedCrossFeatureTypeFeaturing Public If this Feature is the ownedCrossFeature of an end Feature, then it must have featuringTypes consistent with the crossing from other end Features of the owningType of its end Feature. OCL2.0: isOwnedCrossFeature() implies let otherEnds : OrderedSet(Feature) = owner.oclAsType(Feature).owningType.endFeature->excluding(self) in if (otherEnds->size() = 1) then featuringType = otherEnds->first().type else featuringType->size() = 1 and featuringType->first().isCartesianProduct() and featuringType->first().asCartesianProduct() = otherEnds.type and featuringType->first().allSupertypes()->includesAll( owner.oclAsType(Feature).ownedRedefinition.redefinedFeature-> select(crossFeature() <> null).crossFeature().featuringType) endif Feature
checkFeatureParameterRedefinition Public If a Feature is a parameter of an owningType that is a Behavior or Step, but not
  • A result parameter
  • A parameter of an InvocationExpression, with at least one non-implied ownedRedefinition
then, for each direct supertype of its owningType that is also a Behavior or Step, it must redefine the parameter at the same position, if any.
OCL2.0: owningType <> null and not owningFeatureMembership. oclIsKindOf(ReturnParameterMembership) and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step) and (owningType.oclIsKindOf(InvocationExpression) implies not ownedRedefinition->exists(not isImplied)) implies let i : Integer = owningType.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership))-> indexOf(self) in owningType.ownedSpecialization.general-> forAll(supertype | let ownedParameters : Sequence(Feature) = supertype.ownedFeature->select(direction <> null)-> reject(owningFeatureMembership. oclIsKindOf(ReturnParameterMembership)) in ownedParameters->size() >= i implies redefines(ownedParameters->at(i)) Feature
checkFeaturePortionSpecialization Public If a Feature has isPortion = true, an ownedTyping relationship to a Class, and an owningType that is a Class or another Feature typed by a Class, then it must directly or indirectly specialize Occurrences::Occurrence::portions from the Kernel Semantic Library. OCL2.0: isPortion and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::portions') Feature
checkFeatureResultRedefinition Public If a Feature is a result parameter of an owningType that is a Function or Expression, then, for each direct supertype of its owningType that is also a Function or Expression, it must redefine the result parameter. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Function) and self = owningType.oclAsType(Function).result or owningType.oclIsKindOf(Expression) and self = owningType.oclAsType(Expression).result) implies owningType.ownedSpecialization.general-> select(oclIsKindOf(Function) or oclIsKindOf(Expression))-> forAll(supertype | redefines( if superType.oclIsKindOf(Function) then superType.oclAsType(Function).result else superType.oclAsType(Expression).result endif) Feature
checkFeatureSpecialization Public A Feature must directly or indirectly specialize Base::things from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::things') Feature
checkFeatureSubobjectSpecialization Public A composite Feature typed by a Structure, and whose ownedType is a Structure or another Feature typed by a Structure must directly or indirectly specialize Objects::Object::subobjects. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Structure)) and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.type->includes(oclIsKindOf(Structure))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureSuboccurrenceSpecialization Public A composite Feature that has an ownedTyping relationship to a Class, and whose ownedType is a Class or another Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and ownedTyping.type->includes(oclIsKindOf(Class)) and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Class))) implies specializesFromLibrary('Occurrence::Occurrence::suboccurrences') Feature
checkFeatureValuationSpecialization Public If a Feature has a FeatureValue, no ownedSpecializations that are not implied, and is not directed, then it must specialize the result of the value Expression of the FeatureValue. OCL2.0: direction = null and ownedSpecializations->forAll(isImplied) implies ownedMembership-> selectByKind(FeatureValue)-> forAll(fv | specializes(fv.value.result)) Feature
checkOccurrenceUsageSnapshotSpecialization Public If an OccurrenceUsage has portionKind = snapshot, then it must directly or indirectly specialize Occurrences::Occurrence::snapshots from the Kernel Semantic Library. OCL2.0: portionKind = PortionKind::snapshot implies specializesFromLibrary('Occurrences::Occurrence::snapshots') OccurrenceUsage
checkOccurrenceUsageSpecialization Public An OccurrenceUsage must directly or indirectly specialize Occurrences::occurrences from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Occurrences::occurrences') OccurrenceUsage
checkOccurrenceUsageSuboccurrenceSpecialization Public A composite OccurrenceUsage, whose ownedType is a Class, another OccurrenceUsage, or any kind of Feature typed by a Class, must directly or indirectly specialize Occurrences::Occurrence::suboccurrences. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(Class) or owningType.oclIsKindOf(OccurrenceUsage) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKind(Class))) implies specializesFromLibrary('Occurrences::Occurrence::suboccurrences') OccurrenceUsage
checkOccurrenceUsageTimeSliceSpecialization Public If an OccurrenceUsage has portionKind = timeslice, then it must directly or indirectly specialize Occurrences::Occurrence::timeSlices from the Kernel Semantic Library. OCL2.0: portionKind = PortionKind::timeslice implies specializesFromLibrary('Occurrences::Occurrence::timeSlices') OccurrenceUsage
checkRequirementUsageObjectiveRedefinition Public A RequirementUsage whose owningFeatureMembership is a ObjectiveMembership must redefine the objectiveRequirement of each CaseDefinition or CaseUsage that is specialized by the owningType of the RequirementUsage. OCL2.0: owningfeatureMembership <> null and owningfeatureMembership.oclIsKindOf(ObjectiveMembership) implies owningType.ownedSpecialization.general->forAll(gen | (gen.oclIsKindOf(CaseDefinition) implies redefines(gen.oclAsType(CaseDefinition).objectiveRequirement)) and (gen.oclIsKindOf(CaseUsage) implies redefines(gen.oclAsType(CaseUsage).objectiveRequirement)) RequirementUsage
checkRequirementUsageRequirementVerificationSpecialization Public A RequirementUsage whose owningFeatureMembership is a RequirementVerificationMembership must directly or indirectly specialize the RequirementUsage VerificationCases::VerificationCase::obj::requirementVerifications. OCL2.0: owningFeatureMembership <> null and owningFeatureMembership.oclIsKindOf(RequirementVerificationMembership) implies specializesFromLibrary('VerificationCases::VerificationCase::obj::requirementVerifications') RequirementUsage
checkRequirementUsageSpecialization Public A RequirementUsage must directly or indirectly specialize the base RequirementUsage Requirements::requirementChecks from the Systems Model Library. OCL2.0: specializesFromLibrary('Requirements::requirementChecks') RequirementUsage
checkRequirementUsageSubrequirementSpecialization Public A composite RequirementUsage whose owningType is a RequirementDefinition or ,code>RequirementUsage must directly or indirectly specialize the RequirementUsage Requirements::RequirementCheck::subrequirements from the Systems Model Library. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(RequirementDefinition) or owningType.oclIsKindOf(RequirementUsage)) implies specializesFromLibrary('Requirements::RequirementCheck::subrequirements') RequirementUsage
checkStepEnclosedPerformanceSpecialization Public AStep whose owningType is a Behavior or another Step must directly or indirectly specialize the Step Performances::Performance::enclosedPerformance. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step)) implies specializesFromLibrary('Performances::Performance::enclosedPerformance') Step
checkStepOwnedPerformanceSpecialization Public A composite Step whose owningType is a Structure or a Feature typed by a Structure must directly or indirectly specialize the Step Objects::Object::ownedPerformance. OCL2.0: isComposite and owningType <> null and (owningType.oclIsKindOf(Structure) or owningType.oclIsKindOf(Feature) and owningType.oclAsType(Feature).type-> exists(oclIsKindOf(Structure)) implies specializesFromLibrary('Objects::Object::ownedPerformance') Step
checkStepSpecialization Public A Step must directly or indirectly specialize the base Step Performances::performances from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Performances::performances') Step
checkStepSubperformanceSpecialization Public AStep whose owningType is a Behavior or another Step, and which is composite, must directly or indirectly specialize the Step Performances::Performance::subperformance. OCL2.0: owningType <> null and (owningType.oclIsKindOf(Behavior) or owningType.oclIsKindOf(Step)) and self.isComposite implies specializesFromLibrary('Performances::Performance::subperformance') Step
checkTypeSpecialization Public A Type must directly or indirectly specialize Base::Anything from the Kernel Semantic Library. OCL2.0: specializesFromLibrary('Base::Anything') Type
checkUsageVariationDefinitionSpecialization Public If a Usage has an owningVariationDefinition, then it must directly or indirectly specialize that Definition. OCL2.0: owningVariationDefinition <> null implies specializes(owningVariationDefinition) Usage
checkUsageVariationUsageSpecialization Public If a Usage has an owningVariationUsage, then it must directly or indirectly specialize that Usage. OCL2.0: owningVariationUsage <> null implies specializes(owningVariationUsage) Usage
checkUsageVariationUsageTypeFeaturing Public If a Usage has an owningVariationUsage, then it must have the same featuringTypes as that Usage. OCL2.0: owningVariationUsage <> null implies featuringType->asSet() = owningVariationUsage.featuringType->asSet() Usage
deriveElementDocumentation Public The documentation of an Element is its ownedElements that are Documentation. OCL2.0: documentation = ownedElement->selectByKind(Documentation) Element
deriveElementIsLibraryElement Public An Element isLibraryElement if libraryNamespace() is not null. OCL2.0: isLibraryElement = libraryNamespace() <> null Element
deriveElementName Public The name of an Element is given by the result of the effectiveName() operation. OCL2.0: name = effectiveName() Element
deriveElementOwnedAnnotation Public The ownedAnnotations of an Element are its ownedRelationships that are Annotations, for which the Element is the annotatedElement. OCL2.0: ownedAnnotation = ownedRelationship-> selectByKind(Annotation)-> select(a | a.annotatedElement = self) Element
deriveElementOwnedElement Public The ownedElements of an Element are the ownedRelatedElements of its ownedRelationships. OCL2.0: ownedElement = ownedRelationship.ownedRelatedElement Element
deriveElementOwner Public The owner of an Element is the owningRelatedElement of its owningRelationship. OCL2.0: owner = owningRelationship.owningRelatedElement Element
deriveElementQualifiedName Public If this Element does not have an owningNamespace, then its qualifiedName is null. If the owningNamespace of this Element is a root Namespace, then the qualifiedName of the Element is the escaped name of the Element (if any). If the owningNamespace is non-null but not a root Namespace, then the qualifiedName of this Element is constructed from the qualifiedName of the owningNamespace and the escaped name of the Element, unless the qualifiedName of the owningNamespace is null or the escaped name is null, in which case the qualifiedName of this Element is also null. Further, if the owningNamespace has other ownedMembers with the same non-null name as this Element, and this Element is not the first, then the qualifiedName of this Element is null. OCL2.0: qualifiedName = if owningNamespace = null then null else if name <> null and owningNamespace.ownedMember-> select(m | m.name = name).indexOf(self) <> 1 then null else if owningNamespace.owner = null then escapedName() else if owningNamespace.qualifiedName = null or escapedName() = null then null else owningNamespace.qualifiedName + '::' + escapedName() endif endif endif endif Element
deriveElementShortName Public The shortName of an Element is given by the result of the effectiveShortName() operation. OCL2.0: shortName = effectiveShortName() Element
deriveElementTextualRepresentation Public The textualRepresentations of an Element are its ownedElements that are TextualRepresentations. OCL2.0: textualRepresentation = ownedElement->selectByKind(TextualRepresentation) Element
deriveExpressionIsModelLevelEvaluable Public Whether an Expression isModelLevelEvaluable is determined by the modelLevelEvaluable() operation. OCL2.0: isModelLevelEvaluable = modelLevelEvaluable(Set(Element){}) Expression
deriveExpressionResult Public The result parameter of an Expression is its parameter owned (possibly in a supertype) via a ReturnParameterMembership (if any). OCL2.0: result = let resultParams : Sequence(Feature) = featureMemberships-> selectByKind(ReturnParameterMembership). ownedMemberParameter in if resultParams->notEmpty() then resultParams->first() else null endif Expression
deriveFeatureChainingFeature Public The chainingFeatures of a Feature are the chainingFeatures of its ownedFeatureChainings. OCL2.0: chainingFeature = ownedFeatureChaining.chainingFeature Feature
deriveFeatureCrossFeature Public The crossFeature of a Feature is the second chainingFeature of the crossedFeature of the ownedCrossSubsetting of the Feature, if any. OCL2.0: crossFeature = if ownedCrossSubsetting = null then null else let chainingFeatures: Sequence(Feature) = ownedCrossSubsetting.crossedFeature.chainingFeature in if chainingFeatures->size() < 2 then null else chainingFeatures->at(2) endif Feature
deriveFeatureFeatureTarget Public If a Feature has no chainingFeatures, then its featureTarget is the Feature itself, otherwise the featureTarget is the last of the chainingFeatures. OCL2.0: featureTarget = if chainingFeature->isEmpty() then self else chainingFeature->last() endif Feature
deriveFeatureFeaturingType Public The featuringTypes of a Feature include the featuringTypes of all the typeFeaturings of the Feature. If the Feature has chainingFeatures, then its featuringTypes also include the featuringTypes of the first chainingFeature. OCL2.0: featuringType = let featuringTypes : OrderedSet(Type) = featuring.type->asOrderedSet() in if chainingFeature->isEmpty() then featuringTypes else featuringTypes-> union(chainingFeature->first().featuringType)-> asOrderedSet() endif Feature
deriveFeatureOwnedCrossSubsetting Public The ownedCrossSubsetting of a Feature is the ownedSubsetting that is a CrossSubsetting, if any. OCL2.0: ownedCrossSubsetting = let crossSubsettings: Sequence(CrossSubsetting) = ownedSubsetting->selectByKind(CrossSubsetting) in if crossSubsettings->isEmpty() then null else crossSubsettings->first() endif Feature
deriveFeatureOwnedFeatureChaining Public The ownedFeatureChainings of a Feature are the ownedRelationships that are FeatureChainings. OCL2.0: ownedFeatureChaining = ownedRelationship->selectByKind(FeatureChaining) Feature
deriveFeatureOwnedFeatureInverting Public The ownedFeatureInvertings of a Feature are its ownedRelationships that are FeatureInvertings. OCL2.0: ownedFeatureInverting = ownedRelationship->selectByKind(FeatureInverting)-> select(fi | fi.featureInverted = self) Feature
deriveFeatureOwnedRedefinition Public The ownedRedefinitions of a Feature are its ownedSubsettings that are Redefinitions. OCL2.0: ownedRedefinition = ownedSubsetting->selectByKind(Redefinition) Feature
deriveFeatureOwnedReferenceSubsetting Public The ownedReferenceSubsetting of a Feature is the first ownedSubsetting that is a ReferenceSubsetting (if any). OCL2.0: ownedReferenceSubsetting = let referenceSubsettings : OrderedSet(ReferenceSubsetting) = ownedSubsetting->selectByKind(ReferenceSubsetting) in if referenceSubsettings->isEmpty() then null else referenceSubsettings->first() endif Feature
deriveFeatureOwnedSubsetting Public The ownedSubsettings of a Feature are its ownedSpecializations that are Subsettings. OCL2.0: ownedSubsetting = ownedSpecialization->selectByKind(Subsetting) Feature
deriveFeatureOwnedTypeFeaturing Public The ownedTypeFeaturings of a Feature are its ownedRelationships that are TypeFeaturings and which have the Feature as their featureOfType. OCL2.0: ownedTypeFeaturing = ownedRelationship->selectByKind(TypeFeaturing)-> select(tf | tf.featureOfType = self) Feature
deriveFeatureOwnedTyping Public The ownedTypings of a Feature are its ownedSpecializations that are FeatureTypings. OCL2.0: ownedTyping = ownedGeneralization->selectByKind(FeatureTyping) Feature
deriveFeatureType Public The types of a Feature are the union of the types of its typings and the types of the Features it subsets, with all redundant supertypes removed. If the Feature has chainingFeatures, then the union also includes the types of the last chainingFeature. OCL2.0: type = let types : OrderedSet(Types) = OrderedSet{self}-> -- Note: The closure operation automatically handles circular relationships. closure(typingFeatures()).typing.type->asOrderedSet() in types->reject(t1 | types->exist(t2 | t2 <> t1 and t2.specializes(t1))) Feature
deriveNamespaceImportedMembership Public The importedMemberships of a Namespace are derived using the importedMemberships() operation, with no initially excluded Namespaces. OCL2.0: importedMembership = importedMemberships(Set{}) Namespace
deriveNamespaceMembers Public The members of a Namespace are the memberElements of all its memberships. OCL2.0: member = membership.memberElement Namespace
deriveNamespaceOwnedImport Public The ownedImports of a Namespace are all its ownedRelationships that are Imports. OCL2.0: ownedImport = ownedRelationship->selectByKind(Import) Namespace
deriveNamespaceOwnedMember Public The ownedMembers of a Namespace are the ownedMemberElements of all its ownedMemberships that are OwningMemberships. OCL2.0: ownedMember = ownedMembership->selectByKind(OwningMembership).ownedMemberElement Namespace
deriveNamespaceOwnedMembership Public The ownedMemberships of a Namespace are all its ownedRelationships that are Memberships. OCL2.0: ownedMembership = ownedRelationship->selectByKind(Membership) Namespace
deriveOccurrenceUsageIndividualDefinition Public The individualDefinition of an OccurrenceUsage is the occurrenceDefinition that is an OccurrenceDefinition with isIndividual = true, if any. OCL2.0: individualDefinition = let individualDefinitions : OrderedSet(OccurrenceDefinition) = occurrenceDefinition-> selectByKind(OccurrenceDefinition)-> select(isIndividual) in if individualDefinitions->isEmpty() then null else individualDefinitions->first() endif OccurrenceUsage
deriveOwningNamespace Public The owningNamespace of an Element is the membershipOwningNamspace of its owningMembership (if any). OCL2.0: owningNamespace = if owningMembership = null then null else owningMembership.membershipOwningNamespace endif Element
deriveRequirementUsageActorParameter Public The actorParameters of a RequirementUsage are the ownedActorParameters of the ActorMemberships of the RequirementUsage. OCL2.0: actorParameter = featureMembership-> selectByKind(ActorMembership). ownedActorParameter RequirementUsage
deriveRequirementUsageAssumedConstraint Public The assumedConstraints of a RequirementUsage are the ownedConstraints of the RequirementConstraintMemberships of the RequirementDefinition with kind = assumption. OCL2.0: assumedConstraint = ownedFeatureMembership-> selectByKind(RequirementConstraintMembership)-> select(kind = RequirementConstraintKind::assumption). ownedConstraint RequirementUsage
deriveRequirementUsageFramedConcern Public The framedConcerns of a RequirementUsage are the ownedConcerns of the FramedConcernMemberships of the RequirementUsage. OCL2.0: framedConcern = featureMembership-> selectByKind(FramedConcernMembership). ownedConcern RequirementUsage
deriveRequirementUsageRequiredConstraint Public The requiredConstraints of a RequirementUsage are the ownedConstraints of the RequirementConstraintMemberships of the RequirementUsage with kind = requirement. OCL2.0: requiredConstraint = ownedFeatureMembership-> selectByKind(RequirementConstraintMembership)-> select(kind = RequirementConstraintKind::requirement). ownedConstraint RequirementUsage
deriveRequirementUsageStakeholderParameter Public The stakeHolderParameters of a RequirementUsage are the ownedStakeholderParameters of the StakeholderMemberships of the RequirementUsage. OCL2.0: stakeholderParameter = featureMembership-> selectByKind(AStakholderMembership). ownedStakeholderParameter RequirementUsage
deriveRequirementUsageSubjectParameter Public The subjectParameter of a RequirementUsage is the ownedSubjectParameter of its SubjectMembership (if any). OCL2.0: subjectParameter = let subjects : OrderedSet(SubjectMembership) = featureMembership->selectByKind(SubjectMembership) in if subjects->isEmpty() then null else subjects->first().ownedSubjectParameter endif RequirementUsage
deriveRequirementUsageText Public The texts of aRequirementUsage are the bodies of the documentation of the RequirementUsage. OCL2.0: text = documentation.body RequirementUsage
deriveStepBehavior Public The behaviors of a Step are all its types that are Behaviors. OCL2.0: behavior = type->selectByKind(Behavior) Step
deriveTypeDifferencingType Public The differencingTypes of a Type are the differencingTypes of its ownedDifferencings, in the same order. English: differencingType = ownedDifferencing.differencingType Type
deriveTypeDirectedFeature Public The directedFeatures of a Type are those features for which the direction is non-null. OCL2.0: directedFeature = feature->select(f | directionOf(f) <> null) Type
deriveTypeEndFeature Public The endFeatures of a Type are all its features for which isEnd = true. OCL2.0: endFeature = feature->select(isEnd) Type
deriveTypeFeature Public The features of a Type are the ownedMemberFeatures of its featureMemberships. OCL2.0: feature = featureMembership.ownedMemberFeature Type
deriveTypeFeatureMembership Public The featureMemberships of a Type is the union of the ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships. OCL2.0: featureMembership = ownedFeatureMembership->union( inheritedMembership->selectByKind(FeatureMembership)) Type
deriveTypeInheritedFeature Public The inheritedFeatures of this Type are the memberFeatures of the inheritedMemberships that are FeatureMemberships. OCL2.0: inheritedFeature = inheritedMemberships-> selectByKind(FeatureMembership).memberFeature Type
deriveTypeInheritedMembership Public The inheritedMemberships of a Type are determined by the inheritedMemberships() operation. OCL2.0: inheritedMembership = inheritedMemberships(Set{}, Set{}, false) Type
deriveTypeInput Public The inputs of a Type are those of its features that have a direction of in or inout relative to the Type, taking conjugation into account. OCL2.0: input = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::_'in' or direction = FeatureDirectionKind::inout) Type
deriveTypeIntersectingType Public The intersectingTypes of a Type are the intersectingTypes of its ownedIntersectings. OCL2.0: intersectingType = ownedIntersecting.intersectingType Type
deriveTypeMultiplicity Public If a Type has an owned Multiplicity, then that is its multiplicity. Otherwise, if the Type has an ownedSpecialization, then its multiplicity is the multiplicity of the general Type of that Specialization. OCL2.0: multiplicity = let ownedMultiplicities: Sequence(Multiplicity) = ownedMember->selectByKind(Multiplicity) in if ownedMultiplicities->isEmpty() then null else ownedMultiplicities->first() endif Type
deriveTypeOutput Public The outputs of a Type are those of its features that have a direction of out or inout relative to the Type, taking conjugation into account. OCL2.0: output = feature->select(f | let direction: FeatureDirectionKind = directionOf(f) in direction = FeatureDirectionKind::out or direction = FeatureDirectionKind::inout) Type
deriveTypeOwnedConjugator Public The ownedConjugator of a Type is the its single ownedRelationship that is a Conjugation. OCL2.0: ownedConjugator = let ownedConjugators: Sequence(Conjugator) = ownedRelationship->selectByKind(Conjugation) in if ownedConjugators->isEmpty() then null else ownedConjugators->at(1) endif Type
deriveTypeOwnedDifferencing Public The ownedDifferencings of a Type are its ownedRelationships that are Differencings. OCL2.0: ownedDifferencing = ownedRelationship->selectByKind(Differencing) Type
deriveTypeOwnedDisjoining Public The ownedDisjoinings of a Type are the ownedRelationships that are Disjoinings. OCL2.0: ownedDisjoining = ownedRelationship->selectByKind(Disjoining) Type
deriveTypeOwnedEndFeature Public The ownedEndFeatures of a Type are all its ownedFeatures for which isEnd = true. OCL2.0: ownedEndFeature = ownedFeature->select(isEnd) Type
deriveTypeOwnedFeature Public The ownedFeatures of a Type are the ownedMemberFeatures of its ownedFeatureMemberships. English: ownedFeature = ownedFeatureMembership.ownedMemberFeature Type
deriveTypeOwnedFeatureMembership Public The ownedFeatureMemberships of a Type are its ownedMemberships that are FeatureMemberships. OCL2.0: ownedFeatureMembership = ownedRelationship->selectByKind(FeatureMembership) Type
deriveTypeOwnedIntersecting Public The ownedIntersectings of a Type are the ownedRelationships that are Intersectings. OCL2.0: ownedRelationship->selectByKind(Intersecting) Type
deriveTypeOwnedSpecialization Public The ownedSpecializations of a Type are the ownedRelationships that are Specializations whose special Type is the owning Type. OCL2.0: ownedSpecialization = ownedRelationship->selectByKind(Specialization)-> select(s | s.special = self) Type
deriveTypeOwnedUnioning Public The ownedUnionings of a Type are the ownedRelationships that are Unionings. OCL2.0: ownedUnioning = ownedRelationship->selectByKind(Unioning) Type
deriveTypeUnioningType Public The unioningTypes of a Type are the unioningTypes of its ownedUnionings. OCL2.0: unioningType = ownedUnioning.unioningType Type
deriveUsageDirectedUsage Public The directedUsages of a Usage are all its directedFeatures that are Usages. OCL2.0: directedUsage = directedFeature->selectByKind(Usage) Usage
deriveUsageIsReference Public A Usage is referential if it is not composite. OCL2.0: isReference = not isComposite Usage
deriveUsageMayTimeVary Public A Usage mayTimeVary if and only if all of the following are true
  • It has an owningType that specializes Occurrences::Occurrence (from the Kernel Semantic Library).
  • It is not a portion.
  • It does not specialize Links::SelfLink or Occurrences::HappensLink (from the Kernel Semantic Library).
  • If isComposite = true, it does not specialize Actions::Action (from the Systems Model Library).
OCL2.0: mayTimeVary = owningType <> null and owningType.specializesFromLibrary('Occurrences::Occurrence') and not ( isPortion or specializesFromLibrary('Links::SelfLink') or specializesFromLibrary('Occurrences::HappensLink') or isComposite and specializesFromLibrary('Actions::Action') ) Usage
deriveUsageNestedAction Public The ownedActions of a Usage are all its ownedUsages that are ActionUsages. OCL2.0: nestedAction = nestedUsage->selectByKind(ActionUsage) Usage
deriveUsageNestedAllocation Public The ownedAllocations of a Usage are all its ownedUsages that are AllocationUsages. OCL2.0: nestedAllocation = nestedUsage->selectByKind(AllocationUsage) Usage
deriveUsageNestedAnalysisCase Public The ownedAnalysisCases of a Usage are all its ownedUsages that are AnalysisCaseUsages. OCL2.0: nestedAnalysisCase = nestedUsage->selectByKind(AnalysisCaseUsage) Usage
deriveUsageNestedAttribute Public The ownedAttributes of a Usage are all its ownedUsages that are AttributeUsages. OCL2.0: nestedAttribute = nestedUsage->selectByKind(AttributeUsage) Usage
deriveUsageNestedCalculation Public The ownedCalculations of a Usage are all its ownedUsages that are CalculationUsages. OCL2.0: nestedCalculation = nestedUsage->selectByKind(CalculationUsage) Usage
deriveUsageNestedCase Public The ownedCases of a Usage are all its ownedUsages that are CaseUsages. OCL2.0: nestedCase = nestedUsage->selectByKind(CaseUsage) Usage
deriveUsageNestedConcern Public The ownedConcerns of a Usage are all its ownedUsages that are ConcernUsages. OCL2.0: nestedConcern = nestedUsage->selectByKind(ConcernUsage) Usage
deriveUsageNestedConnection Public The ownedConnections of a Usage are all its ownedUsages that are ConnectorAsUsages. OCL2.0: nestedConnection = nestedUsage->selectByKind(ConnectorAsUsage) Usage
deriveUsageNestedConstraint Public The ownedConstraints of a Usage are all its ownedUsages that are ConstraintUsages. OCL2.0: nestedConstraint = nestedUsage->selectByKind(ConstraintUsage) Usage
deriveUsageNestedEnumeration Public The ownedEnumerations of a Usage are all its ownedUsages that are EnumerationUsages. OCL2.0: ownedNested = nestedUsage->selectByKind(EnumerationUsage) Usage
deriveUsageNestedFlow Public The ownedFlows of a Usage are all its ownedUsages that are FlowConnectionUsages. OCL2.0: nestedFlow = nestedUsage->selectByKind(FlowConnectionUsage) Usage
deriveUsageNestedInterface Public The ownedInterfaces of a Usage are all its ownedUsages that are InterfaceUsages. OCL2.0: nestedInterface = nestedUsage->selectByKind(ReferenceUsage) Usage
deriveUsageNestedItem Public The ownedItems of a Usage are all its ownedUsages that are ItemUsages. OCL2.0: nestedItem = nestedUsage->selectByKind(ItemUsage) Usage
deriveUsageNestedMetadata Public The ownedMetadata of a Usage are all its ownedUsages that are MetadataUsages. OCL2.0: nestedMetadata = nestedUsage->selectByKind(MetadataUsage) Usage
deriveUsageNestedOccurrence Public The ownedOccurrences of a Usage are all its ownedUsages that are OccurrenceUsages. OCL2.0: nestedOccurrence = nestedUsage->selectByKind(OccurrenceUsage) Usage
deriveUsageNestedPart Public The ownedParts of a Usage are all its ownedUsages that are PartUsages. OCL2.0: nestedPart = nestedUsage->selectByKind(PartUsage) Usage
deriveUsageNestedPort Public The ownedPorts of a Usage are all its ownedUsages that are PortUsages. OCL2.0: nestedPort = nestedUsage->selectByKind(PortUsage) Usage
deriveUsageNestedReference Public The ownedReferences of a Usage are all its ownedUsages that are ReferenceUsages. OCL2.0: nestedReference = nestedUsage->selectByKind(ReferenceUsage) Usage
deriveUsageNestedRendering Public The ownedRenderings of a Usage are all its ownedUsages that are RenderingUsages. OCL2.0: nestedRendering = nestedUsage->selectByKind(RenderingUsage) Usage
deriveUsageNestedRequirement Public The ownedRequirements of a Usage are all its ownedUsages that are RequirementUsages. OCL2.0: nestedRequirement = nestedUsage->selectByKind(RequirementUsage) Usage
deriveUsageNestedState Public The ownedStates of a Usage are all its ownedUsages that are StateUsages. OCL2.0: nestedState = nestedUsage->selectByKind(StateUsage) Usage
deriveUsageNestedTransition Public The ownedTransitions of a Usage are all its ownedUsages that are TransitionUsages. OCL2.0: nestedTransition = nestedUsage->selectByKind(TransitionUsage) Usage
deriveUsageNestedUsage Public The ownedUsages of a Usage are all its ownedFeatures that are Usages. OCL2.0: nestedUsage = ownedFeature->selectByKind(Usage) Usage
deriveUsageNestedUseCase Public The ownedUseCases of a Usage are all its ownedUsages that are UseCaseUsages. OCL2.0: nestedUseCase = nestedUsage->selectByKind(UseCaseUsage) Usage
deriveUsageNestedVerificationCase Public The ownedValidationCases of a Usage are all its ownedUsages that are ValidationCaseUsages. OCL2.0: nestedVerificationCase = nestedUsage->selectByKind(VerificationCaseUsage) Usage
deriveUsageNestedView Public The ownedViews of a Usage are all its ownedUsages that are ViewUsages. OCL2.0: nestedView = nestedUsage->selectByKind(ViewUsage) Usage
deriveUsageNestedViewpoint Public The ownedViewpoints of a Usage are all its ownedUsages that are ViewpointUsages. OCL2.0: nestedViewpoint = nestedUsage->selectByKind(ViewpointUsage) Usage
deriveUsageUsage Public The usages of a Usage are all its features that are Usages. OCL2.0: usage = feature->selectByKind(Usage) Usage
deriveUsageVariant Public The variants of a Usage are the ownedVariantUsages of its variantMemberships. OCL2.0: variant = variantMembership.ownedVariantUsage Usage
deriveUsageVariantMembership Public The variantMemberships of a Usage are those ownedMemberships that are VariantMemberships. OCL2.0: variantMembership = ownedMembership->selectByKind(VariantMembership) Usage
validateElementIsImpliedIncluded Public If an Element has any ownedRelationships for which isImplied = true, then the Element must also have isImpliedIncluded = true. (Note that an Element can have isImplied = true even if no ownedRelationships have isImplied = true, indicating the Element simply has no implied Relationships. OCL2.0: ownedRelationship->exists(isImplied) implies isImpliedIncluded Element
validateExpressionResultExpressionMembership Public An Expression must have at most one ResultExpressionMembership. OCL2.0: membership->selectByKind(ResultExpressionMembership)->size() <= 1 Expression
validateExpressionResultParameterMembership Public An Expression must have exactly one featureMembership (owned or inherited) that is a ResultParameterMembership. OCL2.0: featureMembership-> selectByKind(ReturnParameterMembership)-> size() = 1 Expression
validateFeatureChainingFeatureConformance Public Each chainingFeature (other than the first) must be featured within the previous chainingFeature. OCL2.0: Sequence{2..chainingFeature->size()}->forAll(i | chainingFeature->at(i).isFeaturedWithin(chainingFeature->at(i-1))) Feature
validateFeatureChainingFeatureNotOne Public A Feature must have either no chainingFeatures or more than one. OCL2.0: chainingFeature->size() <> 1 Feature
validateFeatureChainingFeaturesNotSelf Public A Feature cannot be one of its own chainingFeatures. English: chainingFeature->excludes(self) Feature
validateFeatureConstantIsVariable Public A Feature with isConstant = true must have isVariable = true. OCL2.0: isConstant implies isVariable Feature
validateFeatureCrossFeatureSpecialization Public If this Feature has a crossFeature, then, for any Feature that is redefined by this Feature, the crossFeature must specialize the crossFeature of the redefined end Feature, if this exists. OCL2.0: crossFeature <> null implies ownedRedefinition.redefinedFeature.crossFeature-> forAll(f | f <> null implies crossFeature.specializes(f)) Feature
validateFeatureCrossFeatureType Public The crossFeature of a Feature must have the same types as the Feature. OCL2.0: crossFeature <> null implies crossFeature.type->asSet() = type->asSet() Feature
validateFeatureEndIsConstant Public A Feature with isEnd = true and isVariable = true must have isConstant = true. OCL2.0: isEnd and isVariable implies isConstant Feature
validateFeatureEndMultiplicity Public If a Feature has isEnd = true, then it must have multiplicity 1..1. OCL2.0: isEnd implies multiplicities().allSuperTypes()->flatten()-> selectByKind(MultiplicityRange)->exists(hasBounds(1,1)) Feature
validateFeatureEndNoDirection Public A Feature with isEnd = true must have no direction. OCL2.0: isEnd implied direction = null Feature
validateFeatureEndNotDerivedAbstractCompositeOrPortion Public A Feature with isEnd = true must have all of isDerived = false, isAbstract = false, isComposite = false, and isPortion = false. OCL2.0: isEnd implies not (isDerived or isAbstract or isComposite or isPortion) Feature
validateFeatureIsVariable Public A Feature with isVariable = true must have an owningType that directly or indirectly specializes the Class Occurrences::Occurrence from the Kernel Semantic Library. OCL2.0: isVariable implies owningType <> null and owningType.specializes('Occurrences::Occurrence') Feature
validateFeatureMultiplicityDomain Public If a Feature has a multiplicity, then the featuringTypes of the multiplicity must be the same as those of the Feature itself. OCL2.0: multiplicity <> null implies multiplicity.featuringType = featuringType Feature
validateFeatureOwnedCrossSubsetting Public A Feature must have at most one ownedSubsetting that is a CrossSubsetting. OCL2.0: ownedSubsetting->selectByKind(CrossSubsetting)->size() <= 1 Feature
validateFeatureOwnedReferenceSubsetting Public A Feature must have at most one ownedSubsetting that is an ReferenceSubsetting. OCL2.0: ownedSubsetting->selectByKind(ReferenceSubsetting)->size() <= 1 Feature
validateFeaturePortionNotVariable Public No Documentation Provided OCL2.0: isPortion implies not isVariable Feature
validateNamespaceDistinguishibility Public All memberships of a Namespace must be distinguishable from each other. OCL2.0: membership->forAll(m1 | membership->forAll(m2 | m1 <> m2 implies m1.isDistinguishableFrom(m2))) Namespace
validateOccurrenceUsageIndividualDefinition Public An OccurrenceUsage must have at most one occurrenceDefinition with isIndividual = true. OCL2.0: occurrenceDefinition-> selectByKind(OccurrenceDefinition)-> select(isIndividual).size() <= 1 OccurrenceUsage
validateOccurrenceUsageIndividualUsage Public If an OccurrenceUsage has isIndividual = true, then it must have an individualDefinition. OCL2.0: isIndividual implies individualDefinition <> null OccurrenceUsage
validateOccurrenceUsageIsPortion Public If an OccurrenceUsage has a non-null portionKind, then it must have isPortion = true. OCL2.0: portionKind <> null implies isPortion OccurrenceUsage
validateOccurrenceUsagePortionKind Public If an OccurrenceUsage has a non-null portionKind, then its owningType must be an OccurrenceDefinition or an OccurrenceUsage. OCL2.0: portionKind <> null implies owningType <> null and (owningType.oclIsKindOf(OccurrenceDefinition) or owningType.oclIsKindOf(OccurrenceUsage)) OccurrenceUsage
validateRequirementUsageOnlyOneSubject Public A RequirementDefinition must have at most one featureMembership that is a SubjectMembership. OCL2.0: featureMembership-> selectByKind(SubjectMembership)-> size() <= 1 RequirementUsage
validateRequirementUsageSubjectParameterPosition Public The subjectParameter of a RequirementUsage must be its first input. OCL2.0: input->notEmpty() and input->first() = subjectParameter RequirementUsage
validateTypeAtMostOneConjugator Public A Type must have at most one owned Conjugation Relationship. OCL2.0: ownedRelationship->selectByKind(Conjugation)->size() <= 1 Type
validateTypeDifferencingTypesNotSelf Public A Type cannot be one of its own differencingTypes. English: differencingType->excludes(self) Type
validateTypeIntersectingTypesNotSelf Public A Type cannot be one of its own intersectingTypes. English: intersectingType->excludes(self) Type
validateTypeOwnedDifferencingNotOne Public A Type must not have exactly one ownedDifferencing. OCL2.0: ownedDifferencing->size() <> 1 Type
validateTypeOwnedIntersectingNotOne Public A Type must not have exactly one ownedIntersecting. OCL2.0: ownedIntersecting->size() <> 1 Type
validateTypeOwnedMultiplicity Public A Type may have at most one ownedMember that is a Multiplicity. OCL2.0: ownedMember->selectByKind(Multiplicity)->size() <= 1 Type
validateTypeOwnedUnioningNotOne Public A Type must not have exactly one ownedUnioning. OCL2.0: ownedUnioning->size() <> 1 Type
validateTypeUnioningTypesNotSelf Public A Type cannot be one of its own unioningTypes. English: unioningType->excludes(self) Type
validateUsageIsReferential Public A Usage that is directed, an end feature or has no featuringTypes must be referential. OCL2.0: direction <> null or isEnd or featuringType->isEmpty() implies isReference Usage
validateUsageVariationIsAbstract Public If a Usage is a variation, then it must be abstract. OCL2.0: isVariation implies isAbstract Usage
validateUsageVariationOwnedFeatureMembership Public If a Usage is a variation, then it must not have any ownedFeatureMemberships. OCL2.0: isVariation implies ownedFeatureMembership->isEmpty() Usage
validateUsageVariationSpecialization Public A variation Usage may not specialize any variation Definition or Usage. OCL2.0: isVariation implies not ownedSpecialization.specific->exists( oclIsKindOf(Definition) and oclAsType(Definition).isVariation or oclIsKindOf(Usage) and oclAsType(Usage).isVariation) Usage

Properties

Name Visibility Type Default Description Owner
actorParameter Public PartUsage [0..*] {derived} {ordered} {subsetted: Step.parameter} null The parameters of this RequirementUsage that represent actors involved in the requirement. RequirementUsage
aliasIds Public String [0..*] {ordered} null Various alternative identifiers for this Element. Generally, these will be set by tools. Element
assumedConstraint Public ConstraintUsage [0..*] {derived} {ordered} {subsetted: Type.ownedFeature} null The owned ConstraintUsages that represent assumptions of this RequirementUsage, derived as the ownedConstraints of the RequirementConstraintMemberships of the RequirementUsage with kind = assumption. RequirementUsage
behavior Public Behavior [0..*] {derived} {ordered} {redefined by: Expression.function} {subsetted: Feature.type} {many-to-many:Step.typedStep} null The Behaviors that type this Step. Step
chainingFeature Public Feature [0..*] {derived} {ordered} {many-to-many:Feature.chainedFeature} null The Feature that are chained together to determine the values of this Feature, derived from the chainingFeatures of the ownedFeatureChainings of this Feature, in the same order. The values of a Feature with chainingFeatures are the same as values of the last Feature in the chain, which can be found by starting with the values of the first Feature (for each instance of the domain of the original Feature), then using each of those as domain instances to find the values of the second Feature in chainingFeatures, and so on, to values of the last Feature. Feature
concernDefinition Public ConcernDefinition [0..1] {derived} {redefines: RequirementUsage.requirementDefinition} null The ConcernDefinition that is the single type of this ConcernUsage. ConcernUsage
constraintDefinition Public Predicate [0..1] {derived} {redefines: BooleanExpression.predicate} {redefined by: RequirementUsage.requirementDefinition} null The (single) Predicate that is the type of this ConstraintUsage. Nominally, this will be a ConstraintDefinition, but other kinds of Predicates are also allowed, to permit use of Predicates from the Kernel Model Libraries. ConstraintUsage
crossFeature Public Feature [0..1] {derived} null The second chainingFeature of the crossedFeature of the ownedCrossSubsetting of this Feature, if it has one. Semantically, the values of the crossFeature of an end Feature must include all values of the end Feature obtained when navigating from values of the other end Features of the same owningType. Feature
declaredName Public String [0..1] null The declared name of this Element. Element
declaredShortName Public String [0..1] {redefined by: RequirementUsage.reqId} null An optional alternative name for the Element that is intended to be shorter or in some way more succinct than its primary name. It may act as a modeler-specified identifier for the Element, though it is then the responsibility of the modeler to maintain the uniqueness of this identifier within a model or relative to some other context. Element
definition Public Classifier [0..*] {deriv