Say we have such model written in SysML v2 (taken from sysml domain library, the source is in causionConnections and CauseAndEffect):
abstract occurrence causes[*] {
doc /* Occurrences that are causes. */
}
abstract occurrence effects[*] {
doc /* Occurrences that are effects. */
}
metadata def <cause> CauseMetadata :> SemanticMetadata {
doc
/*
* CauseMetadata identifies a usage as being a cause occurrence.
* It is intended to be used to tag the cause ends of a Multicausation.
*/
ref :>> annotatedElement : SysML::Usage;
ref :>> baseType = causes as SysML::Usage;
}
metadata def CausationMetadata {
doc
/*
* CausationMetadata allows for the specification of additional metadata about
* a cause-effect connection definition or usage.
*/
ref :> annotatedElement : SysML::ConnectionDefinition;
ref :> annotatedElement : SysML::ConnectionUsage;
attribute isNecessary : Boolean default false {
}
attribute isSufficient : Boolean default false {
}
attribute probability : Real[0..1] {
}
}
// !some model element is omited for simplicity,
//the `causations` is an abstract ConnectionUsage.
metadata def <causation> CausationSemanticMetadadata :> CausationMetadata, SemanticMetadata {
doc
/*
* CausationMetadata is SemanticMetadata for a Causation connection.
*/
ref :>> baseType = causations meta SysML::Usage;
}
My question is: why the as
operator is used in the first MetadataDefinition cause
, while the meta
operator is used in the second MetadataDefinition causation
?
In my opinion the operator seems no meaning here.
What does the operator as
and meta
do and why are the difference?