Generated with uml4net version 6.3.2.0 on 2026-02-07 23:40:37
OMG SysML® Version 2 UML based Meta Model Documentation
Commit f1fd2b83e460f5695e8edcd780f43909f359d299
Powered By Starion Group, 2022-2026
| 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
|
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 |
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
|
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 |
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 |
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 |
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
|
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 |
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
|
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 |
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 |
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 |
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
|
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 |
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
|
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 |
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 |
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 |
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 |
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
|
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 |
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 |
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
|
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 |
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 |
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
|
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 |
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
|
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 |
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
|
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 |
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
|
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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
|
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 |
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
|
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 |
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 |
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 |
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
|
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 |
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 |
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
|
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 |
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
|
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 |
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
|
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 |
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 |
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 |
| 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 |
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 |
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
|
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 |
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
|
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 |
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 |
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 |
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 |
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 |
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
|
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 |
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 |
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
|
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 |
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 |
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 |
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 |
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:
|
| 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 |
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 |
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
|
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 |
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 |
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 |
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 |
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
|
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 |
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
|
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 |