SysML 2.0b4 FTF Avatar
  1. OMG Issue

SYSML2_ — timeslice/snapshot featuring types required to specialize or be same as types

  • Key: SYSML2_-158
  • Status: closed  
  • Source: NIST ( Mr. Conrad Bock)
  • Summary:

    Clause 8.3.9.5 (OccurrenceUsage), Constraints, says

    checkOccurrenceUsageTypeFeaturing
    If the portionKind of an OccurrenceUsage is not empty, then, for each occurrenceDefinition of the OccurrenceUsage, there must be a featuringType of the OccurrenceUsage which either is the occurrenceDefinition or directly or indirectly specializes it.

    portionKind <> null implies
      occurrenceDefinition->forAll(occ |
        featuringType->exists(specializes(occ)))
    

    For example, adapted from 7.13.5 (Successions as Usages):

    occurrence def Flight {
      timeslice preflight : Preflight [1];
      then timeslice inflight : Inflight [1];
      then timeslice postflight : Postflight[1];
    

    checkOccurrenceUsageTypeFeaturing requires Flight to specialize each of Pre/In/Postflight, even though these would typically be disjoint with Flight, leading to:

    • all features defined in Pre/In/Postflight "inheriting" to Flight, eg, PreFlight::refuel, would inherit to Flight, with a separate value potentially unconstrained in time from the one happening in preflight.
    • valid traces where all the pre/in/postflight values are instances of Flight, which are all required to have pre/in/postflight timeslices.

    which probably aren't intended in this exampie.

  • Reported: SysML 2.0a1 — Mon, 6 Nov 2023 14:05 GMT
  • Disposition: Resolved — SysML 2.0b4
  • Disposition Summary:

    Revise individual, time slice and snapshot modeling

    The approach taken to time slice and snapshot modeling in SysML was predicated on the presumption that KerML Classes classified not only Lives, but also all portions of those Lives, meaning that any portion must have the same type as its portionOfLife. However, this presumption was never actually formalized in KerML, and only appeared in a single statement in subclause 9.2.4.1 (Occurrences Overview) that "[portions] must be classified the same way as the Occurrences they are portionsOf, or more specialized." And, in the resolution to KERML-204, the KerML FTF1 removed this statement and made it clear (as of the Beta 2 version of the spec) that portions did not have to have the same type as what they are portions of.

    The removal of this presumption allows for significant simplifications in SysML for the modeling of individuals, time slices and snapshots. As proposed in this resolution:

    1. LifeClass can be removed from the SysML abstract syntax. Instead, a zeroOrOne multiplicity can be placed directly on an individual OccurrenceDefinition.
    2. An OccurrenceUsage with a non-null portionKind, whose owningType is an OccurrenceDefinition or OccurrenceUsage, can simply be required to subset either Occurrence::timeSlices or Occurrence::snapshots, depending on the portionKind.
    3. However, it is no longer supported to declare time slices or snapshots that are not directly nested in an OccurrenceDefinition or OccurrenceUsage. Without introducing new syntax, it is not clear how to allow such declarations without using the current approach of portioning the declared type of the usage, which would still have the problems described in the issue. And the capability for such "standalone" time slice and snapshot declarations was not considered important enough to introduce some sort of new syntax to continue to allow it.

    This resolution also resolves the following related issue:

    • SYSML2_-150 OccurrenceUsage missing portioningFeature
  • Updated: Sat, 19 Jul 2025 19:26 GMT
  • Attachments: