Issue 17049: Invalid restrictions on concrete metaclasses allowed in EMOF and CMOF (mof2core-rtf) Source: NASA (Dr. Nicolas F. Rouquette, nicolas.f.rouquette(at)jpl.nasa.gov) Nature: Enhancement Severity: Significant Summary: Per UML2.4.1, a In 12.4, constraint [8] currently reads: An EMOF metamodel is restricted to use the following concrete metaclasses from UML’s Kernel: • Class • Comment • DataType • Enumeration • EnumerationLiteral • Generalization • InstanceValue • LiteralBoolean • LiteralInteger • LiteralNull • LiteralReal • LiteralString • LiteralUnlimitedNatural • Operation • Package • Parameter • PrimitiveType • Property The list includes InstanceValue but incorrectly omits InstanceSpecification. InstanceSpecification must be included in the list because an InstanceValue requires an InstanceSpecification; see UML2.4.1, 7.3.23: • instance: InstanceSpecification [1] The instance that is the specified value. Since the list includes Class and a Class can have Property features, an InstanceSpecification that is the value of an InstanceValue in EMOF may have to specify values for the instantiated Class' Property features. Therefore, the list should also include UML2.4.1's Slot as well. The list should be corrected as follows: • Class • Comment • DataType • Enumeration • EnumerationLiteral • Generalization • InstanceSpecification • InstanceValue • LiteralBoolean • LiteralInteger • LiteralNull • LiteralReal • LiteralString • LiteralUnlimitedNatural • Operation • Package • Parameter • PrimitiveType • Property In 14.4, constraint [10] currently reads: A CMOF metamodel is restricted to use the following concrete metaclasses from UML’s Kernel: • Association • Class • Comment • Constraint • DataType • ElementImport • Enumeration • EnumerationLiteral • Generalization • InstanceValue • LiteralBoolean • LiteralInteger • LiteralNull • LiteralReal • LiteralString • LiteralUnlimitedNatural • OpaqueExpression • Operation • Package • PackageImport • PackageMerge • Parameter • PrimitiveType • Property The list includes InstanceValue but incorrectly omits InstanceSpecification. InstanceSpecification must be included in the list because an InstanceValue requires an InstanceSpecification; see UML2.4.1, 7.3.23: • instance: InstanceSpecification [1] The instance that is the specified value. Since the list includes Class and DataType, both of which can have Property features, an InstanceSpecification that is the value of an InstanceValue in CMOF may have to specify values for the instantiated Class' or DataType's Property features. Therefore, the list should also include UML2.4.1's Slot as well. The list should be corrected as follows: • Association • Class • Comment • Constraint • DataType • ElementImport • Enumeration • EnumerationLiteral • Generalization • InstanceSpecification • InstanceValue • LiteralBoolean • LiteralInteger • LiteralNull • LiteralReal • LiteralString • LiteralUnlimitedNatural • OpaqueExpression • Operation • Package • PackageImport • PackageMerge • Parameter • PrimitiveType • Property • Slot Resolution: Accept the proposal Revised Text: Clause 12.4 – EMOF Constraints In the bulleted list following [8] insert after “ • Generalization”: • InstanceSpecification and insert after “ • Property”: • Slot Clause 14.4 – CMOF Constraints In the bulleted list following [10] insert after “ • Generalization”: • InstanceSpecification and insert after “ • Property”: • Slot Actions taken: January 26, 2012: received issue April 6, 2015: closed issue Discussion: End of Annotations:===== m: webmaster@omg.org To: Subject: Issue/Bug Report ******************************************************************************* Name: Dr. Nicolas F. Rouquette Employer: JPL/NASA mailFrom: nicolas.f.rouquette@jpl.nasa.gov Terms_Agreement: I agree Specification: OMG Meta Object Facility (MOF) Core Specification Section: 12.4, 14.4 FormalNumber: formal/2011-08-07 Version: 2.4.1 Doc_Year: 2008 Doc_Month: November Doc_Day: 07 Page: 35,49 Title: Invalid restrictions on concrete metaclasses allowed in EMOF and CMOF Nature: Enhancement Severity: Significant CODE: 3TMw8 B1: Report Issue Description: Per UML2.4.1, a In 12.4, constraint [8] currently reads: An EMOF metamodel is restricted to use the following concrete metaclasses from UML.s Kernel: . Class . Comment . DataType . Enumeration . EnumerationLiteral . Generalization . InstanceValue . LiteralBoolean . LiteralInteger . LiteralNull . LiteralReal . LiteralString . LiteralUnlimitedNatural . Operation . Package . Parameter . PrimitiveType . Property The list includes InstanceValue but incorrectly omits InstanceSpecification. InstanceSpecification must be included in the list because an InstanceValue requires an InstanceSpecification; see UML2.4.1, 7.3.23: . instance: InstanceSpecification [1] The instance that is the specified value. Since the list includes Class and a Class can have Property features, an InstanceSpecification that is the value of an InstanceValue in EMOF may have to specify values for the instantiated Class' Property features. Therefore, the list should also include UML2.4.1's Slot as well. The list should be corrected as follows: . Class . Comment . DataType . Enumeration . EnumerationLiteral . Generalization . InstanceSpecification . InstanceValue . LiteralBoolean . LiteralInteger . LiteralNull . LiteralReal . LiteralString . LiteralUnlimitedNatural . Operation . Package . Parameter . PrimitiveType . Property In 14.4, constraint [10] currently reads: A CMOF metamodel is restricted to use the following concrete metaclasses from UML.s Kernel: . Association . Class . Comment . Constraint . DataType . ElementImport . Enumeration . EnumerationLiteral . Generalization . InstanceValue . LiteralBoolean . LiteralInteger . LiteralNull . LiteralReal . LiteralString . LiteralUnlimitedNatural . OpaqueExpression . Operation . Package . PackageImport . PackageMerge . Parameter . PrimitiveType . Property The list includes InstanceValue but incorrectly omits InstanceSpecification. InstanceSpecification must be included in the list because an InstanceValue requires an InstanceSpecification; see UML2.4.1, 7.3.23: . instance: InstanceSpecification [1] The instance that is the specified value. Since the list includes Class and DataType, both of which can have Property features, an InstanceSpecification that is the value of an InstanceValue in CMOF may have to specify values for the instantiated Class' or DataType's Property features. Therefore, the list should also include UML2.4.1's Slot as well. The list should be corrected as follows: . Association . Class . Comment . Constraint . DataType . ElementImport . Enumeration . EnumerationLiteral . Generalization . InstanceSpecification . InstanceValue . LiteralBoolean . LiteralInteger . LiteralNull . LiteralReal . LiteralString . LiteralUnlimitedNatural . OpaqueExpression . Operation . Package . PackageImport . PackageMerge . Parameter . PrimitiveType . Property . Slot Subject: RE: issue 17049 -- MOF 2 Core RTF issue Date: Thu, 26 Jan 2012 11:31:49 -0800 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: issue 17049 -- MOF 2 Core RTF issue Thread-Index: AczcXSoRvGxXBt5WR7aJwoY+TOts0AAANBng From: "Pete Rivett" To: Not so simple: though the general InstanceSpecification is excluded, the concrete subclass EnumerationLiteral is included. So it.s not necessarily an error: the question becomes: is there a need for other InstanceSpecifications? Pete From: Juergen Boldt [mailto:juergen@omg.org] Sent: Thursday, January 26, 2012 11:03 AM To: issues@omg.org; mof2core-rtf@omg.org Subject: issue 17049 -- MOF 2 Core RTF issue From: webmaster@omg.org Date: 26 Jan 2012 11:32:29 -0500 To: Subject: Issue/Bug Report ******************************************************************************* Name: Dr. Nicolas F. Rouquette Employer: JPL/NASA mailFrom: nicolas.f.rouquette@jpl.nasa.gov Terms_Agreement: I agree Specification: OMG Meta Object Facility (MOF) Core Specification Section: 12.4, 14.4 FormalNumber: formal/2011-08-07 Version: 2.4.1 Doc_Year: 2008 Doc_Month: November Doc_Day: 07 Page: 35,49 Title: Invalid restrictions on concrete metaclasses allowed in EMOF and CMOF Nature: Enhancement Severity: Significant CODE: 3TMw8 B1: Report Issue Description: Per UML2.4.1, a In 12.4, constraint [8] currently reads: An EMOF metamodel is restricted to use the following concrete metaclasses from UMLs Kernel: Class Comment DataType Enumeration EnumerationLiteral Generalization InstanceValue LiteralBoolean LiteralInteger LiteralNull LiteralReal LiteralString LiteralUnlimitedNatural Operation Package Parameter PrimitiveType Property The list includes InstanceValue but incorrectly omits InstanceSpecification. InstanceSpecification must be included in the list because an InstanceValue requires an InstanceSpecification; see UML2.4.1, 7.3.23: instance: InstanceSpecification [1] The instance that is the specified value. Since the list includes Class and a Class can have Property features, an InstanceSpecification that is the value of an InstanceValue in EMOF may have to specify values for the instantiated Class' Property features. Therefore, the list should also include UML2.4.1's Slot as well. The list should be corrected as follows: Class Comment DataType Enumeration EnumerationLiteral Generalization InstanceSpecification InstanceValue LiteralBoolean LiteralInteger LiteralNull LiteralReal LiteralString LiteralUnlimitedNatural Operation Package Parameter PrimitiveType Property In 14.4, constraint [10] currently reads: A CMOF metamodel is restricted to use the following concrete metaclasses from UMLs Kernel: Association Class Comment Constraint DataType ElementImport Enumeration EnumerationLiteral Generalization InstanceValue LiteralBoolean LiteralInteger LiteralNull LiteralReal LiteralString LiteralUnlimitedNatural OpaqueExpression Operation Package PackageImport PackageMerge Parameter PrimitiveType Property The list includes InstanceValue but incorrectly omits InstanceSpecification. InstanceSpecification must be included in the list because an InstanceValue requires an InstanceSpecification; see UML2.4.1, 7.3.23: instance: InstanceSpecification [1] The instance that is the specified value. Since the list includes Class and DataType, both of which can have Property features, an InstanceSpecification that is the value of an InstanceValue in CMOF may have to specify values for the instantiated Class' or DataType's Property features. Therefore, the list should also include UML2.4.1's Slot as well. The list should be corrected as follows: Association Class Comment Constraint DataType ElementImport Enumeration EnumerationLiteral Generalization InstanceSpecification InstanceValue LiteralBoolean LiteralInteger LiteralNull LiteralReal LiteralString LiteralUnlimitedNatural OpaqueExpression Operation Package PackageImport PackageMerge Parameter PrimitiveType Property Slot - Nicolas. Best regards, -Juergen Juergen Boldt Director, Member Services 140 Kendrick Street, Building A Suite 300 Needham, MA 02494 USA Tel: 781 444 0404 x 132 fax: 781 444 0320 www.omg.org X-SpamScore: -19 X-BigFish: VS-19(z21cRz9371Ic89bh13e6Kc857h12d5Mzz1202hzz8275bh8275dhz2fhc1bhc31hc1ahc1bhc31hc1ah2a8h668h839h) X-Forefront-Antispam-Report: CIP:131.107.125.8;KIP:(null);UIP:(null);IPV:NLI;H:TK5EX14MLTC104.redmond.corp.microsoft.com;RD:none;EFVD:NLI From: Steve Cook To: Pete Rivett , "mof2core-rtf@omg.org" CC: "Rouquette, Nicolas F (316A) (nicolas.f.rouquette@jpl.nasa.gov)" Subject: RE: issue 17049 -- MOF 2 Core RTF issue Thread-Topic: issue 17049 -- MOF 2 Core RTF issue Thread-Index: AQHM3F1Bzkf7NJjzOkaP29qcUUzb3JYfCZCAgAABATA= Date: Thu, 26 Jan 2012 19:43:21 +0000 Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.166.18.102] X-OriginatorOrg: microsoft.com As far as I know, the only reason InstanceValue is there is to be able to have EnumerationLiterals as default values in a metamodel. So I do not agree that this is a problem at all. As in: Specifies the kind of aggregation that applies to the Property. -- Steve From: Pete Rivett [mailto:pete.rivett@adaptive.com] Sent: 26 January 2012 19:32 To: mof2core-rtf@omg.org Subject: RE: issue 17049 -- MOF 2 Core RTF issue Not so simple: though the general InstanceSpecification is excluded, the concrete subclass EnumerationLiteral is included. So it.s not necessarily an error: the question becomes: is there a need for other InstanceSpecifications? Pete From: Juergen Boldt [mailto:juergen@omg.org] Sent: Thursday, January 26, 2012 11:03 AM To: issues@omg.org; mof2core-rtf@omg.org Subject: issue 17049 -- MOF 2 Core RTF issue From: webmaster@omg.org Date: 26 Jan 2012 11:32:29 -0500 To: Subject: Issue/Bug Report ******************************************************************************* Name: Dr. Nicolas F. Rouquette Employer: JPL/NASA mailFrom: nicolas.f.rouquette@jpl.nasa.gov Terms_Agreement: I agree Specification: OMG Meta Object Facility (MOF) Core Specification Section: 12.4, 14.4 FormalNumber: formal/2011-08-07 Version: 2.4.1 Doc_Year: 2008 Doc_Month: November Doc_Day: 07 Page: 35,49 Title: Invalid restrictions on concrete metaclasses allowed in EMOF and CMOF Nature: Enhancement Severity: Significant CODE: 3TMw8 B1: Report Issue Description: Per UML2.4.1, a In 12.4, constraint [8] currently reads: An EMOF metamodel is restricted to use the following concrete metaclasses from UMLs Kernel: Class Comment DataType Enumeration EnumerationLiteral Generalization InstanceValue LiteralBoolean LiteralInteger LiteralNull LiteralReal LiteralString LiteralUnlimitedNatural Operation Package Parameter PrimitiveType Property The list includes InstanceValue but incorrectly omits InstanceSpecification. InstanceSpecification must be included in the list because an InstanceValue requires an InstanceSpecification; see UML2.4.1, 7.3.23: instance: InstanceSpecification [1] The instance that is the specified value. Since the list includes Class and a Class can have Property features, an InstanceSpecification that is the value of an InstanceValue in EMOF may have to specify values for the instantiated Class' Property features. Therefore, the list should also include UML2.4.1's Slot as well. The list should be corrected as follows: Class Comment DataType Enumeration EnumerationLiteral Generalization InstanceSpecification InstanceValue LiteralBoolean LiteralInteger LiteralNull LiteralReal LiteralString LiteralUnlimitedNatural Operation Package Parameter PrimitiveType Property In 14.4, constraint [10] currently reads: A CMOF metamodel is restricted to use the following concrete metaclasses from UMLs Kernel: Association Class Comment Constraint DataType ElementImport Enumeration EnumerationLiteral Generalization InstanceValue LiteralBoolean LiteralInteger LiteralNull LiteralReal LiteralString LiteralUnlimitedNatural OpaqueExpression Operation Package PackageImport PackageMerge Parameter PrimitiveType Property The list includes InstanceValue but incorrectly omits InstanceSpecification. InstanceSpecification must be included in the list because an InstanceValue requires an InstanceSpecification; see UML2.4.1, 7.3.23: instance: InstanceSpecification [1] The instance that is the specified value. Since the list includes Class and DataType, both of which can have Property features, an InstanceSpecification that is the value of an InstanceValue in CMOF may have to specify values for the instantiated Class' or DataType's Property features. Therefore, the list should also include UML2.4.1's Slot as well. The list should be corrected as follows: Association Class Comment Constraint DataType ElementImport Enumeration EnumerationLiteral Generalization InstanceSpecification InstanceValue LiteralBoolean LiteralInteger LiteralNull LiteralReal LiteralString LiteralUnlimitedNatural OpaqueExpression Operation Package PackageImport PackageMerge Parameter PrimitiveType Property Slot - Nicolas. Best regards, -Juergen Juergen Boldt Director, Member Services 140 Kendrick Street, Building A Suite 300 Needham, MA 02494 USA Tel: 781 444 0404 x 132 fax: 781 444 0320 www.omg.org From: "Rouquette, Nicolas F (313K)" To: Steve Cook CC: Pete Rivett , "mof2core-rtf@omg.org" Date: Thu, 26 Jan 2012 13:37:58 -0800 Subject: Re: issue 17049 -- MOF 2 Core RTF issue Thread-Topic: issue 17049 -- MOF 2 Core RTF issue Thread-Index: AczccsXZ6RJs1s/hSV2AR4dl1yV3vw== Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US X-Source-IP: altvirehtstap01.jpl.nasa.gov [128.149.137.72] X-Source-Sender: nicolas.f.rouquette@jpl.nasa.gov X-AUTH: Authorized In 14.4, CMOF does not prevent a Property typed by a non-Enumeration DataType to have a default value: [13] A multi-valued Property or Parameter cannot have a default value. The default value of a Property or Parameter typed by a PrimitiveType must be a kind of LiteralSpecification. The default value of a Property or Parameter typed by an Enumeration must be a kind of InstanceValue. A Property or Parameter typed by a Class cannot have a default value. Furthermore, 14.5.1 explicitly mentions the intent to support default values for structured data types: [1] CMOF extends Factory to allow the format of the string argument of Factory::createFromString and the result of Factory::convertToString to be specified as defined in .Meta Object Facility (MOF) 2.0 XMI Mapping. in order to support default values for structured data types. How could we specify in CMOF the default value of a Property typed by a structured DataType unless we can use an InstanceValue with an InstanceSpecification and Slots specifying the values of the Properties in the structured DataType? - Nicolas. On Jan 26, 2012, at 11:43 AM, Steve Cook wrote: As far as I know, the only reason InstanceValue is there is to be able to have EnumerationLiterals as default values in a metamodel. So I do not agree that this is a problem at all. As in: Specifies the kind of aggregation that applies to the Property. -- Steve From: Pete Rivett [mailto:pete.rivett@adaptive.com] Sent: 26 January 2012 19:32 To: mof2core-rtf@omg.org Subject: RE: issue 17049 -- MOF 2 Core RTF issue Not so simple: though the general InstanceSpecification is excluded, the concrete subclass EnumerationLiteral is included. So it.s not necessarily an error: the question becomes: is there a need for other InstanceSpecifications? Pete From: Juergen Boldt [mailto:juergen@omg.org] Sent: Thursday, January 26, 2012 11:03 AM To: issues@omg.org; mof2core-rtf@omg.org Subject: issue 17049 -- MOF 2 Core RTF issue From: webmaster@omg.org Date: 26 Jan 2012 11:32:29 -0500 To: Subject: Issue/Bug Report ******************************************************************************* Name: Dr. Nicolas F. Rouquette Employer: JPL/NASA mailFrom: nicolas.f.rouquette@jpl.nasa.gov Terms_Agreement: I agree Specification: OMG Meta Object Facility (MOF) Core Specification Section: 12.4, 14.4 FormalNumber: formal/2011-08-07 Version: 2.4.1 Doc_Year: 2008 Doc_Month: November Doc_Day: 07 Page: 35,49 Title: Invalid restrictions on concrete metaclasses allowed in EMOF and CMOF Nature: Enhancement Severity: Significant CODE: 3TMw8 B1: Report Issue Description: Per UML2.4.1, a In 12.4, constraint [8] currently reads: An EMOF metamodel is restricted to use the following concrete metaclasses from UMLs Kernel: Class Comment DataType Enumeration EnumerationLiteral Generalization InstanceValue LiteralBoolean LiteralInteger LiteralNull LiteralReal LiteralString LiteralUnlimitedNatural Operation Package Parameter PrimitiveType Property The list includes InstanceValue but incorrectly omits InstanceSpecification. InstanceSpecification must be included in the list because an InstanceValue requires an InstanceSpecification; see UML2.4.1, 7.3.23: instance: InstanceSpecification [1] The instance that is the specified value. Since the list includes Class and a Class can have Property features, an InstanceSpecification that is the value of an InstanceValue in EMOF may have to specify values for the instantiated Class' Property features. Therefore, the list should also include UML2.4.1's Slot as well. The list should be corrected as follows: Class Comment DataType Enumeration EnumerationLiteral Generalization InstanceSpecification InstanceValue LiteralBoolean LiteralInteger LiteralNull LiteralReal LiteralString LiteralUnlimitedNatural Operation Package Parameter PrimitiveType Property In 14.4, constraint [10] currently reads: A CMOF metamodel is restricted to use the following concrete metaclasses from UMLs Kernel: Association Class Comment Constraint DataType ElementImport Enumeration EnumerationLiteral Generalization InstanceValue LiteralBoolean LiteralInteger LiteralNull LiteralReal LiteralString LiteralUnlimitedNatural OpaqueExpression Operation Package PackageImport PackageMerge Parameter PrimitiveType Property The list includes InstanceValue but incorrectly omits InstanceSpecification. InstanceSpecification must be included in the list because an InstanceValue requires an InstanceSpecification; see UML2.4.1, 7.3.23: instance: InstanceSpecification [1] The instance that is the specified value. Since the list includes Class and DataType, both of which can have Property features, an InstanceSpecification that is the value of an InstanceValue in CMOF may have to specify values for the instantiated Class' or DataType's Property features. Therefore, the list should also include UML2.4.1's Slot as well. The list should be corrected as follows: Association Class Comment Constraint DataType ElementImport Enumeration EnumerationLiteral Generalization InstanceSpecification InstanceValue LiteralBoolean LiteralInteger LiteralNull LiteralReal LiteralString LiteralUnlimitedNatural OpaqueExpression Operation Package PackageImport PackageMerge Parameter PrimitiveType Property Slot - Nicolas. Best regards, -Juergen Juergen Boldt Director, Member Services 140 Kendrick Street, Building A Suite 300 Needham, MA 02494 USA Tel: 781 444 0404 x 132 fax: 781 444 0320 www.omg.org Subject: RE: issue 17049 -- MOF 2 Core RTF issue Date: Thu, 26 Jan 2012 13:43:15 -0800 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: issue 17049 -- MOF 2 Core RTF issue Thread-Index: AczccsXZ6RJs1s/hSV2AR4dl1yV3vwAAEkWA From: "Pete Rivett" To: "Rouquette, Nicolas F (313K)" , "Steve Cook" Cc: Ø How could we specify in CMOF the default value of a Property typed by a structured DataType unless we can use an InstanceValue with an InstanceSpecification and Slots specifying the values of the Properties in the structured DataType? Your own email contains the answer to your question: the quote from 14.5.1 states that the value should be represented as a String not as a set of modeled Slots. To be fair, that section dates from the time that MOF was based on Infrastructure which had defaultValue typed by String so that was the only choice. So maybe we need an issue to update that. Pete From: Rouquette, Nicolas F (313K) [mailto:nicolas.f.rouquette@jpl.nasa.gov] Sent: Thursday, January 26, 2012 1:38 PM To: Steve Cook Cc: Pete Rivett; mof2core-rtf@omg.org Subject: Re: issue 17049 -- MOF 2 Core RTF issue In 14.4, CMOF does not prevent a Property typed by a non-Enumeration DataType to have a default value: [13] A multi-valued Property or Parameter cannot have a default value. The default value of a Property or Parameter typed by a PrimitiveType must be a kind of LiteralSpecification. The default value of a Property or Parameter typed by an Enumeration must be a kind of InstanceValue. A Property or Parameter typed by a Class cannot have a default value. Furthermore, 14.5.1 explicitly mentions the intent to support default values for structured data types: [1] CMOF extends Factory to allow the format of the string argument of Factory::createFromString and the result of Factory::convertToString to be specified as defined in .Meta Object Facility (MOF) 2.0 XMI Mapping. in order to support default values for structured data types. How could we specify in CMOF the default value of a Property typed by a structured DataType unless we can use an InstanceValue with an InstanceSpecification and Slots specifying the values of the Properties in the structured DataType? - Nicolas. On Jan 26, 2012, at 11:43 AM, Steve Cook wrote: As far as I know, the only reason InstanceValue is there is to be able to have EnumerationLiterals as default values in a metamodel. So I do not agree that this is a problem at all. As in: Specifies the kind of aggregation that applies to the Property. -- Steve From: Pete Rivett [mailto:pete.rivett@adaptive.com] Sent: 26 January 2012 19:32 To: mof2core-rtf@omg.org Subject: RE: issue 17049 -- MOF 2 Core RTF issue Not so simple: though the general InstanceSpecification is excluded, the concrete subclass EnumerationLiteral is included. So it.s not necessarily an error: the question becomes: is there a need for other InstanceSpecifications? Pete From: Juergen Boldt [mailto:juergen@omg.org] Sent: Thursday, January 26, 2012 11:03 AM To: issues@omg.org; mof2core-rtf@omg.org Subject: issue 17049 -- MOF 2 Core RTF issue From: webmaster@omg.org Date: 26 Jan 2012 11:32:29 -0500 To: Subject: Issue/Bug Report ******************************************************************************* Name: Dr. Nicolas F. Rouquette Employer: JPL/NASA mailFrom: nicolas.f.rouquette@jpl.nasa.gov Terms_Agreement: I agree Specification: OMG Meta Object Facility (MOF) Core Specification Section: 12.4, 14.4 FormalNumber: formal/2011-08-07 Version: 2.4.1 Doc_Year: 2008 Doc_Month: November Doc_Day: 07 Page: 35,49 Title: Invalid restrictions on concrete metaclasses allowed in EMOF and CMOF Nature: Enhancement Severity: Significant CODE: 3TMw8 B1: Report Issue Description: Per UML2.4.1, a In 12.4, constraint [8] currently reads: An EMOF metamodel is restricted to use the following concrete metaclasses from UMLs Kernel: Class Comment DataType Enumeration EnumerationLiteral Generalization InstanceValue LiteralBoolean LiteralInteger LiteralNull LiteralReal LiteralString LiteralUnlimitedNatural Operation Package Parameter PrimitiveType Property The list includes InstanceValue but incorrectly omits InstanceSpecification. InstanceSpecification must be included in the list because an InstanceValue requires an InstanceSpecification; see UML2.4.1, 7.3.23: instance: InstanceSpecification [1] The instance that is the specified value. Since the list includes Class and a Class can have Property features, an InstanceSpecification that is the value of an InstanceValue in EMOF may have to specify values for the instantiated Class' Property features. Therefore, the list should also include UML2.4.1's Slot as well. The list should be corrected as follows: Class Comment DataType Enumeration EnumerationLiteral Generalization InstanceSpecification InstanceValue LiteralBoolean LiteralInteger LiteralNull LiteralReal LiteralString LiteralUnlimitedNatural Operation Package Parameter PrimitiveType Property In 14.4, constraint [10] currently reads: A CMOF metamodel is restricted to use the following concrete metaclasses from UMLs Kernel: Association Class Comment Constraint DataType ElementImport Enumeration EnumerationLiteral Generalization InstanceValue LiteralBoolean LiteralInteger LiteralNull LiteralReal LiteralString LiteralUnlimitedNatural OpaqueExpression Operation Package PackageImport PackageMerge Parameter PrimitiveType Property The list includes InstanceValue but incorrectly omits InstanceSpecification. InstanceSpecification must be included in the list because an InstanceValue requires an InstanceSpecification; see UML2.4.1, 7.3.23: instance: InstanceSpecification [1] The instance that is the specified value. Since the list includes Class and DataType, both of which can have Property features, an InstanceSpecification that is the value of an InstanceValue in CMOF may have to specify values for the instantiated Class' or DataType's Property features. Therefore, the list should also include UML2.4.1's Slot as well. The list should be corrected as follows: Association Class Comment Constraint DataType ElementImport Enumeration EnumerationLiteral Generalization InstanceSpecification InstanceValue LiteralBoolean LiteralInteger LiteralNull LiteralReal LiteralString LiteralUnlimitedNatural OpaqueExpression Operation Package PackageImport PackageMerge Parameter PrimitiveType Property Slot - Nicolas. Best regards, -Juergen Juergen Boldt Director, Member Services 140 Kendrick Street, Building A Suite 300 Needham, MA 02494 USA Tel: 781 444 0404 x 132 fax: 781 444 0320 www.omg.org From: "Rouquette, Nicolas F (313K)" To: Pete Rivett CC: "mof2core-rtf@omg.org" , Steve Cook Date: Fri, 27 Jan 2012 11:32:46 -0800 Subject: Re: issue 17049 -- MOF 2 Core RTF issue Thread-Topic: issue 17049 -- MOF 2 Core RTF issue Thread-Index: AczdKnLXRRFYEAjTR1qo5n5vpwg40g== Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US X-Source-IP: altvirehtstap02.jpl.nasa.gov [128.149.137.73] X-Source-Sender: nicolas.f.rouquette@jpl.nasa.gov X-AUTH: Authorized Pete, On Jan 26, 2012, at 1:43 PM, Pete Rivett wrote: Ø How could we specify in CMOF the default value of a Property typed by a structured DataType unless we can use an InstanceValue with an InstanceSpecification and Slots specifying the values of the Properties in the structured DataType? Your own email contains the answer to your question: the quote from 14.5.1 states that the value should be represented as a String not as a set of modeled Slots. You are confusing the representation of a value as serialized vs. the representation of a value in the model (abstract syntax) To be fair, that section dates from the time that MOF was based on Infrastructure which had defaultValue typed by String so that was the only choice. So maybe we need an issue to update that. Indeed, read 14.5.1 carefully: [1] CMOF extends Factory to allow the format of the string argument of Factory::createFromString and the result of Factory::convertToString to be specified as defined in .Meta Object Facility (MOF) 2.0 XMI Mapping. in order to support default values for structured data types. It refers to the factory methods defined in 9.2: createFromString(dataType: DataType, string: String): Object convertToString(datatype: DataType, object: Object): String I hope it is clear that these two methods work like this: convertToString(Enumeration, EnumerationLiteral whose classifier is the 1st argument Enumeration) = the string representation of the EnumerationLiteral value. createFromString(Enumeration, "string representation of an EnumerationLiteral") = EnumerationLiteral whose classifier is the 1st argument Enumeration convertToString(Integer, LiteralInteger) = the string representation of the LiteralInteger value createFromString(Integer, "string representation of a LiteralInteger") = LiteralInteger convertToString(DataType, InstanceSpecification) = the string representation of the instance of the structured datatype createFromString(DataType, "string representation of an instance of the DataType") = InstanceSpecification whose classifier is the 1st argument DataType Furthermore, 14.5.1 refers to MOF/XMI which specifies two ways to do this: By default instances of structured datatypes are serialized as if they were classes, as described in Sub clause 7.8.7. This can be overridden by the tag org.omg.xmi.flattenStructuredDatatypes in which case the values of the Properties are serialized as a single string separated (by default) by commas. The default separator can be overridden by the XMI org.omg.xmi.valueSeparator tag. By default, 9.4.2 serializes an instance of a structured datatype like a class -- e.g., see the example in 9.4.2.1 I hope it is clear from that example that CMOF needs InstanceSpecification & Slot otherwise none of 7.8.7, 7.8.9 and 9.4.2 in MOF/XMI 2.4.1 would make sense at all. - Nicolas. Pete From: Rouquette, Nicolas F (313K) [mailto:nicolas.f.rouquette@jpl.nasa.gov] Sent: Thursday, January 26, 2012 1:38 PM To: Steve Cook Cc: Pete Rivett; mof2core-rtf@omg.org Subject: Re: issue 17049 -- MOF 2 Core RTF issue In 14.4, CMOF does not prevent a Property typed by a non-Enumeration DataType to have a default value: [13] A multi-valued Property or Parameter cannot have a default value. The default value of a Property or Parameter typed by a PrimitiveType must be a kind of LiteralSpecification. The default value of a Property or Parameter typed by an Enumeration must be a kind of InstanceValue. A Property or Parameter typed by a Class cannot have a default value. Furthermore, 14.5.1 explicitly mentions the intent to support default values for structured data types: [1] CMOF extends Factory to allow the format of the string argument of Factory::createFromString and the result of Factory::convertToString to be specified as defined in .Meta Object Facility (MOF) 2.0 XMI Mapping. in order to support default values for structured data types. How could we specify in CMOF the default value of a Property typed by a structured DataType unless we can use an InstanceValue with an InstanceSpecification and Slots specifying the values of the Properties in the structured DataType? - Nicolas. On Jan 26, 2012, at 11:43 AM, Steve Cook wrote: As far as I know, the only reason InstanceValue is there is to be able to have EnumerationLiterals as default values in a metamodel. So I do not agree that this is a problem at all. As in: Specifies the kind of aggregation that applies to the Property. -- Steve From: Pete Rivett [mailto:pete.rivett@adaptive.com] Sent: 26 January 2012 19:32 To: mof2core-rtf@omg.org Subject: RE: issue 17049 -- MOF 2 Core RTF issue Not so simple: though the general InstanceSpecification is excluded, the concrete subclass EnumerationLiteral is included. So it.s not necessarily an error: the question becomes: is there a need for other InstanceSpecifications? Pete From: Juergen Boldt [mailto:juergen@omg.org] Sent: Thursday, January 26, 2012 11:03 AM To: issues@omg.org; mof2core-rtf@omg.org Subject: issue 17049 -- MOF 2 Core RTF issue From: webmaster@omg.org Date: 26 Jan 2012 11:32:29 -0500 To: Subject: Issue/Bug Report ******************************************************************************* Name: Dr. Nicolas F. Rouquette Employer: JPL/NASA mailFrom: nicolas.f.rouquette@jpl.nasa.gov Terms_Agreement: I agree Specification: OMG Meta Object Facility (MOF) Core Specification Section: 12.4, 14.4 FormalNumber: formal/2011-08-07 Version: 2.4.1 Doc_Year: 2008 Doc_Month: November Doc_Day: 07 Page: 35,49 Title: Invalid restrictions on concrete metaclasses allowed in EMOF and CMOF Nature: Enhancement Severity: Significant CODE: 3TMw8 B1: Report Issue Description: Per UML2.4.1, a In 12.4, constraint [8] currently reads: An EMOF metamodel is restricted to use the following concrete metaclasses from UMLs Kernel: Class Comment DataType Enumeration EnumerationLiteral Generalization InstanceValue LiteralBoolean LiteralInteger LiteralNull LiteralReal LiteralString LiteralUnlimitedNatural Operation Package Parameter PrimitiveType Property The list includes InstanceValue but incorrectly omits InstanceSpecification. InstanceSpecification must be included in the list because an InstanceValue requires an InstanceSpecification; see UML2.4.1, 7.3.23: instance: InstanceSpecification [1] The instance that is the specified value. Since the list includes Class and a Class can have Property features, an InstanceSpecification that is the value of an InstanceValue in EMOF may have to specify values for the instantiated Class' Property features. Therefore, the list should also include UML2.4.1's Slot as well. The list should be corrected as follows: Class Comment DataType Enumeration EnumerationLiteral Generalization InstanceSpecification InstanceValue LiteralBoolean LiteralInteger LiteralNull LiteralReal LiteralString LiteralUnlimitedNatural Operation Package Parameter PrimitiveType Property In 14.4, constraint [10] currently reads: A CMOF metamodel is restricted to use the following concrete metaclasses from UMLs Kernel: Association Class Comment Constraint DataType ElementImport Enumeration EnumerationLiteral Generalization InstanceValue LiteralBoolean LiteralInteger LiteralNull LiteralReal LiteralString LiteralUnlimitedNatural OpaqueExpression Operation Package PackageImport PackageMerge Parameter PrimitiveType Property The list includes InstanceValue but incorrectly omits InstanceSpecification. InstanceSpecification must be included in the list because an InstanceValue requires an InstanceSpecification; see UML2.4.1, 7.3.23: instance: InstanceSpecification [1] The instance that is the specified value. Since the list includes Class and DataType, both of which can have Property features, an InstanceSpecification that is the value of an InstanceValue in CMOF may have to specify values for the instantiated Class' or DataType's Property features. Therefore, the list should also include UML2.4.1's Slot as well. The list should be corrected as follows: Association Class Comment Constraint DataType ElementImport Enumeration EnumerationLiteral Generalization InstanceSpecification InstanceValue LiteralBoolean LiteralInteger LiteralNull LiteralReal LiteralString LiteralUnlimitedNatural OpaqueExpression Operation Package PackageImport PackageMerge Parameter PrimitiveType Property Slot - Nicolas. Best regards, -Juergen Juergen Boldt Director, Member Services 140 Kendrick Street, Building A Suite 300 Needham, MA 02494 USA Tel: 781 444 0404 x 132 fax: 781 444 0320 www.omg.org - Nicolas.