Note: Features on nonoccurrence classes that should be vars when specialized to occurrences (including "top-level" features) require a constraint on Occurrence to make them vars. Readonly features Readonly features on nonoccurrence classes Must be vars when specialized to occurrence classes (unless they're intended to be features only of lives). Links::Link:participant:Anything[2..*] nonunique ordered; Links::BinaryLink::source/target: Anything[1] nonunique subsets participant; Another data point for the JIRA discussion on participants as (non) vars. Metaobjects::Metaobject::annotatedElement:Element[1..*] Metaobjects::SemanticMetadata::redefines annotatedElement : Type[1] Clocks::universalClock:UniversalClockLife[1] Observation::defaultMonitor[1] : DefaultMonitorLife SpatialFrames::feature defaultFrame : DefaultFrameLife[1] Above are domain Anything ("top level"). Must be const to prevent deleting the (single) *Life, then immediate recreating and "resetting" feature (logically possible). Readonly features on occurrence classes: Are these intended to be features only of lives? Transfers::Transfer:isInstant/isMove/isPush: Boolean[1] StatePerformances::StatePerformance:incomingTransitionTrigger : MessageTransfer [0..1] default null "Root, top-level" features on non-occurrence classes All intended to "change" over time when specialized to occurrence classes. Base::things: Anything [1..*] nonunique Base::dataValues: DataValue[0..*] nonunique subsets things Base::naturals: ScalarValues::Natural[0..*] subsets dataValues //Can these change dynamically? Base::zeroOrOne [0..1] (multiplicity) Base::oneToMany [1..*] (multiplicity) Base::zeroToMany [0..*] (multiplicity) Links::links: Link[0..*] nonunique subsets things Links::binaryLinks: BinaryLink[0..*] nonunique subsets links Links::selfLinks: SelfLink[0..*] nonunique subsets binaryLinks //Can these change dynamically? Metaobjects::feature metaobjects : Metaobject[0..*] :> objects Occurrences::occurrences: Occurrence[0..*] nonunique subsets things; Occurrences::earlierFirstIncomingTransferSort : IncomingTransferSort Objects::objects: Object[0..*] nonunique subsets occurrences { Objects::linkObjects: LinkObject[0..*] nonunique subsets links, objects intersects links, objects { Objects::binaryLinkObjects: BinaryLinkObject[0..*] nonunique subsets binaryLinks, linkObjects Performances::, Transfers:: top-level features, all for steps, exprs, transfers, flows. I figure these are non-vars (at least for steps, transfers, and flows, since their specializations will be linked by successions). Other features on non-occurrence classes that should be vars when specialized to occurrences Not Base::Anything::self: Anything[1] subsets things chains things.that Base::things::that : Anything[1] Links::* Other features on occurrence classes that should be vars Features specializing vars above must be vars (omitted here). Clocks::Clock::currentTime:NumericalValue[1] Occurrences::Occurrence::suboccurrence Root for composition semantics. Occurrences::Occurrence:: (purely) Space relations between occurrences These'll typically change over time, tho they can also relate things happening at separate times (ie, aren't always time-aligned). ?? (Might be const) Occurrences::incomingTransfersToSelf subsets incomingTransfers { Occurrences::Occurrence::outgoingTransfersFromSelf subsets outgoingTransfers Occurrences::Occurrence::incomingTransferSort Occurrences::Occurrence::isDispatch : Boolean[1] default false Occurrences::Occurrence::dispatchScope: Occurrence [1] default self; Occurrences::Occurrence::runToCompletionScope: Occurrence [1] default self; Objects::Object::involvingPerformances: Performance[0..*] subsets performances (specialized by enactedPerformances) Steps, but only bc they're typed by performances. Linkable by successions? LinkObjects ?? "Root" Performances::Performance Not Clocks::Clock::timeFlowConstraint Already written against snapshots (simpler as var) Occurrences::Occurrence::Time relations between occurrences Intended for the entire time of the occurrence Observation::* SpatialFrames::* ?? SemanticMetadata::baseType : Type[1] Occurrences::Occurrence::localClock:Clock[1] default universalClock Should snapshot always use the clock of their life? If not, I guess this could be a var. Occurrences::Occurrence:incoming/outgoingTransfersTo/FromSelf