Issues for Mailing list of the MOF Support for Semantic Structures Finalization Task Force

To comment on any of these issues, send email to smof-ftf@omg.org. (Please include the issue number in the Subject: header, thusly: [Issue ###].) To submit a new issue, send email to issues@omg.org.

List of issues (green=resolved, yellow=pending Board vote, red=unresolved)

List options: All ; Open Issues only; or Closed Issues only

Issue 15975: UML Profile XMI does not load, and it has MagicDraw specifics
Issue 16107: SMOF should be updated to 2.4 before finalization to be consistent with UML, MOF and XMI.
Issue 16395: SMOF issue: incorrect namespaces in XMI examples
Issue 17034: What is the definition of "fundamental type"?
Issue 17035: Two spelling mistakes
Issue 17036: CompatibleWith/IncompatibleWith and the Law of the Excluded Middle
Issue 17132: Issue with SMOF semantics
Issue 17148: Property visibility in profile
Issue 17149: AspectOf encourages misuse in common use case
Issue 17150: Extended element semantics complicates common use case
Issue 17151: Compatibility semantics clarification for generalization
Issue 17152: Default compatibility for generalization
Issue 17153: Required semantics when source instances unclassified
Issue 17154: Compatiblity constraints and instances
Issue 17155: When compatibility is the same as generalization
Issue 17156: Profile using Constraint, why not?
Issue 17157: Subject classifier
Issue 17158: Profile compatibility semantics different from metamodel extension
Issue 17159: Profile and metamodel extension text alignment
Issue 17162: Incompatibility::constrainedType does not need to be ordered
Issue 17163: SMOF not a subset of UML
Issue 17164: Compatiblity::isRequired = true redundant with Generalization
Issue 17165: Compatibility complicates common programming use case
Issue 17166: SMOF cumbersome for semantic applications
Issue 17167: EquivalentClass and IncompatibleWith stereotypes redundant with ODM
Issue 17170: oclIsKindOf / ocIsTypeOf
Issue 17171: AspectOf equivalence
Issue 17279: AspectOf extending Generalization with Constraint unclear
Issue 17280: Metamodel Effect subsections should use instances
Issue 17281: SMOF Issue: Compatibility and Incompatibility constraint semantics
Issue 17505: Clause 8 should alter MOF’s containment constraints
Issue 17506: reclassify should check its arguments

Issue 15975: UML Profile XMI does not load, and it has MagicDraw specifics (smof-ftf)

Click here for this issue's archive.
Source: Adaptive (Mr. Pete Rivett, pete.rivett(at)adaptive.com)
Nature: Uncategorized Issue
Severity:
Summary:
I could not get the UML Profile XMI to load, and it has MagicDraw specifics.

The profile XMI also has a stereotype called Constraint which had no base class and was not in the spec – so it should be deleted.

 


Resolution: Create a correct profile XMI
Revised Text: Update the SMOF Profile XMI file so that it reads like this (note, the identifiers may vary): <?xml version="1.0" encoding="UTF-8"?> <xmi:XMI xmlns:uml="http://www.omg.org/spec/UML/20101101" xmlns:xmi="http://www.omg.org/spec/XMI/20100901"> <uml:Model xmi:id="eee_1045467100313_135436_1" xmi:uuid="e4254ee4-c1ac-11df-b096-d384b3500ebf" name="SMOF" visibility="public"> <ownedComment xmi:type="uml:Comment" xmi:id="_15_1_20ea04e0_1222785798609_29764_98" xmi:uuid="e42575f5-c1ac-11df-b096-d384b3500ebf" body="Author:Cory Casanave.&#xA;Created:9/30/08 10:43 AM"> <annotatedElement xmi:idref="eee_1045467100313_135436_1"/> </ownedComment> <packagedElement xmi:type="uml:Profile" xmi:id="_15_1_20ea04e0_1222785830937_668267_458" xmi:uuid="e42575f7-c1ac-11df-b096-d384b3500ebf" name="SmofProfile" visibility="public"> <packagedElement xmi:type="uml:Stereotype" xmi:id="_16_6_1_873024e_1282071040890_610779_1239" xmi:uuid="e425c41a-c1ac-11df-b096-d384b3500ebf" name="CompatibleWith" visibility="public" isLeaf="false" isAbstract="false" isFinalSpecialization="false" isActive="false"> <ownedAttribute xmi:type="uml:Property" xmi:id="_16_6_1_873024e_1282071061328_799271_1269" xmi:uuid="e425c41b-c1ac-11df-b096-d384b3500ebf" name="base_Dependency" visibility="private" isLeaf="false" isStatic="false" isOrdered="false" isUnique="true" isReadOnly="false" isDerived="false" isDerivedUnion="false" aggregation="none" association="_16_6_1_873024e_1282071061328_624244_1268"> <type xmi:type="uml:Class" href="http://www.omg.org/spec/UML/20101101/UML.xmi#Dependency" > </type> </ownedAttribute> <ownedAttribute xmi:type="uml:Property" xmi:id="_16_6_1_873024e_1282071084375_891243_1279" xmi:uuid="e425eb2c-c1ac-11df-b096-d384b3500ebf" name="isRequired" visibility="private" isLeaf="false" isStatic="false" isOrdered="false" isUnique="true" isReadOnly="false" isDerived="false" isDerivedUnion="false" aggregation="none"> <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20101101/PrimitiveTypes.xmi #Boolean"> </type> <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_16_6_1_873024e_1282071149593_118084_1283" xmi:uuid="e425eb2d-c1ac-11df-b096-d384b3500ebf" name="" visibility="public" value="false"/> </ownedAttribute> <ownedAttribute xmi:type="uml:Property" xmi:id="_16_6_1_873024e_1282071118609_829961_1281" xmi:uuid="e426123e-c1ac-11df-b096-d384b3500ebf" name="isSymmetric" visibility="private" isLeaf="false" isStatic="false" isOrdered="false" isUnique="true" isReadOnly="false" isDerived="false" isDerivedUnion="false" aggregation="none"> <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20101101/PrimitiveTypes.xmi #Boolean"> </type> <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_16_6_1_873024e_1282071158281_804352_1284" xmi:uuid="e426123f-c1ac-11df-b096-d384b3500ebf" name="" visibility="public" value="false"/> </ownedAttribute> </packagedElement> <packagedElement xmi:type="uml:Stereotype" xmi:id="_15_1_20ea04e0_1222802287656_861956_949" xmi:uuid="e4261240-c1ac-11df-b096-d384b3500ebf" name="IncompatibleWith" visibility="public" isLeaf="false" isAbstract="false" isFinalSpecialization="false" isActive="false"> <ownedAttribute xmi:type="uml:Property" xmi:id="_15_1_20ea04e0_1222802303765_70169_979" xmi:uuid="e4261241-c1ac-11df-b096-d384b3500ebf" name="base_Dependency" visibility="private" isLeaf="false" isStatic="false" isOrdered="false" isUnique="true" isReadOnly="false" isDerived="false" isDerivedUnion="false" aggregation="none" association="_15_1_20ea04e0_1222802303765_405621_978"> <type xmi:type="uml:Class" href="http://www.omg.org/spec/UML/20101101/UML.xmi#Dependency" > </type> </ownedAttribute> </packagedElement> <packagedElement xmi:type="uml:Extension" xmi:id="_15_1_20ea04e0_1222803184718_320116_1273" xmi:uuid="e4263952-c1ac-11df-b096-d384b3500ebf" name="" visibility="public" isLeaf="false" isAbstract="false" isFinalSpecialization="false" isDerived="false"> <memberEnd xmi:idref="_15_1_20ea04e0_1222803184718_215815_1274"/> <memberEnd xmi:idref="_15_1_20ea04e0_1222803184718_646652_1275"/> <navigableOwnedEnd xmi:idref="_15_1_20ea04e0_1222803184718_646652_1275"/> <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_15_1_20ea04e0_1222803184718_646652_1275" xmi:uuid="e4263953-c1ac-11df-b096-d384b3500ebf" name="extension_equivalent class" visibility="private" isLeaf="false" isStatic="false" isOrdered="false" isUnique="true" isReadOnly="false" isDerived="false" isDerivedUnion="false" aggregation="composite" type="_15_1_20ea04e0_1222803157187_234187_1244" association="_15_1_20ea04e0_1222803184718_320116_1273"> <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_15_1_20ea04e0_1222803184718_707652_1276" xmi:uuid="e4263955-c1ac-11df-b096-d384b3500ebf" name="" visibility="public" value="0"/> </ownedEnd> </packagedElement> <packagedElement xmi:type="uml:Stereotype" xmi:id="_15_1_20ea04e0_1222803157187_234187_1244" xmi:uuid="e4266066-c1ac-11df-b096-d384b3500ebf" name="EquivalentClass" visibility="public" isLeaf="false" isAbstract="false" isFinalSpecialization="false" isActive="false"> <ownedAttribute xmi:type="uml:Property" xmi:id="_15_1_20ea04e0_1222803184718_215815_1274" xmi:uuid="e4266067-c1ac-11df-b096-d384b3500ebf" name="base_Dependency" visibility="private" isLeaf="false" isStatic="false" isOrdered="false" isUnique="true" isReadOnly="false" isDerived="false" isDerivedUnion="false" aggregation="none" association="_15_1_20ea04e0_1222803184718_320116_1273"> <type xmi:type="uml:Class" href="http://www.omg.org/spec/UML/20101101/UML.xmi#Dependency" > </type> </ownedAttribute> </packagedElement> <packagedElement xmi:type="uml:Extension" xmi:id="_15_1_20ea04e0_1222785913375_997900_510" xmi:uuid="e4266068-c1ac-11df-b096-d384b3500ebf" name="" visibility="public" isLeaf="false" isAbstract="false" isFinalSpecialization="false" isDerived="false"> <memberEnd xmi:idref="_15_1_20ea04e0_1222785913375_981274_511"/> <memberEnd xmi:idref="_15_1_20ea04e0_1222785913375_527757_512"/> <navigableOwnedEnd xmi:idref="_15_1_20ea04e0_1222785913375_527757_512"/> <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_15_1_20ea04e0_1222785913375_527757_512" xmi:uuid="e4266069-c1ac-11df-b096-d384b3500ebf" name="extension_facet" visibility="private" isLeaf="false" isStatic="false" isOrdered="false" isUnique="true" isReadOnly="false" isDerived="false" isDerivedUnion="false" aggregation="composite" type="_15_1_20ea04e0_1222785870843_231731_461" association="_15_1_20ea04e0_1222785913375_997900_510"> <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_15_1_20ea04e0_1222785913375_195534_513" xmi:uuid="e426877b-c1ac-11df-b096-d384b3500ebf" name="" visibility="public" value="0"/> </ownedEnd> </packagedElement> <packagedElement xmi:type="uml:Extension" xmi:id="_16_6_1_873024e_1282071061328_624244_1268" xmi:uuid="e426877c-c1ac-11df-b096-d384b3500ebf" name="" visibility="public" isLeaf="false" isAbstract="false" isFinalSpecialization="false" isDerived="false"> <memberEnd xmi:idref="_16_6_1_873024e_1282071061328_799271_1269"/> <memberEnd xmi:idref="_16_6_1_873024e_1282071061328_76743_1270"/> <navigableOwnedEnd xmi:idref="_16_6_1_873024e_1282071061328_76743_1270"/> <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_16_6_1_873024e_1282071061328_76743_1270" xmi:uuid="e426877d-c1ac-11df-b096-d384b3500ebf" name="extension_compatibleWith" visibility="private" isLeaf="false" isStatic="false" isOrdered="false" isUnique="true" isReadOnly="false" isDerived="false" isDerivedUnion="false" aggregation="composite" type="_16_6_1_873024e_1282071040890_610779_1239" association="_16_6_1_873024e_1282071061328_624244_1268"> <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_16_6_1_873024e_1282071061328_170925_1271" xmi:uuid="e426877f-c1ac-11df-b096-d384b3500ebf" name="" visibility="public" value="0"/> </ownedEnd> </packagedElement> <packagedElement xmi:type="uml:Stereotype" xmi:id="_15_1_20ea04e0_1222785870843_231731_461" xmi:uuid="e4268780-c1ac-11df-b096-d384b3500ebf" name="AspectOf" visibility="public" isLeaf="false" isAbstract="false" isFinalSpecialization="false" isActive="false"> <ownedAttribute xmi:type="uml:Property" xmi:id="_15_1_20ea04e0_1222785913375_981274_511" xmi:uuid="e426ae91-c1ac-11df-b096-d384b3500ebf" name="base_Generalization" visibility="private" isLeaf="false" isStatic="false" isOrdered="false" isUnique="true" isReadOnly="false" isDerived="false" isDerivedUnion="false" aggregation="none" association="_15_1_20ea04e0_1222785913375_997900_510"> <type xmi:type="uml:Class" href="http://www.omg.org/spec/UML/20101101/UML.xmi#Generalization" > </type> </ownedAttribute> <ownedAttribute xmi:type="uml:Property" xmi:id="_16_6_1_873024e_1269784609578_463316_2676" xmi:uuid="e426ae92-c1ac-11df-b096-d384b3500ebf" name="isRequired" visibility="private" isLeaf="false" isStatic="false" isOrdered="false" isUnique="true" isReadOnly="false" isDerived="false" isDerivedUnion="false" aggregation="none"> <type xmi:type="uml:PrimitiveType" href="http://www.omg.org/spec/UML/20101101/PrimitiveTypes.xmi#Boolean"> </type> <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_16_6_1_873024e_1270882915265_430487_1219" xmi:uuid="e426ae93-c1ac-11df-b096-d384b3500ebf" name="" visibility="public" value="false"/> </ownedAttribute> </packagedElement> <packagedElement xmi:type="uml:Extension" xmi:id="_15_1_20ea04e0_1222802303765_405621_978" xmi:uuid="e426ae94-c1ac-11df-b096-d384b3500ebf" name="" visibility="public" isLeaf="false" isAbstract="false" isFinalSpecialization="false" isDerived="false"> <memberEnd xmi:idref="_15_1_20ea04e0_1222802303765_70169_979"/> <memberEnd xmi:idref="_15_1_20ea04e0_1222802303765_133744_980"/> <navigableOwnedEnd xmi:idref="_15_1_20ea04e0_1222802303765_133744_980"/> <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_15_1_20ea04e0_1222802303765_133744_980" xmi:uuid="e426d5a5-c1ac-11df-b096-d384b3500ebf" name="extension_disjoint with" visibility="private" isLeaf="false" isStatic="false" isOrdered="false" isUnique="true" isReadOnly="false" isDerived="false" isDerivedUnion="false" aggregation="composite" type="_15_1_20ea04e0_1222802287656_861956_949" association="_15_1_20ea04e0_1222802303765_405621_978"> <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_15_1_20ea04e0_1222802303765_61577_981" xmi:uuid="e426d5a7-c1ac-11df-b096-d384b3500ebf" name="" visibility="public" value="0"/> </ownedEnd> </packagedElement> </packagedElement> </uml:Model> </xmi:XMI>
Actions taken:
January 20, 2011: received issue
January 11, 2012: closed issue

Issue 16107: SMOF should be updated to 2.4 before finalization to be consistent with UML, MOF and XMI. (smof-ftf)

Click
here for this issue's archive.
Source: Microsoft (Mr. Steve Cook, stcook(at)microsoft.com)
Nature: Uncategorized Issue
Severity:
Summary:
SMOF should be updated to 2.4 before finalization to be consistent with UML, MOF and XMI.

Resolution: The primary change needed to update to 2.4 is to change the way that SMOF merges the MOF packages to incorporate the fact that MOF 2.4 is based on UML::Classes::Kernel, from Superstructure, instead of Infrastructure packages used to define earlier revisions of MOF. Various cross-references need to be changed. While we are at it, let’s use the latest available version of OCL
Revised Text: revised text on pages 11 - 14 of OMG document ptc/2011-08-19
Actions taken:
April 5, 2011: received issue
January 11, 2012: closed issue

Issue 16395: SMOF issue: incorrect namespaces in XMI examples (smof-ftf)

Click
here for this issue's archive.
Source: Microsoft (Mr. Steve Cook, stcook(at)microsoft.com)
Nature: Uncategorized Issue
Severity:
Summary:
In clause 12 of SMOF, the namespaces (such as xmlns:xmi=http://www.omg.org/spec/XMI/20100101) do not refer to any actual published specification. Furthermore, the xmlns:uml namespace inconsistently refers to the XMI spec.

Resolution: Correct the namespaces to refer to valid specifications.
Revised Text: Throughout clause 12, replace 20100101 by 20100901, except in the BPMN namespaces. Replace xmlns:uml=http://www.omg.org/spec/XMI/20100101 by xmlns:uml=http://www.omg.org/spec/UML/20100901 (two occurrences). Replace xmlns:bpmn=http://www.omg.org/spec/BPMN/20100101 by xmlns:bpmn=http://www.omg.org/spec/BPMN/20100501 (two occurrences).
Actions taken:
July 25, 2011: received issue
January 11, 2012: closed issue

Issue 17034: What is the definition of "fundamental type"? (smof-ftf)

Click
here for this issue's archive.
Source: Object Management Group (Mr. Andrew Watson, andrew(at)omg.org)
Nature: Clarification
Severity: Minor
Summary:
Section 7.1 includes this sentence:


"In reality, objects are subject to constant variations without changing their identity or their fundamental type, they undergo changes in classifications and assumed roles."

The term "fundamental type" doesn't seem to have a formal definition in either MOF or SMOF, so it's not clear what the term means in this context. Please further clarify the implicit distinction being made here between "type" and "fundamental type" (or remove the term).

Resolution: Remove the words “or their fundamental type”.
Revised Text: SMOF Beta-2: In section 7.1, second paragraph. In the sentence “In reality, objects are subject to constant variations without changing their identity or their fundamental type, they…” remove the words “or their fundamental type”.
Actions taken:
January 23, 2012: received issue
January 7, 2013: closed issue

Issue 17035: Two spelling mistakes (smof-ftf)

Click
here for this issue's archive.
Source: Object Management Group (Mr. Andrew Watson, andrew(at)omg.org)
Nature: Clarification
Severity: Minor
Summary:
Some spelling mistakes in the beta specification:


"clientt" (p 32, section 11.2.2, "Where CompatibleWith exists between two classes it is then permissible to add or remove the clientt ... ")

"sever" (p 9, section 7.4, "Note that there are sever subclasses of ...")

Resolution: Fix spelling mistakes. Since clause 11 will be removed from the specification, the misspelling of “clientt” needs no correction
Revised Text: SMOF Beta-2: In section 7.4 Use Case: Ontology Definition Metamodel (ODM), in the second paragraph: replace “sever” with “several”.
Actions taken:
January 23, 2012: received issue
January 7, 2013: closed issue

Issue 17036: CompatibleWith/IncompatibleWith and the Law of the Excluded Middle (smof-ftf)

Click
here for this issue's archive.
Source: Object Management Group (Mr. Andrew Watson, andrew(at)omg.org)
Nature: Clarification
Severity: Significant
Summary:
It is unclear what what relationship to deduce between a pair classifiers where neither  "CompatibleWith" nor "IncompatibleWith" has been asserted between them. Is the default assumption that they are compatible, not compatible, or that there is no information?


The description of "CompatibleWith" (11.2.2) says:


" ... if AspectOf or CompatibleWith does not exist between two classes (or their supertypes) an instance may not be explicitly classified by both classes ..."


What is the meaning of "may" in that sentence? If the intended meaning is "shall", then it's clear that in the absence of CompatibleWith between two classes, those two classes are not compatible. However, if the intended meaning is indeed "may/might", then the the sentence does nothing to remove the ambiguity.

It is also unclear what behaviour is intended if both CompatibleWith and IncompatibleWith exist between the same pair of classifiers. Presumably this is an error, but how exactly shall a compliant implementation behave under these circumstances?

Resolution: The semantic issue regarding Compatibility is addressed by the resolution to issue 17150; the issue raised against the Profile (clause 11) has no effect, as the Profile has been removed from the specification. Revised Text: No change. Disposition: Closed – Duplicate / Merged – see issue 17163
Revised Text:
Actions taken:
January 23, 2012: received issue
January 7, 2013: closed issue

Issue 17132: Issue with SMOF semantics (smof-ftf)

Click
here for this issue's archive.
Source: Microsoft (Mr. Steve Cook, stcook(at)microsoft.com)
Nature: Uncategorized Issue
Severity:
Summary:
SMOF needs to clarify the algebraic properties of Compatibility and Incompatibility, as follows:

 

1.       Is Compatibility transitive?  I.e. if X C Y and Y C Z, is it valid to multiply classify an object by X and Z without Y being present?

2.       How does Compatibility interact with subtyping?  If X C Y, does that mean that subtypes of X are also compatible with Y? How about X being compatible with subtypes of Y?

3.       How does Incompatibility interact with subtyping?  Same questions as (2).


Resolution: Compatibility has been removed, see the resolution to 17150. This resolves parts (1) and (2) above. Incompatibility is replaced by disjoint (see 17163).
Revised Text: Add the following text within the Semantics section of the class description of Element immediately before the paragraph commencing “A new operation getMetaClasses() …” Any attempt to use reclassify(), reclassifyAll() or addMetaClass() to simultaneously classify an element by metaclasses marked as disjoint, or which have any ancestors marked as disjoint, will cause the reclassification to fail and an exception will be thrown.
Actions taken:
February 17, 2012: received issue
January 7, 2013: closed issue

Issue 17148: Property visibility in profile (smof-ftf)

Click
here for this issue's archive.
Source: NIST (Mr. Conrad Bock, conrad.bock(at)nist.gov)
Nature: Clarification
Severity: Minor
Summary:
Figure 6 (SMOF Profile) has private visibility on the properties.  Is that intended?

Resolution: The FTF members agreed on removing the SMOF Profile entirely since starting with UML 2.4.1, MOF and UML are based on the same metamodel. Therefore compliant UML tools can be used to create MOF models and a separate SMOF Profile is no longer needed. Revised Text: The SMOF Profile (section 11) is removed from the specification; therefore no text change is needed. Disposition: Closed – Duplicate / Merged – see issue 17163
Revised Text:
Actions taken:
February 22, 2012: received issuye
January 7, 2013: closed issue

Discussion:


Issue 17149: AspectOf encourages misuse in common use case (smof-ftf)

Click
here for this issue's archive.
Source: NIST (Mr. Conrad Bock, conrad.bock(at)nist.gov)
Nature: Revision
Severity: Critical
Summary:
Section (11.2.1) AspectOf, Description, is too strong an interpretation of reclassification to subtypes, and encourages modelers to use aspects when that is not what they mean.  For example, if Mammal generalizes Dog, some instances of Mammal might be dogs, but the modeler doesn't know it yet.  When it becomes known that a particular instance of Mammal is a dog, it can be reclassified under Dog.  This doesn't make Dog an aspect of Mammals.  To support this example, modelers would likely think they need to apply the AspectOf stereotype to the generalization between Mammal and Dog, which won't make sense.  This construct needs to be rethought in context of other use cases and perhaps additional stereotypes for more cases.


Resolution: The FTF members agreed on removing the SMOF Profile entirely since starting with UML 2.4.1, MOF and UML are based on the same metamodel. Therefore compliant UML tools can be used to create MOF models and a separate SMOF Profile is no longer needed. Revised Text: The SMOF Profile (section 11) is removed from the specification; therefore no text change is needed. Disposition: Closed – Duplicate / Merged – see issue 17163
Revised Text:
Actions taken:
February 22, 2012: received issue
January 7, 2013: closed issue

Discussion:



Issue 17150: Extended element semantics complicates common use case (smof-ftf)

Click
here for this issue's archive.
Source: NIST (Mr. Conrad Bock, conrad.bock(at)nist.gov)
Nature: Revision
Severity: Significant
Summary:
Section 9.1.2.3 (Element, as extended), Semantics, first sentence, says reclassification is constrained by Compatibility elements, but this would mean an instances of a type cannot be reclassified as one of its subtypes without using compatibility, see AspectOf example in the previous issue.  This is such a typical use case that it would be significant burden to require modelers to explicitly define compatibility for it. 

Resolution: Metaclasses will be considered compatible by default and without need for specific marking, unless explicitly marked disjoint. There will no longer be any Compatibility elements. This will also resolve issue 17152. The required model changes are addressed by the resolution to issue 17163, which becomes a prerequisite to this resolution
Revised Text: Resolution for this issue is included in the resolution for issue 17163.
Actions taken:
February 22, 2012: received issue
January 7, 2013: closed issue

Issue 17151: Compatibility semantics clarification for generalization (smof-ftf)

Click
here for this issue's archive.
Source: NIST (Mr. Conrad Bock, conrad.bock(at)nist.gov)
Nature: Clarification
Severity: Significant
Summary:
Section 9.1.2.2 (Compatibility), Semantics, first paragraph, last sentence, should clarify that disallowing multiple classification does not prevent multiple classification due to generalization.  Otherwise instances can't be created for types that have generalizations

Resolution: Explicit Compatibility has been removed from the metamodel and semantics. Revised Text: Resolution for this issue is included in the resolution for issue 17163. Disposition: Closed – Duplicate / Merged – see issue 17163
Revised Text:
Actions taken:
February 22, 2012: received issue
January 7, 2013: closed issue

Discussion:


Issue 17152: Default compatibility for generalization (smof-ftf)

Click
here for this issue's archive.
Source: NIST (Mr. Conrad Bock, conrad.bock(at)nist.gov)
Nature: Revision
Severity: Critical
Summary:
The last three issues indicate modelers shouldn't be forced to define compatibility for types related by generalization.  Such reclassifications are so common as knowledge about instances changes that the modeler would need to apply compatibility to all generalizations in their models.  Perhaps this could be addressed by assuming unrequired compatibility between types and their generalizations.  Another option might be to batch declare compatibility for generalization at the level of packages.

Resolution: This issue highly overlaps with issue 17150, therefore the resolution for issue 17150 will resolve the problems reported in both , issue 17150 and 17152. Revised Text: None. Resolved by resolution to issue 17150. Disposition: Closed – Duplicate / Merged – see issue 17163
Revised Text:
Actions taken:
February 22, 2012: received issue
January 7, 2013: closed issue

Discussion:


Issue 17153: Required semantics when source instances unclassified (smof-ftf)

Click
here for this issue's archive.
Source: NIST (Mr. Conrad Bock, conrad.bock(at)nist.gov)
Nature: Revision
Severity: Critical
Summary:
Section 9.1.2.2 (Compatibility), Attributes, says if isRequired=true, and the constraint spec evaluated to true, instances of the source will be classified as instances of the target.  Will the instances be unclassified from the target when they are unclassified from the source? If not, this construct won't emulate generalization, and can't capture type equivalance (see last sentence of Semantics), wasn't that the intention?

Resolution: Resolution: Compatibility has been removed from SMOF; see 17150. Revised Text: None. Disposition: Closed – No Change
Revised Text:
Actions taken:
February 22, 2012: received issue
January 7, 2013: closed issue

Discussion:


Issue 17154: Compatiblity constraints and instances (smof-ftf)

Click
here for this issue's archive.
Source: NIST (Mr. Conrad Bock, conrad.bock(at)nist.gov)
Nature: Revision
Severity: Significant
Summary:
Section 9.1.2.2 (Compatibility), Semantics, should clarify whether
instances can be taken into account when evaluating the constraint
specification (compare to the AspectOf, Attributes, isRequired, next to
last paragraph in the description).  If they can, the last sentence
presumably should replace evaluates to true" with "evaluates to true for
all possible instances of either type".  My understanding is the
Compatible constraint specification must evaluate to true for an
instance to be classified under both types, so if the constraint spec
can account for instances, then all instances (past, present, and
future) of both types must satisfy the constraint spec for the types to
be equivalent.

Resolution: Explicit Compatibility has been removed from the metamodel and semantics. Revised Text: Resolution for this issue is included in the resolution for issue 17163. Disposition: Closed – Duplicate / Merged – see issue 17163
Revised Text:
Actions taken:
February 22, 2012: received issue
January 7, 2013: closed issue

Discussion:


Issue 17155: When compatibility is the same as generalization (smof-ftf)

Click
here for this issue's archive.
Source: NIST (Mr. Conrad Bock, conrad.bock(at)nist.gov)
Nature: Clarification
Severity: Significant
Summary:
Section 9.1.2.2 (Compatibility), Semantics, explains how to capture equivalance, and it would be good also to explain that isRequired=true with a constraint spec that always evaluates to true is the same as generalization between the source and the target.

Resolution: Explicit Compatibility has been removed from the metamodel and semantics. Revised Text: Resolution for this issue is included in the resolution for issue 17163. Disposition: Closed – Duplicate / Merged – see issue 17163
Revised Text:
Actions taken:
February 22, 2012: received issue
January 7, 2013: closed issue

Discussion:


Issue 17156: Profile using Constraint, why not? (smof-ftf)

Click
here for this issue's archive.
Source: NIST (Mr. Conrad Bock, conrad.bock(at)nist.gov)
Nature: Revision
Severity: Significant
Summary:
Figure 6 (SMOF Profile) uses Dependency as base, but the metamodel extensions in Chapter 9 use Constraint.  Why not use Constraint in the profile?

Resolution: The FTF members agreed on removing the SMOF Profile entirely since starting with UML 2.4.1, MOF and UML are based on the same metamodel. Therefore compliant UML tools can be used to create MOF models and a separate SMOF Profile is no longer needed. [See also resolution to issue 17163] Revised Text: The SMOF Profile (section 11) is removed from the specification; therefore no text change is needed. Disposition: Closed – Duplicate / Merged – see issue 17163
Revised Text:
Actions taken:
February 22, 2012: received issue
January 7, 2013: closed issue

Discussion:


Issue 17157: Subject classifier (smof-ftf)

Click
here for this issue's archive.
Source: NIST (Mr. Conrad Bock, conrad.bock(at)nist.gov)
Nature: Revision
Severity: Significant
Summary:
Section 11.2.2 (CompatibleWith) Description, third paragraph, first sentence refers to a "subject classifier", what is a subject classifier?

Resolution: The FTF members agreed on removing the SMOF Profile entirely since starting with UML 2.4.1, MOF and UML are based on the same metamodel. Therefore compliant UML tools can be used to create MOF models and a separate SMOF Profile is no longer needed. [See also resolution to issue 17163] Revised Text: The SMOF Profile (section 11) is removed from the specification; therefore no text change is needed. Disposition: Closed – Duplicate / Merged – see issue 17163
Revised Text:
Actions taken:
February 22, 2012: received issue
January 7, 2013: closed issue

Discussion:


Issue 17158: Profile compatibility semantics different from metamodel extension (smof-ftf)

Click
here for this issue's archive.
Source: NIST (Mr. Conrad Bock, conrad.bock(at)nist.gov)
Nature: Revision
Severity: Critical
Summary:
Section 11.2.2 (CompatibleWith) Description, third paragraph, first sentence mentions adding or removing the client classifier, but not the supplier classifier, which isn't the same as Section 9.1.2.2 (Compatibility), Semantics, first, which doesn't distinguish between the constrained types.

Resolution: The FTF members agreed on removing the SMOF Profile entirely since starting with UML 2.4.1, MOF and UML are based on the same metamodel. Therefore compliant UML tools can be used to create MOF models and a separate SMOF Profile is no longer needed. [See also resolution to issue 17163] Revised Text: The SMOF Profile (section 11) is removed from the specification; therefore no text change is needed. Disposition: Closed – Duplicate / Merged – see issue 17163
Revised Text:
Actions taken:
February 22, 2012: received issue
January 7, 2013: closed issue

Discussion:


Issue 17159: Profile and metamodel extension text alignment (smof-ftf)

Click
here for this issue's archive.
Source: NIST (Mr. Conrad Bock, conrad.bock(at)nist.gov)
Nature: Revision
Severity: Critical
Summary:
The profile uses very different language from the metamodel extensions to describe what presumably is the same semantics.  For example, the semantics of Compatibility constraint specifications is much more spelled out in the metamodel extensions than that the profile, (and also see the previous issue).  It would help prevent misinterpretation and improve consistency if the same text is used in both sections as much as possible.

Resolution: The FTF members agreed on removing the SMOF Profile entirely since starting with UML 2.4.1, MOF and UML are based on the same metamodel. Therefore compliant UML tools can be used to create MOF models and a separate SMOF Profile is no longer needed. [See also resolution to issue 17163] Revised Text: The SMOF Profile (section 11) is removed from the specification; therefore no text change is needed. Disposition: Closed – Duplicate / Merged – see issue 17163
Revised Text:
Actions taken:
February 22, 2012: received issue
January 7, 2013: closed issue

Discussion:


Issue 17162: Incompatibility::constrainedType does not need to be ordered (smof-ftf)

Click
here for this issue's archive.
Source: NIST (Mr. Conrad Bock, conrad.bock(at)nist.gov)
Nature: Revision
Severity: Minor
Summary:
In Figure 3 (SMOF Classification Constraints), Incompatibility::constrainedType does not need to be ordered, incompatibility is symmetric.

Resolution: Explicit Compatibility has been removed from the metamodel and semantics. Revised Text: Resolution for this issue is included in the resolution for issue 17163. Disposition: Closed – Duplicate / Merged – see issue 17163
Revised Text:
Actions taken:
February 23, 2012: received issue
January 7, 2013: closed issue

Discussion:


Issue 17163: SMOF not a subset of UML (smof-ftf)

Click
here for this issue's archive.
Source: NIST (Mr. Conrad Bock, conrad.bock(at)nist.gov)
Nature: Revision
Severity: Critical
Summary:
MOF is a subset /constrained version of UML now, as I understand it, but SMOF is not.  MOF subsetting UML had many benefits, why not SMOF?

Resolution: The constraint mechanism in SEMOF::Reflection needs to be revised to make SMOF a subset of UML. The classes SEMOF::Refelction::Compatibility and SEMOF::Reflection::Incompatibility shall be removed and replaced by a constraint carrying an OpaqueExpression with language = “SMOF” and the body holding the values “equivalent” and “disjoint”. As a consequence of this change, regular UML tooling is sufficient to create and maintain SMOF metamodels, therefore the SMOF Profile is no longer needed and shall be removed. SMOF reuses and completes the latent support for multiple classification and reclassification existing in UML. However, a more detailed description of the semantics and side effects of multiple and/or dynamic classification is needed.
Revised Text: In clauses 3.1, 6.2, and 8, wherever the current text refers to MOF, UML or XMI 2.4, replace the reference by a reference to the corresponding 2.4.1 – except the phrase “Beginning with MOF 2.4” in clause 8. In SMOF clause 8, after the sentence “For SEMOF, the following concrete metaclasses from UML’s Kernel may also be used:”, remove Expression from the list. Delete the sentence “For SCMOF, the following concrete metaclasses from UML’s Kernel may also be used: • Expression”. In SMOF clause 9.1.1 Abstract Syntax Remove Figure 3 SMOF Classification Constraints. Remove the class descriptions 9.1.2.1 Incompatibility and 9.1.2.2 Compatibility. Add a new class description for Constraint, as follows: Description The semantics of Constraint from MOF are extended to express disjoint and equivalent Classes. Semantics A Constraint with constrainedElements that are Classes, and with specification that is an OpaqueExpression with language[0] = ‘SMOF’ and body[0] one of {‘disjoint’, ‘equivalent’} has the effect of declaring that the constrainedElements are respectively disjoint or equivalent. Add the following text at the end of the Semantics section of the class description of Element: Multiply classified Elements may participate in multiple containments concurrently at any time provided that each containment is defined by a different classifying metaclass, and the containment semantic is restricted to the slice of the Element defined by that metaclass. A “slice of the Element” is defined as the structural and behavioral features of the Element defined by the corresponding metaclass. At most one slot within a slice for the opposite of a composite property may have a value, where “slot within a slice” means that the slot has a defining feature owned by the corresponding metaclass or one of its ancestors. If a container Element is deleted, which contained a multiple classified Element through a composite relationship, then the classifying metaclass that defined the part end of the composite relationship must be removed from the contained Element, effectively deleting the slice of that Element defined by that metaclass. Revise clause 10 Abstract Semantics to reflect the changes, as follows. Replace the sentence “The SMOF semantic domain model is an extended version of the UML instance model constructed by merging in some additional elements and constraining the result” by the following: “The SMOF semantic domain model is an extended version of a subset of UML 2.4.1 L1. The reused subset of UML contains the following non-abstract classes, all of their superclasses, and all properties, associations, constraints and operations defined on these: Class, Association, Property, and OpaqueExpression. In what follows, this subset of UML is called CAPO. The non-abstract classes introduced by the semantic domain model are Instance, Link, Slot, LinkSlot and InstanceValue.” Replace Figure 4 – Semantic Domain Model Package by this: Replace the sentence “The extensions are introduced to simplify the modeling of links (association instances), and to enable modeling of collection values and compatible and incompatible classifiers” by “The extensions are introduced to simplify the modeling of instances and links and to introduce new operations and constraints that define the semantics”. Replace Figure 5 – AbstractDomainModel package by this figure: Replace the text of the caption to figure 5 by “SMOFAbstractDomainModel package”. Replace “The semantics of SMOF::Element are modeled by instances of InstanceSpecification according to the constraints and operations defined in what follows” by “The semantics of SMOF::Element are modeled by instances of Instance according to the constraints and operations defined in what follows” Replace “Because UML Kernel shares most of its content with those aspects of UML infrastructure that are merged into SMOF, much of F is simply an identity mapping” by “Because CAPO shares its content with those aspects of UML that are merged into SMOF, much of F is simply an identity mapping”. Replace “Hence F(SMOF::Class) = SMOF::AbstractDomainModel::Class, F(SMOF::Property) = SMOF::AbstractDomainModel::Property, and so on” by “Hence F(SMOF::Class) = SMOFAbstractDomainModel::Class, F(SMOF::Property) = SMOFAbstractDomainModel::Property, and so on”. Replace the following: -- Elements map to InstanceSpecifications if (obj.isInstanceOfType(SMOF::Element, true)) then F(obj).oclIsKindOf(SMOF::AbstractDomainModel::InstanceSpecification) -- Links map to Links if (obj.isInstanceOfType (SMOF::Link, true)) then F(obj).oclIsKindOf(SMOF::AbstractDomainModel::Link) -- ReflectiveCollections map to CollectionValues if (obj.isInstanceOfType(SMOF::ReflectiveCollection)) then F(obj).oclIsKindOf(SMOF::AbstractDomainModel::CollectionValue) -- ReflectiveSequences map to SequenceValues if (obj.isInstanceOfType(SMOF::ReflectiveSequence)) then F(obj).oclIsKindOf(SMOF::AbstractDomainModel::SequenceValue) By this: -- Elements map to Instances if (obj.isInstanceOfType(SMOF::Element, true)) then F(obj).oclIsKindOf(SMOFAbstractDomainModel::Instance) -- Links map to Links if (obj.isInstanceOfType (SMOF::Link, true)) then F(obj).oclIsKindOf(SMOFAbstractDomainModel::Link) Replace “The following constraints and operations are introduced in the AbstractDomainModel package and apply to the classes in the merged semantic domain model in addition to all constraints in UML Kernel” by “The following constraints and operations are introduced in the SMOFAbstractDomainModel package and apply to the classes in the merged semantic domain model in addition to all constraints defined in CAPO”. Replace sections 10.1.1 to 10.1.10 inclusive by the following content. 10.1.1.Class Constraints • NotBothEquivalentAndDisjoint No pair of classes exists such that they are both equivalent and disjoint inv: not Class.allInstances()->exists(c | self.isEquivalentTo(c) and (self.isDisjointWith(c) or self.hasDisjointAncestorsWith(c))) Operations • isDisjointWith(other) : post: result = Constraint.allInstances()->exists(c | c.specification.oclIsKindOf(OpaqueExpression) and c.specification.oclAsType(OpaqueExpression).language->at(0)='SMOF' and c.specification.oclAsType(OpaqueExpression)._'body'->at(0)='disjoint' and c.constrainedElement->includes(self) and c.constrainedElement->includes(other)) • isEquivalentTo(other) : post: result = Constraint.allInstances()->exists(c | c.specification.oclIsKindOf(OpaqueExpression) and c.specification.oclAsType(OpaqueExpression).language->at(0)='SMOF' and c.specification.oclAsType(OpaqueExpression)._'body'->at(0)='equivalent' and c.constrainedElement->includes(self) and c.constrainedElement->includes(other)) • hasDisjointAncestorsWith(other) : post: result = self.allParents()->exists(c1 | other.allParents()->exists( c2 | c1.oclAsType(Class).isDisjointWith(c2.oclAsType(Class)))) • directlyEquivalentClasses() : post: result = Class.allInstances()->select(c | self.isEquivalentTo(c)) • thisAndAllParents() : post: result = self->union(allParents()->collect(oclAsType(Class))->asSet()) 10.1.2 Instance Constraints • OnlyClassesAndAssociations The classifiers can only be Classes or Associations. inv: classifier->forAll(c | c.oclIsKindOf(Class) or c.oclIsKindOf(Association)) • LinksClassifiedByAssociations If the InstanceSpecification is not a Link, none of its classifiers are associations. inv: not self.oclIsKindOf(Link) implies classifier->forAll(c | c.oclIsKindOf(Class)) • ClassifiersNotAbstract All classifiers are non-abstract. inv: not classifier->exists(isAbstract) • SlotsHaveDefiningProperties The defining feature of each slot is a structural feature (directly or inherited) of a classifier of the instance specification. inv: slot->forAll(s | classifier->exists (c | c.allFeatures()->includes (s.definingFeature))) • AtMostOneSlotPerFeature One structural feature (including the same feature inherited from multiple classifiers) is the defining feature of at most one slot in an instance specification. inv: classifier->forAll(c | (c.allFeatures()->forAll(f | slot->select(s | s.definingFeature = f)->size() <= 1))) • NoDisjointClasses No two metaclasses may be disjoint or have disjoint ancestors inv: let classes : Set(Class) = self.getMetaClasses() in classes->forAll(c1 | not classes->exists(c2 | c1 <> c2 and (c1.isDisjointWith(c2) or c1.hasDisjointAncestorsWith(c2)))) • AtLeastOneClassifier Each instance is classified at least once inv: classifier->notEmpty() • AllEquivalentClasses If any metaclasses or their ancestors have equivalent classes, then those equivalent classes are also classifiers, either directly or indirectly inv: self.hasAllEquivalentClasses() • AtMostOneContainerPerClassifier At most one slot within a slice for the opposite of a composite property may have a value inv: let containerSlots : Set(Slot) = Link.allInstances()->select(link | link.secondSlot.value->any(true).oclAsType(InstanceValue).instance = self and link.secondSlot.definingFeature.oclAsType(Property).isComposite )->collect(firstSlot)->asSet() in classifier->forAll(cls | containerSlots->select(slot | cls.allFeatures()->includes(slot.definingFeature))->size() <= 1) Operations • reclassify(oldMetaClassnewMetaClass) : pre: not newMetaClass->exists(isAbstract) pre: not self.classifier->exists(oclIsKindOf(Association)) pre: let classesToRemove : Set(Class) = oldMetaClass->reject(o | newMetaClass->includes(o)) in let classesToAdd : Set(Class) = newMetaClass->reject(n | oldMetaClass->includes(n)) in let classesToLeave : Set(Class) = (self.getMetaClasses()->reject(c | classesToRemove->includes(c)))->union(classesToAdd) in classesToLeave->notEmpty() and classesToLeave ->forAll(ctl1 | not classesToLeave ->exists(ctl2 | ctl1.isDisjointWith(ctl2) or ctl1.hasDisjointAncestorsWith(ctl2))) pre: oldMetaClass->forAll(omc | getMetaClasses()->includes(omc)) post: let classesToRemove : Set(Class) = oldMetaClass->reject(o | newMetaClass->includes(o)) in let classesToAdd : Set(Class) = newMetaClass->reject(n | oldMetaClass->includes(n)) in let classesToLeave : Set(Class) = (self.getMetaClasses()->reject(c | classesToRemove->includes(c)))->union(classesToAdd) in self.getMetaClasses()->includesAll(classesToLeave) and self.hasAllEquivalentClasses() post: (slot@pre->reject(s | slot->includes(s)))->forAll(sl | self.slotIsCleared(sl.definingFeature.oclAsType(Property))) post: (slot->reject(s | slot@pre->includes(s)))->forAll(sl | sl.value->any(true).equals( sl.definingFeature.oclAsType(Property).defaultValue)) • reclassifyAll(newMetaClass) : pre: not newMetaClass->exists(isAbstract) pre: not self.classifier->exists(oclIsKindOf(Association)) pre: newMetaClass ->forAll(nmc1 | not newMetaClass ->exists(nmc2 | nmc1.isDisjointWith(nmc2) or nmc1.hasDisjointAncestorsWith(nmc2))) post: self.getMetaClasses()->includesAll(newMetaClass) and self.hasAllEquivalentClasses() post: (slot@pre->reject(s | slot->includes(s)))->forAll(sl | self.slotIsCleared(sl.definingFeature.oclAsType(Property))) post: (slot->reject(s | slot@pre->includes(s)))->forAll(sl | sl.value->any(true).equals( sl.definingFeature.oclAsType(Property).defaultValue)) • getMetaClass() : pre: self.getMetaClasses()->size() = 1 post: result = self.getMetaClasses()->one(true) • getMetaClasses() : post: result = self.classifier->select(oclIsKindOf(Class))-> collect(oclAsType(Class))->asSet() • slotIsCleared(prop) : post: prop.isComposite and prop.type.oclIsKindOf(Class) implies Link.allInstances()->select(link | link.firstSlot.value->any(true).oclAsType(InstanceValue).instance = self and link.secondSlot.definingFeature.oclAsType(Property) = prop)->collect(link | link.secondSlot.value.oclAsType(InstanceValue).instance)->forAll(i | i.metaClassIsRemoved(prop.type.oclAsType(Class))) • container() : pre: self.getContainers()->size() <= 1 post: result = self.getContainers()->any(true) • getContainers() : post: result = Link.allInstances()->select(link | link.secondSlot.value->any(true).oclAsType(InstanceValue).instance = self and link.secondSlot.definingFeature.oclAsType(Property).isComposite)-> collect(link | link.firstSlot.value->any(true).oclAsType(InstanceValue).instance)->asSet() • getContainerForMetaClass(metaClass) : pre: Link.allInstances()->select(link | link.secondSlot.value->any(true).oclAsType(InstanceValue).instance = self and link.secondSlot.definingFeature.oclAsType(Property).isComposite and metaClass.thisAndAllParents()-> includes(link.secondSlot.definingFeature.type.oclAsType(Class)))-> collect(link | link.firstSlot.value->any(true).oclAsType(InstanceValue).instance)-> asSet()->size() <= 1 post: result = Link.allInstances()->select(link | link.secondSlot.value->any(true).oclAsType(InstanceValue).instance = self and link.secondSlot.definingFeature.oclAsType(Property).isComposite and metaClass.thisAndAllParents()-> includes(link.secondSlot.definingFeature.type.oclAsType(Class)))-> collect(link | link.firstSlot.value->any(true).oclAsType(InstanceValue).instance)-> asSet()->any(true) • metaClassIsRemoved(class) : post: (slot@pre->reject(s | slot->includes(s)))->forAll(sl | self.slotIsCleared(sl.definingFeature.oclAsType(Property))) post: not self.getMetaClasses()->includes(class) • hasAllEquivalentClasses() : post: result = self.getMetaClasses()->forAll(c1 | let classAndAncestors : Set(Class) = c1.thisAndAllParents(), directEquivalences : Set(Class) = classAndAncestors-> collect(directlyEquivalentClasses())->asSet() in directEquivalences->forAll(e | self.getMetaClasses()->exists(c2 | c2.thisAndAllParents()->includes(e))) ) • delete() : post: slot@pre->forAll(sl | self.slotIsCleared(sl.definingFeature.oclAsType(Property))) Insert a new section 7.2 after section 7.1 and renumber the remaining sections 7.x 7.2 Multiple and Dynamic Classification In most traditional object-oriented systems, object instances are statically typed (classified) by their defining classifier at instantiation time and retain this type and all structural and behavioral features defined by this type for the entire lifetime of the instance. MOF and most object-oriented programming languages follow this scheme. However, it is often desirable to change the type of an object instance at a certain point of time without affecting the existence (and identity) of the object instance. This is achieved by dynamic classification. The type of an object, ignoring primitive types for a moment, has structural consequences for the object; it is the “blueprint” defining the structural and semantic implementation of the type’s features within this object. If we change the type of an object instance through dynamic classification, then we need to readjust the object’s features according to the new type. For example, a person identified as “Fred” graduates from university and becomes an employee of a corporation. Consequently we dynamically reclassify Fred from type “Student” to type “Employee”. In this process Fred loses his feature “studentId” and gains the features “employeeNumber” and “monthlySalary”. Dynamic classification of single-classified objects is rather drastic, as all features of the object need to be revisited. Multiple classification avoids this, the resulting object instances represent the union of feature instances (slots) from all defining classifiers (types) of the object. As a consequence, multiple classified objects become conceptually inhomogeneous; the conceptual single object is structured into slices, where each slice represents the slots defined by one classifier. Applying dynamic classification to multiple classified objects means effectively adding, removing or exchanging of slices of that object instance without affecting the life of the object as long as at least one slice remains at all time. Multiple classification of our “Fred” enables him to be an employee during daytime and a student in the evening. This example provides insight into another interesting side effect of the object slicing caused by multiple classification: Multiple containment. Containment means a “part-of” relationship, which applies on a slice-by-slice basis in multiply classified objects. The classification of our “Fred” as employee implies a part-of relationship to his employing company. But this part-of relationship affects only the employment-relevant features of Fred, which means the slice defined by the “Employee” classification. The same hold for the part-of relationship with the school defined by the “Student” classification. This shows that multiply classified objects may participate concurrently in multiple containments, but on a slice-by-slice basis to be exact. If a container is deleted, then the corresponding slice is removed from the object. If the object was multiply classified, the corresponding classification is also removed from the object. If the object is singly classified, or if this was the last remaining classification, the object is deleted. SMOF extends MOF with the abilities of multiple classification and dynamic classification. This is achieved by extending Element in MOF::Reflection with the ability to be classified by more than one metaclass, and by adding new reflective operations to Element which allow querying, adding and removing of metaclasses during the lifetime of Element. Slices are not explicitly modeled; they are implicitly defined by the features contributed by each classifying metaclass. Slices become visible in the containment and delete semantics, and in the XMI serialization. Delete clause 11 SMOF Profile and renumber clause 12 to clause 11.
Actions taken:
February 23, 2012: received issue
January 7, 2013: closed issue

Discussion:


Issue 17164: Compatiblity::isRequired = true redundant with Generalization (smof-ftf)

Click
here for this issue's archive.
Source: NIST (Mr. Conrad Bock, conrad.bock(at)nist.gov)
Nature: Revision
Severity: Critical
Summary:
Compatiblity::isRequired = true is redundant with Generalization (both declare all instances of one type are instances of another), why is isRequired needed?  It would be simpler to enable Generalization to be used without modifying it's end types (Pete claims it doesn't even currently require such modification, even though most implementation modify the specialized type).

Resolution: Explicit Compatibility has been removed from the metamodel and semantics. Revised Text: Resolution for this issue is included in the resolution for issue 17163. Disposition: Closed – Duplicate / Merged – see issue 17163
Revised Text:
Actions taken:
February 23, 2012: received issue
January 7, 2013: closed issue

Discussion:


Issue 17165: Compatibility complicates common programming use case (smof-ftf)

Click
here for this issue's archive.
Source: NIST (Mr. Conrad Bock, conrad.bock(at)nist.gov)
Nature: Revision
Severity: Critical
Summary:
The default restriction against reclassification between generalizations (see Section 9.1.2.3, Semantics, first sentence, and the four earlier issues starting with AspectOf) is not aligned with typical OO programming languages, which allow runtime instances to be bound to variables typed by a superclass of the class from which instances are created.  These programming capabilities enable an class instance to be viewed as an instance of one of the superclasses, but this common programming use case requires a special declaration in SMOF.

Resolution: Explicit Compatibility has been removed from the metamodel and semantics. Revised Text: Resolution for this issue is included in the resolution for issue 17163. Disposition: Closed – Duplicate / Merged – see issue 17163
Revised Text:
Actions taken:
February 23, 2012: received issue
January 7, 2013: closed issue

Discussion:


Issue 17166: SMOF cumbersome for semantic applications (smof-ftf)

Click
here for this issue's archive.
Source: NIST (Mr. Conrad Bock, conrad.bock(at)nist.gov)
Nature: Revision
Severity: Critical
Summary:
SMOF says it gives support to "semantic structures", in particular citing "structural rigidity of object-oriented programming systems" (Section 1, 7.1), including "type / classification systems" as a problem area, but in contrast to typical "semantic" languages, SMOF assumes types are disjoint unless otherwise stated (see Section 9.1.2.1, Incompatibility, Semantics, first paragraph, last sentence), and even prevents reclassification between general and special types by default (see use case in four earlier issues starting with AspectOf, and the immediately previous issue).  Typical "semantic" applications will be forced to define compatibility over most types in their models.  Perhaps this burden could be reduced by compatiblity between types as the default, or maybe a batch compatibility declaration at the level of packages.

Resolution: Resolved by resolution to issue 17150: Metaclasses are considered compatible by default. Revised Text: None. Resolution provided by resolution to issue 17150. Disposition: Closed – Duplicate / Merged – see issue 17163
Revised Text:
Actions taken:
February 23, 2012: received issue
January 7, 2013: closed issue

Issue 17167: EquivalentClass and IncompatibleWith stereotypes redundant with ODM (smof-ftf)

Click
here for this issue's archive.
Source: NIST (Mr. Conrad Bock, conrad.bock(at)nist.gov)
Nature: Revision
Severity: Significant
Summary:
The EquivalentClass and IncompatibleWith stereotypes are redundant with the EquivalentClass and ComplementOf stereotypes in the UML Profile for OWL, see the Ontology Definition Metamodel.

Resolution: The FTF membership agrees that the Stereotypes in the ODM Profile are semantically similar, however decided that SMOF shall not have a Profile and provide these semantics in the metamodel by SMOF Language Tags on Constraint. See resolution to issue 17163. Revised Text: None. Disposition: Closed – Duplicate / Merged – see issue 17163
Revised Text:
Actions taken:
February 23, 2012: received issue
January 7, 2013: closed issue

Issue 17170: oclIsKindOf / ocIsTypeOf (smof-ftf)

Click
here for this issue's archive.
Source: NIST (Mr. Conrad Bock, conrad.bock(at)nist.gov)
Nature: Revision
Severity: Significant
Summary:
Section 11.2.1 (AspectOf), Description, third to last paragraph (the one starting "When the subtype/aspect is added"), oclIsKindOf() is always true for the superclass and subclass, should be oclIsTypeOf().

Resolution: The FTF members agreed on removing the SMOF Profile entirely since starting with UML 2.4.1, MOF and UML are based on the same metamodel. Therefore compliant UML tools can be used to create MOF models and a separate SMOF Profile is no longer needed. [See also resolution to issue 17163] Revised Text: The SMOF Profile (section 11) is removed from the specification; therefore no text change is needed. Disposition: Closed – Duplicate / Merged – see issue 17163
Revised Text:
Actions taken:
February 23, 2012: received issue
January 7, 2013: closed issue

Discussion:


Issue 17171: AspectOf equivalence (smof-ftf)

Click
here for this issue's archive.
Source: NIST (Mr. Conrad Bock, conrad.bock(at)nist.gov)
Nature: Revision
Severity: Significant
Summary:
Section 11.2.1 (AspectOf), Description, fourth paragraph (the starting "Applying AspectOf to a Generalization") is "exactly equivalent", but should say "semantically equivalent".  Aspect is not exactly equivalent to the CompatibleWith pattern given, or you could just use the CompatibleWith pattern as stated and it would be understood the same way by the modeler.  Other uses of the same CompatibleWith pattern are not aspects, see Issue 17149 (AspectOf encourages misuse in common use case).

Resolution: The FTF members agreed on removing the SMOF Profile entirely since starting with UML 2.4.1, MOF and UML are based on the same metamodel. Therefore compliant UML tools can be used to create MOF models and a separate SMOF Profile is no longer needed. [See also resolution to issue 17163] Revised Text: The SMOF Profile (section 11) is removed from the specification; therefore no text change is needed. Disposition: Closed – Duplicate / Merged – see issue 17163
Revised Text:
Actions taken:
February 23, 2012: received issue
January 7, 2013: closed issue

Discussion:


Issue 17279: AspectOf extending Generalization with Constraint unclear (smof-ftf)

Click
here for this issue's archive.
Source: NASA (Dr. Nicolas F. Rouquette, nicolas.f.rouquette(at)jpl.nasa.gov)
Nature: Clarification
Severity: Significant
Summary:
Semantically, AspectOf (Section 11.2.1) corresponds to an SMOF::Compatibility, which is a kind of SMOF::Constraint.  However, the profile also allows using a UML::Constraint to specify the compatibility constraint.  It is unclear whether the intent of the profile is that it's the combination of the AspectOf-stereotyped Generalization + the Constraint applied to that AspectOf-stereotyped Generalization that corresponds to a single SMOF::Constraint

Resolution: The FTF members agreed on removing the SMOF Profile entirely since starting with UML 2.4.1, MOF and UML are based on the same metamodel. Therefore compliant UML tools can be used to create MOF models and a separate SMOF Profile is no longer needed. [See also resolution to issue 17163] Revised Text: The SMOF Profile (section 11) is removed from the specification; therefore no text change is needed. Disposition: Closed – Duplicate / Merged – see issue 17163
Revised Text:
Actions taken:
March 28, 2012: received issue
January 7, 2013: closed issue

Issue 17280: Metamodel Effect subsections should use instances (smof-ftf)

Click
here for this issue's archive.
Source: NASA (Dr. Nicolas F. Rouquette, nicolas.f.rouquette(at)jpl.nasa.gov)
Nature: Clarification
Severity: Significant
Summary:
The Metamodel Effect subsections (11.2.1, 11.2.2, 11.2.3, 11.2.4) currently show relevant portions of the SMOF metamodel diagrams. Instead of showing the SMOF metamodel diagrams, these subsections should show the meaning of each SMOF Profile stereotype in terms of the set of corresponding instances of the SMOF Metamodel classes / associations.

Resolution: The FTF members agreed on removing the SMOF Profile entirely since starting with UML 2.4.1, MOF and UML are based on the same metamodel. Therefore compliant UML tools can be used to create MOF models and a separate SMOF Profile is no longer needed. [See also resolution to issue 17163] Revised Text: The SMOF Profile (section 11) is removed from the specification; therefore no text change is needed. Disposition: Closed – Duplicate / Merged – see issue 17163
Revised Text:
Actions taken:
March 28, 2012: received issue
January 7, 2013: closed issue

Issue 17281: SMOF Issue: Compatibility and Incompatibility constraint semantics (smof-ftf)

Click
here for this issue's archive.
Source: Microsoft (Mr. Steve Cook, stcook(at)microsoft.com)
Nature: Uncategorized Issue
Severity:
Summary:
SMOF Compatibility and Incompatibility are kinds of Constraint.  As such they must have a specification, which is a kind of ValueSpecification.

 

I believe that Incompatibility leaves no more to be said: two types are Incompatible if they are related by an Incompatibility, regardless of what the specification evaluates to.  So what should the specification be?

 

Compatibility says (9.1.2.2) that two compatible classes may co-exist “as long as the constraint’s specification evaluates to true”.  If the constraint is to be OCL, this implies some binding to define the evaluation context for the constraint.  What, for example, is self bound to?  According to 10.1.9, the constraint is evaluated “in the context of the first constrained element”.    

 

I think this is inconsistent with 9.1.2.2.  This gives a direction to Compatibility: the instance is first classified by the “target class”, and second classified by the “source class”.   9.1.2.2 says the source type is constrainedType->at(1) and the target type is constrainedType->at(2).  Since the compatibility constraint must be evaluated against the instance as classified by the target class, then the type of self must be the target class, which makes 10.1.9 wrong.  Looking at an example: Person is compatible with LicensedDriver if age >= 17.  The instance must first be classified as Person, and secondly by LicensedDriver.  So Person is the target type (according to 9.1.2.2) and LicensedDriver is the source type.  Then the constraint self.age >= 17 will make sense if an appropriate OCL binding is defined (which implies a modification to the OCL spec, which we need anyway).

 

I actually think that the target type ought to be constrainedType->at(1) and the source type constrainedType->at(2), to emphasize that the instance has the target type before the source type.

 

Anyway, the wording of Compatibility semantics should say type, not class.


Resolution: This issue is resolved by the resolution to issue 17163. Revised Text: None. Disposition: Closed – Duplicate / Merged – see issue 17163
Revised Text:
Actions taken:
March 28, 2012: received issue
January 7, 2013: closed issue

Issue 17505: Clause 8 should alter MOF’s containment constraints (smof-ftf)

Click
here for this issue's archive.
Source: Microsoft (Mr. Steve Cook, stcook(at)microsoft.com)
Nature: Clarification
Severity: Minor
Summary:
Clause 8 should alter MOF 2.4.1’s containment constraints that an object may only have one container, so that they do not apply in an SMOF context.  In particular, in MOF 12.5, several constraints under Property::isComposite== true need to be reworded

Resolution: SMOF, when merged into MOF, needs to modify MOF’s constraints about an object having just one container.
Revised Text: At the end of clause 8, insert the following text: This specification amends clause 12.5 of the MOF Core 2.4 specification, in the part headed Property::isComposite==true, as follows: Replace “An object may have only one container” by “An object may have at most one container, or if the object is multiply classified, at most one container per classifier”. Replace “Only one container property may be non-null” by “Only one container property, or if the object is multiply classified only one container property per classifier, may be non-null”. Replace “If an object has an existing container and a new container is to be set, the object is removed from the old container before the new container is set” by “If an object has an existing container and a new container is to be set for the same container property, the object is removed from the old container before the new container is set”
Actions taken:
July 18, 2012: received issue
January 7, 2013: closed issue

Issue 17506: reclassify should check its arguments (smof-ftf)

Click
here for this issue's archive.
Source: Microsoft (Mr. Steve Cook, stcook(at)microsoft.com)
Nature: Revision
Severity: Significant
Summary:
Reclassify should throw an exception if oldMetaClass contains any metaclass that does not currently directly classify the object.

Resolution: agreed
Revised Text: In the Operations section of the description of Element in clause 9, in the description for reclassify() and reclassifyAll(), after ‘See section “Semantics” below for the detailed description’, add the following sentence: The operation reclassify will throw an exception if oldMetaClass contains any metaclass that does not currently directly classify the object”.
Actions taken:
July 18, 2012: received issue
January 7, 2013: closed issue