FeatureChainExpression

FeatureChainExpression is defined in KerML specification on page 233. Excerpt from the machine readable specification:

A FeatureChainExpression is an OperatorExpression whose operator is ".", which resolves to the Function ControlFunctions::'.' from the Kernel Functions Library. It evaluates to the result of chaining the result Feature of its single argument Expression with its targetFeature.

The following diagram shows the inheritance hierarchy of FeatureChainExpression according to the specification:

// Class: FeatureChainExpression
 digraph {
     FeatureChainExpression [label="FeatureChainExpression (KerML)" shape=plaintext]
     OperatorExpression -> FeatureChainExpression
     OperatorExpression [label="OperatorExpression (KerML)" shape=plaintext]
     InvocationExpression -> OperatorExpression
     InvocationExpression [label="InvocationExpression (KerML)" shape=plaintext]
     Expression -> InvocationExpression
     Expression [label="Expression (KerML)" shape=plaintext]
     Step -> Expression
     Step [label="Step (KerML)" shape=plaintext]
     Feature -> Step
     Feature [label="Feature (KerML)" shape=plaintext]
     Type -> Feature
     Type [label="Type (KerML)" shape=plaintext]
     Namespace -> Type
     Namespace [label="Namespace (KerML)" shape=plaintext]
     Element -> Namespace
     Element [label="Element (KerML)" shape=plaintext]
 }

The following table shows all attributes defined for FeatureChainExpression according to the specification together with the documentation from the machine readable specification. Note that in SysIDE API, we use snake case for attribute names instead of Pascal case used in the specification.

Attribute

Documentation from machine readable specification

Attributes defined in FeatureChainExpression:

target_feature

The Feature that is accessed by this FeatureChainExpression, which is its first non-parameter member.

Attributes defined in OperatorExpression:

operator

An operator symbol that names a corresponding Function from one of the standard packages from the Kernel Function Library .

Attributes defined in InvocationExpression:

arguments

The value Expressions of the FeatureValues of the owned input parameters of the InvocationExpression.

operands

Attributes defined in Expression:

function

The Function that types this Expression.

This is the Function that types the Expression.

is_model_level_evaluable

Whether this Expression meets the constraints necessary to be evaluated at model level, that is, using metadata within the model.

result

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.

Attributes defined in Step:

behaviors

The Behaviors that type this Step.

parameters

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.

Attributes defined in Feature:

cross_feature

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.

direction

Indicates how values of this Feature are determined or used (as specified for the FeatureDirectionKind).

end_owning_type

The Type that is related to this Feature by an EndFeatureMembership in which the Feature is an ownedMemberFeature.

feature_target

The last of the chainingFeatures of this Feature, if it has any. Otherwise, this Feature itself.

featuring_types

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.

is_composite

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.

is_derived

Whether the values of this Feature can always be computed from the values of other Features.

is_end

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.

is_nonunique

is_ordered

Whether an order exists for the values of this Feature or not.

is_portion

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.

is_read_only

Whether the values of this Feature can change over the lifetime of an instance of the domain.

is_unique

Whether or not values for this Feature must have no duplicates or not.

owned_cross_subsetting

The one ownedSubsetting of this Feature, if any, that is a CrossSubsetting}, for which the Feature is the crossingFeature.

owned_feature_chainings

The ownedRelationships of this Feature that are FeatureChainings, for which the Feature will be the featureChained.

owned_feature_invertings

The ownedRelationships of this Feature that are FeatureInvertings and for which the Feature is the featureInverted.

owned_redefinitions

The ownedSubsettings of this Feature that are Redefinitions, for which the Feature is the redefiningFeature.

owned_reference_subsetting

The one ownedSubsetting of this Feature, if any, that is a ReferenceSubsetting, for which the Feature is the referencingFeature.

owned_subsettings

The ownedSpecializations of this Feature that are Subsettings, for which the Feature is the subsettingFeature.

owned_type_featurings

The ownedRelationships of this Feature that are TypeFeaturings and for which the Feature is the featureOfType.

owned_typings

The ownedSpecializations of this Feature that are FeatureTypings, for which the Feature is the typedFeature.

owning_feature_membership

The FeatureMembership that owns this Feature as an ownedMemberFeature, determining its owningType.

owning_type

The Type that is the owningType of the owningFeatureMembership of this Feature.

types

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.

Attributes defined in Type:

differencing_types

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).

directed_features

The features of this Type that have a non-null direction.

end_features

All features of this Type with isEnd = true.

features

The ownedMemberFeatures of the featureMemberships of this Type.

feature_memberships

The FeatureMemberships for features of this Type, which include all ownedFeatureMemberships and those inheritedMemberships that are FeatureMemberships (but does not include any importedMemberships).

inherited_features

All the memberFeatures of the inheritedMemberships of this Type that are FeatureMemberships.

inherited_memberships

All Memberships inherited by this Type via Specialization or Conjugation. These are included in the derived union for the memberships of the Type.

inputs

All features related to this Type by FeatureMemberships that have direction in or inout.

intersecting_types

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).

is_abstract

Indicates whether instances of this Type must also be instances of at least one of its specialized Types.

is_conjugated

Indicates whether this Type has an ownedConjugator.

is_sufficient

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.)

multiplicity

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.

outputs

All features related to this Type by FeatureMemberships that have direction out or inout.

owned_conjugator

A Conjugation owned by this Type for which the Type is the originalType.

owned_differencings

The ownedRelationships of this Type that are Differencings, having this Type as their typeDifferenced.

owned_disjoinings

The ownedRelationships of this Type that are Disjoinings, for which the Type is the typeDisjoined Type.

owned_end_features

All endFeatures of this Type that are ownedFeatures.

owned_features

The ownedMemberFeatures of the ownedFeatureMemberships of this Type.

owned_feature_memberships

The ownedMemberships of this Type that are FeatureMemberships, for which the Type is the owningType. Each such FeatureMembership identifies an ownedFeature of the Type.

owned_intersectings

The ownedRelationships of this Type that are Intersectings, have the Type as their typeIntersected.

owned_specializations

The ownedRelationships of this Type that are Specializations, for which the Type is the specific Type.

owned_unionings

The ownedRelationships of this Type that are Unionings, having the Type as their typeUnioned.

unioning_types

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.

Attributes defined in Namespace:

members

The set of all member Elements of this Namespace, which are the memberElements of all memberships of the Namespace.

memberships

All Memberships in this Namespace, including (at least) the union of ownedMemberships and importedMemberships.

owned_imports

The ownedRelationships of this Namespace that are Imports, for which the Namespace is the importOwningNamespace.

owned_members

The owned members of this Namespace, which are the ownedMemberElements of the ownedMemberships of the Namespace.

owned_memberships

The ownedRelationships of this Namespace that are Memberships, for which the Namespace is the membershipOwningNamespace.

Attributes defined in Element:

declared_name

The declared name of this Element.

declared_short_name

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.

documentation

The Documentation owned by this Element.

element_id

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.

is_implied_included

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.

is_library_element

Whether this Element is contained in the ownership tree of a library model.

name

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.

owned_annotations

The ownedRelationships of this Element that are Annotations, for which this Element is the annotatedElement.

owned_elements

The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element.

owned_relationships

The Relationships for which this Element is the owningRelatedElement.

owner

The owner of this Element, derived as the owningRelatedElement of the owningRelationship of this Element, if any.

owning_membership

The owningRelationship of this Element, if that Relationship is a Membership.

owning_namespace

The Namespace that owns this Element, which is the membershipOwningNamespace of the owningMembership of this Element, if any.

owning_relationship

The Relationship for which this Element is an ownedRelatedElement, if any.

qualified_name

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.

short_name

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.

textual_representations

The TextualRepresentations that annotate this Element.

The following table lists SysIDE specific attributes available for class FeatureChainExpression:

Python Attribute

STD

target_feature_member

class FeatureChainExpression
__cpp_name__: str = 'syside::sysml::FeatureChainExpression'
STD: tuple[type[syside.FeatureChainExpression], ...] = ()
property target_feature: syside.Feature | None
property target_feature_member: syside.TargetFeatureAccessor