0

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?

dumeng
  • 67
  • 1
  • 5

0 Answers0