Subsetting

Subsetting is defined in KerML specification on page 61. Excerpt from the machine readable specification:

Subsetting is Specialization in which the specific and general Types are Features. This means all values of the subsettingFeature (on instances of its domain, i.e., the intersection of its featuringTypes) are values of the subsettedFeature on instances of its domain. To support this the domain of the subsettingFeature must be the same or specialize (at least indirectly) the domain of the subsettedFeature (via Specialization), and the co-domain (intersection of the types) of the subsettingFeature must specialize the co-domain of the subsettedFeature.

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

// Class: Subsetting
 digraph {
     Subsetting [label="Subsetting (KerML)" shape=plaintext]
     Specialization -> Subsetting
     Specialization [label="Specialization (KerML)" shape=plaintext]
     Relationship -> Specialization
     Relationship [label="Relationship (KerML)" shape=plaintext]
     Element -> Relationship
     Element [label="Element (KerML)" shape=plaintext]
 }

The following table shows all attributes defined for Subsetting 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 Subsetting:

owning_feature

A subsettingFeature that is also the owningRelatedElement of this Subsetting.

subsetted_feature

The Feature that is subsetted by the subsettingFeature of this Subsetting.

subsetting_feature

The Feature that is a subset of the subsettedFeature of this Subsetting.

Attributes defined in Specialization:

general

A Type with a superset of all instances of the specific Type, which might be the same set.

owning_type

The Type that is the specific Type of this Specialization and owns it as its owningRelatedElement.

specific

A Type with a subset of all instances of the general Type, which might be the same set.

Attributes defined in Relationship:

is_implied

Whether this Relationship was generated by tooling to meet semantic rules, rather than being directly created by a modeler.

owned_related_elements

The relatedElements of this Relationship that are owned by the Relationship.

owning_related_element

The relatedElement of this Relationship that owns the Relationship, if any.

related_elements

The Elements that are related by this Relationship, derived as the union of the source and target Elements of the Relationship.

sources

The relatedElements from which this Relationship is considered to be directed.

targets

The relatedElements to which this Relationship is considered to be directed.

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 Subsetting:

class Subsetting
__cpp_name__: str = 'syside::sysml::Subsetting'
STD: tuple[type[syside.Subsetting], ...] = ()
CHAINABLE: bool = True
property subsetted_feature: syside.Feature | None
property subsetting_feature: syside.Feature | None
property owning_feature: syside.Feature | None
property subsetted_feature_target: syside.ChainedFeatureReference
property subsetting_feature_target: syside.ChainedFeatureReference
property general: syside.Type | None
property specific: syside.Type | None
property owning_type: syside.Type | None
property children: syside.RelationshipBody
property specific_target: syside.ChainedTypeReference
property general_target: syside.ChainedTypeReference
property is_implied: bool
property visibility: syside.VisibilityKind
try_set_visibility(arg: syside.VisibilityKind | None) bool
reset_visibility() None
property is_visibility_implied: bool
property sources: syside.ContainerView[syside.Element]
property targets: syside.ContainerView[syside.Element]
property related_elements: syside.LazyIterator[syside.Element]
property first_source: syside.Element | None
property first_target: syside.Element | None
__str__() str
property element_id: uuid.UUID
property sema_state: syside.SemaState
property declared_name: str | None
property declared_short_name: str | None
property name: str | None
property short_name: str | None
property qualified_name: syside.QualifiedName | None
matches_qualified_name(arg: Sequence[str], /) bool
property is_implied_included: bool
property is_library_element: bool
property owning_membership: syside.OwningMembership | None
property owned_relationships: syside.LazyIterator[syside.Relationship]
property owning_relationship: syside.Relationship | None
property owning_namespace: syside.Namespace | None
property owner: syside.Element | None
property scoped_owner: syside.Element | None
property owned_elements: syside.LazyIterator[syside.Element]
property documentation: syside.LazyIterator[syside.Documentation]
property owned_annotations: syside.LazyIterator[syside.Annotation]
property comments: syside.LazyIterator[syside.Comment]
property textual_representations: syside.LazyIterator[syside.TextualRepresentation]
property metadata: syside.LazyIterator[syside.MetadataFeature | syside.MetadataUsage]
__hash__() int
isinstance(type: syside.AstNode.isinstance.type[syside.TNode]) TypeGuard[syside.TNode]
isinstance(type: tuple[syside.AstNode.isinstance.type[syside.TNode], ...]) TypeGuard[syside.TNode]
try_cast(*type: type[syside.TNode]) syside.TNode | None
try_cast(type: tuple[syside.AstNode.try_cast.type[syside.TNode], ...]) syside.TNode | None
cast(*type: type[syside.TNode]) syside.TNode
cast(type: tuple[syside.AstNode.cast.type[syside.TNode], ...]) syside.TNode
property parent: syside.Element | None
property document: syside.Document
property cst_node: syside.CstNode | None