Found while raising the formal rigor of a reference-architecture model (mission-twin RA, v0.4.2 pinned binary).
Top-level redefinition in a specializing def — value dropped:
part def Block { attribute tempo : Tempo; }
part def Writer :> Block { attribute :>> tempo = Tempo::operative; }
-convert ttl emits Writer with no owned member for the redefined tempo at all: the value is unrecoverable from RDF (evaluation via -e sees it fine).
Nested anonymous redefinition — value kept:
interface def Seam {
attribute sla : ServiceLevelAgreement {
attribute :>> committedBy = PartyRole::custodian; // kept: sysml:redefines "committedBy" + sysml:value
}
}
The nested form converts as an anonymous AttributeUsage with sysml:redefines + sysml:value — exactly what one would want for the top-level form too.
Workaround we adopted: declare fresh same-named attributes per specializing def (which draws "Duplicate of inherited member name" warnings) or avoid inheritance for valued attributes.
Found while raising the formal rigor of a reference-architecture model (mission-twin RA, v0.4.2 pinned binary).
Top-level redefinition in a specializing def — value dropped:
-convert ttlemitsWriterwith no owned member for the redefinedtempoat all: the value is unrecoverable from RDF (evaluation via-esees it fine).Nested anonymous redefinition — value kept:
The nested form converts as an anonymous AttributeUsage with
sysml:redefines+sysml:value— exactly what one would want for the top-level form too.Workaround we adopted: declare fresh same-named attributes per specializing def (which draws "Duplicate of inherited member name" warnings) or avoid inheritance for valued attributes.