Redefinition
Redefinition
is defined in KerML specification on
page 62.
Excerpt from the machine readable specification:
Redefinition
is a kind ofSubsetting
that requires theredefinedFeature
and theredefiningFeature
to have the same values (on each instance of the domain of theredefiningFeature
). This means any restrictions on theredefiningFeature
, such astype
ormultiplicity
, also apply to theredefinedFeature
(on each instance of the domain of theredefiningFeature
), and vice versa. TheredefinedFeature
might have values for instances of the domain of theredefiningFeature
, but only as instances of the domain of theredefinedFeature
that happen to also be instances of the domain of theredefiningFeature
. This is supported by the constraints inherited fromSubsetting
on the domains of theredefiningFeature
andredefinedFeature
. However, these constraints are narrowed forRedefinition
to require theowningTypes
of theredefiningFeature
andredefinedFeature
to be different and theredefinedFeature
to not be inherited into theowningNamespace
of theredefiningFeature
.This enables theredefiningFeature
to have the same name as theredefinedFeature
, if desired.
The following diagram shows the inheritance hierarchy of Redefinition
according to the specification:
![// Class: Redefinition
digraph {
Redefinition [label="Redefinition (KerML)" shape=plaintext]
Subsetting -> Redefinition
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]
}](../../../_images/graphviz-fe5c446b7cda2b2ef379932d447bcc514e85070f.png)
The following table shows all attributes defined for
Redefinition
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 |
|
The |
|
The |
|
Attributes defined in |
|
A |
|
The |
|
The |
|
Attributes defined in |
|
A |
|
The |
|
A |
|
Attributes defined in |
|
Whether this Relationship was generated by tooling to meet semantic rules, rather than being directly created by a modeler. |
|
The relatedElements of this Relationship that are owned by the Relationship. |
|
The relatedElement of this Relationship that owns the Relationship, if any. |
|
The Elements that are related by this Relationship, derived as the union
of the |
|
The
|
|
The |
|
Attributes defined in |
|
The declared name of this |
|
An optional alternative name for the |
|
The Documentation owned by this Element. |
|
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. |
|
Whether all necessary implied Relationships have been included in the
|
|
Whether this Element is contained in the ownership tree of a library model. |
|
The name to be used for this |
|
The |
|
The Elements owned by this Element, derived as the ownedRelatedElements of the ownedRelationships of this Element. |
|
The Relationships for which this Element is the owningRelatedElement. |
|
The owner of this Element, derived as the |
|
The |
|
The |
|
The Relationship for which this Element is an ownedRelatedElement, if any. |
|
The full ownership-qualified name of this |
|
The short name to be used for this |
|
The |
The following table lists SysIDE specific attributes available for
class Redefinition
:
Python Attribute |
- class Redefinition
-
- STD: tuple[type[syside.Redefinition], ...] = ()
- property redefining_feature: syside.Feature | None
- property redefined_feature: syside.Feature | None
- property redefining_feature_target: syside.ChainedFeatureReference
- property redefined_feature_target: syside.ChainedFeatureReference