Issues for MOF 2.0 Core revision Task Force
To comment on any of these issues, send email to mof2core-rtf@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)
Issue 7605: no documented standard serializiation of MOF 1.4 as an XMI 2.0 schema
Issue 8267: MOF 2 Core: undefined behavior of convertToString
Issue 8269: MOF 2.0 Core: Inconsistency about use of defaults
Issue 8751: Relations
Issue 9147: Container and owningProperty
Issue 9360: Issue for MOF 2 spec (ptc/04-10-15)
Issue 9466: Multiple classifiers for an instance in MOF and RDF as defined in ODM
Issue 9802: Remove Annex B
Issue 10968: Wrong URLs
Issue 11157: FormalNumber: formal/02-04-03 section 3.6.2
Issue 12175: MOF 2.1 should be based on UML 2.1 Infrastructure
Issue 12800: Capturing Unnavigable Opposite Property Role Names
Issue 13127: Section 9.1: paragraph needs clarification
Issue 13444: Annex A refers to non-existing CMOF file
Issue 15118: We urgently need simple and clear rules we can follow to determine, for each file associated to a given specification
Issue 15143: Outdated descriptions
Issue 15271: MOF 2.0 9.1 Contradictory isSet default value semantics
Issue 15397: Remove isId and uri
Issue 15398: Use UML models ‘as is’ for metamodels
Issue 15820: Update and formalize the constraints that MOF applies to UML models
Issue 15821: Remove the distinction between isSet and the default value
Issue 15824: Fix resolution to issue 15398 from MOF2.4 ballot 2
Issue 15826: Delete the redundant package MOF::CMOFExtension described in clause 14.4
Issue 15827: Fix resolution to issue 6905 from MOF2.4 ballot 1
Issue 15830: Delete unenforceable MOF constraint 12.4 [7]
Issue 15831: Delete incompletely specified MOF operation Object::verify() in 15.4 and in diagrams in clause 13
Issue 15832: Move operations from 9.1 Element to 9.3 Object: equals, get/set/unset/isSet
Issue 15859: Problems in MOF operations delete(), invoke() and isInstanceOfType() operations
Issue 16329: No unambiguous way in MOF 2.4 to serialize UML 2.4's StructuredActivityNode
Issue 7605: no documented standard serializiation of MOF 1.4 as an XMI 2.0 schema (mof2core-rtf)
Click here for this issue's archive.
Nature: Enhancement
Severity: Significant
Summary: There is no documented standard serializiation of MOF 1.4 as an XMI 2.0 schema. OMG has published a document for MOF 1.3 as an XMI 2.0 document and MOF 1.4 and an XMI 1.2 DTD, but not MOF 1.4 as an XMI 2.0 schema. This is despite the fact that XMI 2.0 was designed around MOF 1.4. As far as I know, OMG has not released a single full XMI 2.0 schema example. Do any exist?
Resolution: This is requesting that an XMI-compliant XML Schema be provided for MOF itself, as an example of a metamodel. This is an issue for MOF not XMI.
Revised Text:
- none -
Disposition: Transferred to MOF RTF
Revised Text:
Actions taken:
July 27, 2004: received issue
May 27, 2011: trsnsferred to MOF 2 Core RTF
Issue 8267: MOF 2 Core: undefined behavior of convertToString (mof2core-rtf)
Click here for this issue's archive.
Source: Adaptive (Mr. Pete Rivett, pete.rivett(at)adaptive.com)
Nature: Uncategorized Issue
Severity:
Summary:
Section 9.1 of ptc/04-10-15 defines operation convertToString that takes an Object parameter and converts to a string representation for a supplied DataType.
However no exception is defined for when the supplied Object is an instance of a ModelElement and not a DataType.
Resolution: see below
Revised Text: Replace the following sentence in section 9.2 for convertToString():
Exception: IllegalArgumentException if datatype is not a member of the package returned by getPackage().
By
Exception: IllegalArgumentException if datatype is not a member of the package returned by getPackage() or the supplied object is not a valid instance of that datatype.
Actions taken:
February 11, 2005: received issue
April 25, 2011: closed issue
Issue 8269: MOF 2.0 Core: Inconsistency about use of defaults (mof2core-rtf)
Click here for this issue's archive.
Source: Adaptive (Mr. Pete Rivett, pete.rivett(at)adaptive.com)
Nature: Uncategorized Issue
Severity:
Summary: In ptc/04-10-05, section 9.1, the documentation for isSet() states that it "returns true if the value of the Property is different than the default value of that property. "
However later on in the section under Semantics, it states:
If a single-valued property has a default:
....
- If the value of that property is later explicitly set, even to the default value, isSet=true,
Thus there is an inconsistency as to the value if isSet() in the case where the property has been explicitly set to a value that happens to be the same as its default.
Resolution: It’s important to note that Property::default is used only for initial assignment on element creation, not as the value returned in absence of an explicit value.
Revised Text: For the description of isSet() in section 9.1 replace the following paragraph:
If the Property has multiplicity upper bound of 1, isSet() returns true if the value of the Property is different than the default value of that property. If Property has multiplicity upper bound >1, isSet() returns true if the number of objects in the list is > 0.
With:
isSet() returns true if the value of the Property has been explicitly set. See below for detailed semantics.
Actions taken:
February 11, 2005: received issue
April 25, 2011: closed issue
Issue 8751: Relations (mof2core-rtf)
Click here for this issue's archive.
Nature: Revision
Severity: Significant
Summary: All relations should be descended somehow from Relation, or DirectedRelation if that applies. Then all the diagrams could be traversed with the DirectedRelationship API as generic graphs. For example, the arcs on behavioral models should be descended from directed relations.
Resolution: It is not clear that all connections between elements in the UML2 model are a kind of Relationship or DirectedRelationship. A better way to achieve generic traversal is to use MOF reflection to navigate metaclass containment associations. Tools would be free to merge MOF2 Reflection into UML2 compliance levels to provide this capability. If this change were to be made it could have a significant impact on existing implementations and, therefore, is outside the scope of an RTF
Disposition: Closed, no change
Revised Text:
Actions taken:
May 1, 2005: received issue
June 13, 2006: transferred to mof2core-rtf
January 20, 2011: closed no change
April 25, 2011: closed issue
Discussion: It is not clear that all connections between elements in the UML2 model are a kind of
Relationship or DirectedRelationship. A better way to achieve generic traversal is to use
MOF reflection to navigate metaclass containment associations. Tools would be free to
merge MOF2 Reflection into UML2 compliance levels to provide this capability.
If this change were to be made it could have a significant impact on existing
implementations and, therefore, is outside the scope of an RTF
Issue 9147: Container and owningProperty (mof2core-rtf)
Click here for this issue's archive.
Source: Honeywell (Mr. David Oglesby, david.oglesby(at)honeywell.com)
Nature: Uncategorized Issue
Severity:
Summary: On an Object, container() is defined as
result = self.get(self.owningProperty())
where owningProperty() is defined as
result = self.allProperties->select(op| op.isComposite and self.get(op)
<> null)
If I read this correctly, the container of an object is the value of a
property on that object such that isComposite on the property is true
and the value of the property on the object is not null.
How is that not backwards? The value of an object's composite properties
are the objects it *contains*. Don't we want (op|
op.opposite.isComposite and self.get(op) <> null)?
Resolution: see below
Revised Text: Section 15.8, additional Operations [4]
Change definition of owningProperty as follows:
post: result = self.allProperties->select(op| op.opposite <> null and op.opposite.isComposite and self.get(op)<> null)
Actions taken:
November 10, 2005: received issue
April 25, 2011: closed issue
Issue 9360: Issue for MOF 2 spec (ptc/04-10-15) (mof2core-rtf)
Click here for this issue's archive.
Source: Adaptive (Mr. Gene Mutschler, gene.mutschler(at)adaptive.com)
Nature: Uncategorized Issue
Severity:
Summary: There are some shortcomings in the discussion of the isSet() and unset() operations of the Element class. In particular, there is no mention of optional properties in the Semantics section of the Element description.
Is is intended that optional properties be covered by the semantics inSingle-valued properties? If so, how, if at all, does the fact that a property is optional interact with the default for the property? For example, I assume that notwithstanding the spec language:
If a single-valued property has a default:
• It is set to that default value when the element is created. isSet=false
that an optional property will NOT, in fact, be set, and that isSet would be false.
Resolution: Disposition: See issue 8269 for disposition
Revised Text:
Actions taken:
February 9, 2006: received issue
April 25, 2011: closed issue
Issue 9466: Multiple classifiers for an instance in MOF and RDF as defined in ODM (mof2core-rtf)
Click here for this issue's archive.
Source: Model Driven Solutions (Mr. Cory B. Casanave, cory-c(at)modeldriven.com)
Nature: Uncategorized Issue
Severity:
Summary: This is a question involving ODM as well as MOF XMI and Life-cycle.
In ODM we have RDF and OWL defined as MOF meta models, the assumption being, of course, that you can have MOF instances of RDF graphs. But can you? In RDF & OWL an instance (at any M level) can have (and frequently does have) multiple types – it is classified by more than one class. While this is perfectly legal in UML and even in the MOF meta model, I don’t think the concept is supported in XMI or the current life-cycle. So, can you actually represent RDF in MOF? If not, the ODM models are not valid – I hope I am wrong about this.
The ability for an instance to be classified by more than one class is a major advantage of RDF and of ontology languages, the C++ heritage in MOF of an instance statically being a member of a single class puts MOF at a disadvantage in relation to these other technologies. It makes it very difficult to represent different aspects of an instance, as can be seen from the package merge complexities - which would not have been required is we had multiple classification in MOF.
If this is actually a semantic mis-match between MOF and ODM, is may make more sense to add the capability to MOF since the MOF meta model does not preclude this capability – it is only a restriction of the MOF-PSM (XMI).
Resolution:
Revised Text:
Actions taken:
March 22, 2006: 010306
January 20, 2011: closed no change
April 25, 2011: closed issue
Discussion: This is outside the scope of the RTF and is being addressed by the SMOF RFP
Disposition: Closed, no change
Issue 9802: Remove Annex B (mof2core-rtf)
Click here for this issue's archive.
Source: Adaptive (Mr. Pete Rivett, pete.rivett(at)adaptive.com)
Nature: Uncategorized Issue
Severity:
Summary: Annex B does not have any content - it just announces an intention - so is certainly not Normative as claimed. In fact even the announced intention is wrong: the current intention is for a group of all the main vendors (and others) to create a Java Interface for MOF 2 and submit it to OMG (not JCP) via the RFC process.
In fact the Annex really does not belong in the Core specification at all: there is no equivalent Annex for the IDL binding, for example.
Proposed resolution
Remove Annex B.
Resolution: Entirely remove Annex B and update contents page
Revised Text: Entirely remove Annex B and update contents page
Actions taken:
June 5, 2006: received issue
April 25, 2011: closed issue
Issue 10968: Wrong URLs (mof2core-rtf)
Click here for this issue's archive.
Source: Hewlett-Packard (Dr. Jishnu Mukerji, jishnu(at)hp.com)
Nature: Uncategorized Issue
Severity:
Summary: All the URL's mentioned below appear really stange. My impression was that all such URI's should have a prefix http://schema.omg.org/. Clearly those are random URI's that will never ever exist on the OMG server and need fixing. See omg/02-03-02 to get guidance on what URLs already do or will soon (within the next two months) exist on the OMG server.
Juergen, you need to file this as an issue for the MOF RTF.
Jishnu.
LONJON Antoine wrote:
Hi Jim,
Since Barbara Price has left, uou seem to be the person to contact regarding the MOF specification.
The CMofXMI.xsd has references to imported files that are not available on the OMG web site.
<xsd:import
namespace="http:///org/omg/uml2/infrastructure/cmofextension" schemaLocation="cmofextension.xsd"/>
<xsd:import namespace="http:///org/omg/uml2/infrastructure/elements" schemaLocation="elements.xsd"/>
<xsd:import
namespace="http:///org/omg/uml2/infrastructure/behavioralfeatures" schemaLocation="behavioralfeatures.xsd"/>
<xsd:import
namespace="http:///org/omg/uml2/infrastructure/expressions" schemaLocation="expressions.xsd"/>
<xsd:import
namespace="http:///org/omg/uml2/infrastructure/redefinitions" schemaLocation="redefinitions.xsd"/>
<xsd:import
namespace="http:///org/omg/uml2/infrastructure/constraints" schemaLocation="constraints.xsd"/>
<xsd:import
namespace="http:///org/omg/uml2/infrastructure/visibilities" schemaLocation="visibilities.xsd"/>
<xsd:import namespace="http:///org/omg/uml2/infrastructure/super" schemaLocation="super.xsd"/>
<xsd:import
namespace="http:///org/omg/uml2/infrastructure/namespaces" schemaLocation="namespaces.xsd"/>
Do you know where these files are available. I think they should also be posted on the OMG published XSD files in the appropriate directory that Linda is currently creating.
Resolution: The published document formal/06-01-01 contained proper URLs in Annex A, which did indeed use schema.omg.org. However there was a typo in that ‘orb’ was used instead of ‘org’.
However the recommended structure of the URLs has now changed so MOF 2.1 should move to the new structure, since the files need to change significantly due to move to UML 2.1 as the basis of the metametamodel.
Revised Text: In Annex A,
Replace: http://schema.omg.orb/spec/MOF/2.0/emof.xml
With: http://www.omg.org/spec/MOF/2.4/emof/20080301
Replace: http://schema.omg.orb/spec/MOF/2.0/cmof.xml
With: http://www.omg.org/spec/MOF/2.4/cmof/20080302
Actions taken:
April 23, 2007: received issue
April 25, 2011: closed issue
Issue 11157: FormalNumber: formal/02-04-03 section 3.6.2 (mof2core-rtf)
Click here for this issue's archive.
Nature: Revision
Severity: Minor
Summary: In the specification [The “lower” bound of a MultiplicityType to be “Unbounded.” [C-54]] [The “upper” bound of a MultiplicityType cannot be less than 1. [C-56]] and it should be [The “upper” bound of a MultiplicityType to be “Unbounded.” [C-54]] [The “lower” bound of a MultiplicityType cannot be less than 1. [C-56]]
Resolution:
Revised Text:
Actions taken:
July 18, 2007: received issue
January 20, 2011: closed no change
April 25, 2011: closed issue
Discussion: This was raised on MOF 1.4 (which is formal 02-04-03) and no longer applies
Disposition: Closed, no change
Issue 12175: MOF 2.1 should be based on UML 2.1 Infrastructure (mof2core-rtf)
Click here for this issue's archive.
Source: Adaptive (Mr. Pete Rivett, pete.rivett(at)adaptive.com)
Nature: Uncategorized Issue
Severity:
Summary: This will not result in significant changes to the spec itself (beyond replacing UML 2.0 with UML 2.1) but will have a significant change on the XMI due to the nature of the changes in UML
Resolution: MOF should be aligned with an appropriate version of UML and XMI – probably UML 2.4. This will change the XMI but have virtually no impact on the specification document.
Revised Text: Update section 3, Normative References, to refer to UML 2.4 Infrastructure.
Change the normative XMI for MOF.
Actions taken:
January 14, 2008: received issue
April 25, 2011: closed issue
Issue 12800: Capturing Unnavigable Opposite Property Role Names (mof2core-rtf)
Click here for this issue's archive.
Source: Nomos Software (Dr. Edward Willink, ed(at)willink.me.uk)
Nature: Uncategorized Issue
Severity:
Summary: EMOF does not support identification of the opposite role name
for a non-navigable association, however QVT requires such role
names to be used. OCL defines an implicit role name, but UML
graphics supports arbitrary names.
At the EclipseCon OMG symposium in February, it seemed appropriate
to resolve the limitation in the following way.
An opposite role name may be denoted by a Comment Comment with the
inner Comment defining a formal function for the outer Comment.
Thus in:
<ownedAttribute name="forward" ...>
<ownedComment body="backward">
<ownedComment body="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName"/>
</ownedComment>
</ownedAttribute>
"backward" is defined as the oppositeRoleName of "forward".
This practice makes the missing information available, and avoids
any changes to the MOF meta-model and so avoids introducing any
additional Property instances that might bloat existing usage.
It would be helpful if a future MOF version, or an addendum to existing
versions, endorse this practice.
An equivalent Ecore EAnnotation and cross-conversion was introduced
via https://bugs.eclipse.org/bugs/show_bug.cgi?id=229998 and forms
part of EMF 2.4.0 that accompanies Eclipse 3.4 (Ganymede).
Resolution: The use of ‘non-navigable’ is out-dated: the issue is where Property::opposite is empty and there is nothing to hang the name on.
Further email exchanges on the RTF list discussed using an EMOF Tag instead of a Comment. So the proposed resolution is to introduce an EMOF Tag named “org.omg.emof.oppositeRoleName” that can be applied only to a Property whose “opposite” Property is empty. The “value” of this Tag specifies a role name that expressions (such as OCL expressions and QVT expressions) can use to traverse in the opposite direction of the Property.
Revised Text: Add a new Section, specifically Section 12.6 named “Predefined Tags” that reads as follows:
This Section defines a predefined Tag whose name is “org.omg.emof.oppositeRoleName” which can be applied to instances of Property within instances of the EMOF model.
Constraints
context Tag inv:
--The predefined Tag can only be applied to instances of Property whose “opposite” Property is empty
name = “org.omg.emof.oppositeRoleName” implies
element.oclIsKindOf(Property) and element.oclAsType(Property).opposite->isEmpty()
Semantics
If an instance of a Tag has “org.omg.emof.oppositeRoleName” as its “name”, then its “value” specifies a role name that expressions can use to traverse in the opposite direction of the Property, such as OCL expressions and QVT expressions.
If an expression uses a role name specified using a Tag with “name” “org.omg.emof.oppositeRoleName”, and more than one Property has such a Tag with that role name, then it is up to the expression language to decide whether this is an error condition or represents a reverse navigation across all those Properties. An expression language should not choose to pick one such Property at random in case of ambiguity.
Rationale
Use of this Tag is lighter weight than using Property’s “opposite” Property. Use of the “opposite” Property in all cases where what is required is only the ability for expressions to traverse in the opposite direction would have the following negative consequences:
• It would result in tighter coupling among Classes
• It would add to the runtime burden that instances of the model place upon the underlying infrastructure that manages them, by: 1) increasing the overall footprint, since the opposite Property adds substantially to the contract of the Class that owns the additional Property designated as the opposite of the original Property; 2) requiring that storage be allocated for instances of the additional Property; and 3) requiring that referential integrity be maintained in storage among instances of the original Property and instances of the additional Property.
It is beyond the scope of MOF Core to specify the concrete syntax that expressions use for traversal via the org.omg.emof.oppositeRoleName in languages such as OCL and QVT.
Actions taken:
August 31, 2008: receved issue
April 25, 2011: closed issue
Issue 13127: Section 9.1: paragraph needs clarification (mof2core-rtf)
Click here for this issue's archive.
Source: Model Driven Solutions (Mr. Cory B. Casanave, cory-c(at)modeldriven.com)
Nature: Clarification
Severity: Significant
Summary: The following paragrph is not stated clearly and can cause an improper interpretation of the MOF object model: Class Element is the superclass of all model elements in MOF, and is the superclass of all instances of MOF model elements. Each element can access its metaClass in order to obtain a Class that provides a reflective description of that element. By having both MOF and instances of MOF be rooted in class Element, MOF supports any number of meta layers as described in Chapter 7, “MOF Architecture.” A better way to say it may be: Class Element is the superclass of all classes defined in MOF, and is a superclass of the metaclass of all MOF model elements. Each element can access its metaClass in order to obtain a Class that provides a reflective description of that element. By having both MOF and instances of MOF be rooted in class Element, MOF supports any number of meta layers as described in Chapter 7, “MOF Architecture.”
Resolution: Further description would be useful than suggested in the issue
Revised Text: Replace the quoted paragraph in section 9.1 Semantics with the following:
Class Element is the superclass of all classes defined in MOF, and is an implicit superclass of all metaclasses defined using MOF: this superclass relationship to Element does not need to be explicitly modeled in MOF-compliant metamodels, and if implicit in this way Element is not included in the list of superclasses.
By creating Properties with type Element it is possible to reference elements in any MOF-compliant model, similar to the use of xsd:any in XML Schemas.
Each element can access its metaClass in order to obtain a Class that provides a reflective description of that element. By having both MOF and instances of MOF be rooted in class Element, MOF supports any number of meta layers as described in Chapter 7, “MOF Architecture.”
Actions taken:
November 26, 2008: received issue
April 25, 2011: closed issue
Issue 13444: Annex A refers to non-existing CMOF file (mof2core-rtf)
Click here for this issue's archive.
Source: Adaptive (Mr. Gene Mutschler, gene.mutschler(at)adaptive.com)
Nature: Revision
Severity: Significant
Summary: Annex A (which is normative), refers to the availability of the XMI for CMOF in the OMG document ptc/04-10-17. However, this document is not available at the OMG web site (at least not as a publicly available, searchable document). The annex being normative and the spec being publicly available, it would follow that a referenced ptc document would be publicly available. Without an available normative XMI for CMOF, it is not possible to produce a conforming implementation of it. I tried the MOF2.cmof file in the non-normative zip file (document 03-04-08). However, this file is not usable, as it has several errors and missing information.
Resolution: The lack of this document was caused by structural problems in the UML 2.0 metamodel on which MOF 2.0 was based – which meant that UML 2.0 itself had no XMI file.
The normative XMI file will be produced for this revision of MOF and referenced from Annex A.
Revised Text: none
Actions taken:
February 4, 2009: received issue
April 25, 2011: closed issue
Issue 15118: We urgently need simple and clear rules we can follow to determine, for each file associated to a given specification (mof2core-rtf)
Click here for this issue's archive.
Source: NASA (Dr. Nicolas F. Rouquette, nicolas.f.rouquette(at)jpl.nasa.gov)
Nature: Revision
Severity: Critical
Summary: "We urgently need simple and clear rules we can follow to determine, for
each file associated to a given specification, the following:
the value of the cmof:Package or cmof:Profile uri property per clause 10.2
of the MOF2 Core specification.
the XMI namespace URI and the correspondence between an XMI namespace and
anything that is a kind of cmof package, including a profile.
the values of the CMOF tags: org.omg.xmi.nsPrefix and org.omg.xmi.nsURI
Based on the UML 2.3 files, it seemed that the OMG document number - e.g.,
ptc/2009-09-01 for UML 2.3 or ptc/2010-03-01 for SysML 1.2 would have been
sufficient to set unique URIs for each identifiable file document. If this
is incorrect, then we need clear direction for how to do this."
Resolution:
Revised Text:
Actions taken:
March 5, 2010: received issue
January 20, 2011: closed no change
April 25, 2011: closed issue
Discussion: Any rules for these values are a matter of (OMG) policy not for the specifications. The MOF 2 Facility specification provides a basic scheme for use of Package::uri in constructing URLs.
Disposition: Closed, no change
Issue 15143: Outdated descriptions (mof2core-rtf)
Click here for this issue's archive.
Source: Adaptive (Mr. Pete Rivett, pete.rivett(at)adaptive.com)
Nature: Uncategorized Issue
Severity:
Summary: The document still contains large chunks of introductory material that date from the original MOF 2.0 submission and no longer apply. They should be deleted or updated as appropriate.
Resolution:
Revised Text: General: Replace all usages of MOF 2.0 and UML 2.0 with MOF 2 and UML 2
Section 1: replace the following:
This MOF 2.0 Core specification is in response to the Object Management Group Request For Proposals ad/01-11-14 (MOF 2.0 Core RFP). This MOF 2.0 specification is based on the following OMG Specifications:
• MOF 1.4 Specification -- MOF 2.0 is a major revision of the MOF 1.4 Specification. MOF 2.0 addresses issues deferred to MOF 2.0 by the MOF 1.4 RTF. For information on migration from MOF 1.4 to MOF 2.0 please refer to the
“Migration from MOF 1.4” chapter.
• UML 2.0 Infrastructure Convenience Document: ptc/04-10-14 -- MOF 2.0 reuses a subset of the UML 2.0 Infrastruc-
ture Library packages.
• MOF 2.0 XMI Convenience document: ptc/04-06-11 -- Defines the XML mapping requirements for MOF 2.0 and
UML 2.0.
With the following:
This MOF 2 Core specification provides the basis for metamodel definition in OMG’s family of MDA languages and is based on a simplification of UML2’s class modeling capabilities. In addition to providing the means for metamodel definition it adds core capabilities for model management in general, including Identifiers, a simple generic Tag capability and Reflective operations which are generically defined and can be applied regardless of metamodel.
MOF 2 Core is built on by other OMG MOF specifications, including the following (in this list ‘MOF based model’ means any model that instantiates a metamodel defined using MOF, which includes metamodels themselves):
• MOF 2 XMI – for interchanging MOF-based models in XML
• MOF 2 IDL – defines a platform-specific API for MOF Core operations for OMG’s CORBA platform
• MOF 2 Facility and Object Lifecycle – for connecting to and managing collections of MOF-based model elements
• MOF 2 Versioning and Development Lifeycle – for managing versions and configurations of MOF-based models
• MOF Queries Views and Transformations – for transforming MOF-based models
• MOF Models to Text – for generating text, such as programs, from MOF-based models
• Object Constraint Language – for specifying constraints on MOF-based models
Section 2: Replace the following:
Compliant products shall support one or more of the following technology mappings: MOF 2.0 XMI ( ptc/04-06-11), MOF 2.0 IDL, and MOF 2.0 Java binding. Additional conformance rules based on MOF 2.0 IDL and MOF 2.0 Java
binding will be specified in separate specifications.
With:
Compliant products shall support one or more of the following technology mappings: MOF 2 XMI, MOF 2.0 IDL. Additional conformance rules based on are specified in these specifications.
Section 3: Replace the following:
Readers of this MOF 2.0 specification are expected to be familiar with the UML Infrastructure V 2.0 specification. The MOF 2.0 model packages Essential MOF (EMOF) and Complete MOF (CMOF) are constructed by merging the UML2
Infrastructure Library packages.
The main body of the document describes the technical specification itself. This specification references the following documents:
• UML 2.0 Infrastructure Convenience Document: ptc/04-10-14
• MOF 2.0 XMI Convenience document: ptc/04-06-11
With:
Readers of this MOF 2 specification are expected to be familiar with the UML Infrastructure specification. The MOF 2 model packages Essential MOF (EMOF) and Complete MOF (CMOF) are constructed by merging the UML2
Infrastructure Library packages.
The main body of the document describes the technical specification itself. This specification references the following
documents:
• UML 2.4 Infrastructure (provide up to date reference)
• MOF 2.4 XMI (provide up to date reference)
Part I – Introduction:
In para 3 replace the following:
The Meta Object Facility (MOF), an adopted OMG standard, (latest revision MOF 1.4)
With:
The Meta Object Facility (MOF)
In para 5 replace the following:
This collaboration continues to this day as the vendors working on UML 2.0 Infrastructure and MOF 2.0 are attempting even greater reuse
(as required by the OMG RFPs)
With:
This collaboration continues to this day as the vendors working on UML 2 and MOF 2 are attempting even greater reuse
Delete the following para:
Since then, MOF Revision Task Forces have produced several minor revisions, the most recent being the MOF 1.4 specification, which was adopted in October 2001.
In para 7 replace the following:
The use of MOF and XMI over the last few years has raised numerous application and implementation issues by vendors.
As of the time of this writing over 150 formal usage and implementation issues have been submitted to the OMG for consideration. While a vast majority of these issues have been addressed by MOF 1.4, some are considered too major to
be addressed by a Revision Task Force (RTF), and therefore, a series of MOF 2.0 RFPs (seven so far: MOF 2.0 Core, MOF 2.0 IDL Mapping, MOF 2.0 XMI Mapping, MOF 2.0 Versioning and MOF 2.0 Query/View/Transformations, MOF
2.0 Facility RFP, MOF 2.0 Facility RFP) have been issued.
With:
MOF 2 is represented by a set of specifications: MOF 2 Core, MOF 2 IDL Mapping, MOF 2 XMI Mapping, MOF 2 Facility and Object Lifecycle, MOF 2 Versioning and Development Lifecycle, MOF 2 Query/View/Transformations, MOF Model to Text.
In para 8 replace the following:
The reader must keep in mind that the individual RFPs and the proposals can be used incrementally and independently, and this modularity is a design goal of MOF 2.0. For example, vendors can implement the MOF 2.0 Model as a framework for metamodeling and metadata representation and management without using MOF 2.0 IDL or MOF 2.0 Java mapping. This was considered very important to provide more choice for MOF implementers.
With:
The reader must keep in mind that the individual specifications can be used incrementally and independently, and this modularity was a design goal of MOF 2. For example, vendors can implement the MOF 2 Core as a framework for metamodeling and metadata representation and management without using MOF 2 IDL or MOF 2 Facility. This was considered very important to provide more choice for MOF implementers.
In para 9 replace the following:
This MOF 2.0 specification integrates and reuses the complementary UML 2.0 Infrastructure submission to provide a more consistent modeling and metadata framework for OMG’s Model Driven Architecture. UML 2.0 provides the modeling framework and notation, MOF 2.0 provides the metadata management framework and metadata services. The manner in which the specification addresses individual RFP requirements is explained in the Scope of this specification.
Considerable progress has been made in eliminating overlapping modeling constructs in UML 1 and MOF 1 specifications (for example, the confusion between MOF References and UML AssociationEnds has been eliminated).
More importantly the modeling constructs from the UML2 Infrastructure Library are reused (using import) by both the MOF 2, UML2 Infrastructure, and UML2 Superstructure specifications.
With:
This MOF 2 specification integrates and reuses the complementary UML 2 Infrastructure submission to provide a more consistent modeling and metadata framework for OMG’s Model Driven Architecture. UML 2 provides the modeling framework and notation, MOF 2 provides the metadata management framework and metadata services. Considerable progress has been made in eliminating overlapping modeling constructs in UML 1 and MOF 1 specifications (for example, the confusion between MOF References and UML AssociationEnds has been eliminated).
Delete the following paragraph:
One of the challenges the MOF 2.0 Core and MOF 2.0 XMI Mapping submissions face is to maintain a stable interchange model (XMI) while MOF 2 and UML 2 are changing quite significantly. To accomplish this, we have begun applying the design principles that have been used in the XMI for XML Schemas and now the MOF 2.0 XMI mapping submission.
This is to use a very small subset of the modeling concepts in MOF. We call this Essential MOF or EMOF which basically models simple classes with attributes and operations to fix the basic mapping from MOF to XML and Java.
Additional mapping rules are provided in a manner consistent with XMI 2.0 for more complex modeling constructs.
Please refer to the MOF 2.0 XMI Convenience document: ptc/04-06-11 for more details.
Section 7.1: Delete the following paragraph:
While much progress has been made in unification of the modeling concepts in MOF 2 and UML 2, the goal of reuse of meta model packages across object and non-object systems continues to be challenging. To address this the initial MOF
2.0 Core submission included a chapter titled “Common Concepts.” In the revised submission (in part to meet current submission deadlines and because this task proved to be more difficult than anticipated) we have scaled back these goals
to focus on reuse between just UML and MOF. The MOF2 submission team recommends additional OMG RFPs be issued to address this broader reuse of metamodel packages between object and non-object systems.
Section 7.2: Replace the following:
The MOF 1.4 Reflection interfaces allow traversal across any number of metalayers recursively.
With:
The MOF 2 Reflection interfaces allow traversal across any number of metalayers recursively.
Section 7.3: Replace the following:
The UML 2.0 Infrastructure Library uses fine grained packages to bootstrap the rest of UML 2.0. A design goal (and RFP Requirement) is to reuse this infrastructure in the definition of the MOF 2.0 Model. In MOF 2.0 this reuse is simply accomplished by using a standard CMOF extensibility mechanism -- importing, combining, and merging existing MOF 2.0 compliant packages. Importing packages makes model elements contained in the imported package visible in the importing package. Merging packages extends model elements in the merging package with new feature deltas from the merged package. The details are covered in the UML 2.0 Infrastructure Convenience document in the section on PackageMerge. Note that we have designed both the UML 2.0 model and the MOF 2.0 model to be compliant to MOF 2.0 and be instantiable from MOF 2.0.
With:
The UML 2 Infrastructure Library uses fine grained packages to bootstrap the rest of UML 2. A design goal is to reuse this infrastructure in the definition of the MOF 2 Model. In MOF 2 this reuse is simply accomplished by using a standard CMOF extensibility mechanism - merging existing MOF 2.0 compliant packages. Merging packages extends model elements in the merging package with new feature deltas from the merged package. The details are covered in the UML 2 Infrastructure Convenience document in the section on PackageMerge. Note that both the UML 2 model and the MOF 2 model are designed to be compliant to MOF 2 and be instantiable from MOF 2.
Section 8.1: Replace the following:
Please refer to the chapter “Language Formalism” in the UML 2.0 Infrastructure Convenience document.
With:
Please refer to the chapter “Language Formalism” in the UML 2 Infrastructure specification.
Section 9: Delete the following:
Note – The Factory class has some overlap with the MOF Life cycle RFP and will need to be reconciled when submissions for
that RFP are adopted.
Actions taken:
March 24, 2010: received issue
April 25, 2011: closed issue
Issue 15271: MOF 2.0 9.1 Contradictory isSet default value semantics (mof2core-rtf)
Click here for this issue's archive.
Source: Nomos Software (Dr. Edward Willink, ed(at)willink.me.uk)
Nature: Uncategorized Issue
Severity:
Summary: The statement under Element::isSet
"If the Property has multiplicity upper bound of 1, isSet() returns true if
the value of the Property is different than the
default value of that property."
is inconsistent with the statement half a page later on semantics
"If the value of that property is later explicitly set, even to the default
value, isSet=true."
the implementation description strongly implies that it is the second
statement that is correct.
Regards
Ed Willink
Resolution: duplicate of issue 15821
Revised Text:
Actions taken:
June 2, 2010: received issue
January 12, 2012: closed issue
Issue 15397: Remove isId and uri (mof2core-rtf)
Click here for this issue's archive.
Source: Adaptive (Mr. Pete Rivett, pete.rivett(at)adaptive.com)
Nature: Revision
Severity:
Summary: With the conclusion of Ballot 10 of the UML 2.4 RTF, Package:uri and Property:isId have been added to UML so there is no need to add them in MOF.
Proposed resolution:
Update Figure 10.1 to remove Package and Property.
Remove sections 10.2 Package and 10.3 Property and ‘shuffle up’ the remaining sections in Chapter 10.
Add the following constraint, formerly in section 10.3, to sections 12.4 and 14.3:
Property.isID can only be true for one Property of a Class.
Resolution:
Revised Text: As per the proposed resolution
Actions taken:
August 7, 2010: received issue
April 25, 2011: closed issue
Issue 15398: Use UML models ‘as is’ for metamodels (mof2core-rtf)
Click here for this issue's archive.
Source: Adaptive (Mr. Pete Rivett, pete.rivett(at)adaptive.com)
Nature: Revision
Severity:
Summary: Requiring a format conversion to make a UML model into a MOF metamodel has proved a significant impediment and time-waster: especially since no UML tools directly support Infrastructure as originally envisioned.
There is no reason why MOF could not use suitably constrained UML models directly, especially as UML 2.4 has now added Property::isId and Package::uri – the only structural differences in MOF.
Proposed resolution (outline):
General:
Change section 3 introduction and reference to refer to UML 2.4 Superstructure instead of Infrastructure
Update Annex A to use UML 2.4 URIs
For CMOF:
Update section 14 to explain the above
Update Figure 14.1 to show CMOF merging UML Kernel instead of Constructs
Update Figure 14.2 to show the same elements but as defined in UML Kernel
Update section 14.3 CMOF Constraints with the following constraints, and include OCL for these and the original constraints:
- A CMOF metamodel may not include instances of the following UML metaclasses:
o InstanceValue
o InstanceSpecification
o Slot
o Interface
o AssociationClass
o GeneralizationSet
- The following properties must be empty
o Class::nestedClassifier
o Property::qualifier
- The value of Property::defaultValue and Parameter::defaultValue must be of kind LiteralSpecification
- The value of MultiplicityElement::lowerValue and upperValue must be of kind LiteralInteger and LiteralUnlimitedNatural respectively
- Dependencies (and subclasses) will be ignored
For EMOF:
Update section 12 to explain the above
Update Figure 12.1 to show CMOF merging UML Kernel instead of Basic
Update Figure 12.2 to show the same elements but as defined in UML Kernel
Update section 12.4 EMOF Constraints with the following additional constraints (to those listed for CMOF above), and include OCL for these and the original constraints:
- An EMOF metamodel may not include instances of the following UML metaclasses:
o Association
o Constraint
o DataType (only instances of PrimitiveType and Enumeration)
o Expression
o OpaqueExpression
o ElementImport
o PackageImport
o PackageMerge
- The following properties must be empty
o Parameter::defaultValue
o Parameter::direction
o Property::subsettedProperty
o Property::redefinedProperty
Resolution: As per the proposed resolution.
In addition, for CMOF, Feature::isStatic must be ‘false’
Revised Text: see pages 35 - 42 of OMG document ptc/2010-12-07 (word format)
Actions taken:
August 7, 2010: received issue
April 25, 2011: closed issue
Issue 15820: Update and formalize the constraints that MOF applies to UML models (mof2core-rtf)
Click here for this issue's archive.
Source: Adaptive (Mr. Pete Rivett, pete.rivett(at)adaptive.com)
Nature: Uncategorized Issue
Severity: Significant
Summary: At the moment the constraints do not reflect the more rigorous process that was deployed when creating the MOF metamodel for UML 2.4.
Resolution:
Revised Text: Replace 12.4 [3], currently:
[3] Names are required for all Types and Properties (though there is nothing to prevent these names being automatically generated by a tool).
with the following:
[3] Names are required for all NamedElements except for ValueSpecifications.
Replace 12.4 [4], currently:
[4] Core::Basic and EMOF does not support visibilities. All property visibilities expressed in the UML MOF model will be ignored (and everything assumed to be public). Name clashes through names thus exposed should be avoided.
with the following:
[4] Core::Basic and EMOF do not support visibilities. All property visibilities must be explicitly set to public where applicable, that is for all NamedElements, ElementImports and PackageImports. Furthermore, no alias is allowed for any ElementImport.
Replace 12.4 [8] from resolution to 15398 in ballot 2, i.e:
[8] An EMOF metamodel may not include instances of the following UML metaclasses:
• AssociationClass
• Constraint
• DataType (only instances of PrimitiveType and Enumeration)
• ElementImport
• Expression
• GeneralizationSet
• InstanceValue
• InstanceSpecification
• Interface
• OpaqueExpression
• PackageImport
• PackageMerge
• Slot
with the following:
[8] An EMOF metamodel is restricted to use the following concrete metaclasses from UML’s Kernel:
• Association
• Class
• Comment
• DataType
• Enumeration
• EnumerationLiteral
• Generalization
• InstanceValue
• LiteralBoolean
• LiteralInteger
• LiteralNull
• LiteralReal
• LiteralString
• LiteralUnlimitedNatural
• Operation
• Package
• Parameter
• PrimitiveType
• Property
Replace 12.4 [9] from resolution to 15398 in ballot 2, i.e:
[9] The following properties must be empty:
• Class::nestedClassifier
• Classifier::/general for instances of Datatype
• Operation::bodyCondition
• Operation::postcondition
• Operation::precondition
• Operation::redefinedOperation
• Parameter::defaultValue
• Property::qualifier
• Property::redefinedProperty
• Property::subsettedProperty
with the following:
[9] The following properties must be empty:
• Association::navigableOwnedEnd
• Class::nestedClassifier
• Classifier::/general for instances of Datatype
• Operation::bodyCondition
• Operation::postcondition
• Operation::precondition
• Operation::redefinedOperation
• Parameter::defaultValue
• Property::qualifier
• Property::redefinedProperty
• Property::subsettedProperty
Replace 12.4 [10] from resolution to 15398 in ballot 2, i.e:
[10] The following properties must be false:
• Association::isDerived
• Association::ownedNavigableEnd
• Classifier::isFinalSpecialization
• Feature::isStatic
• Operation::isQuery
• Property::isDerivedUnion
• RedefinableElement::isLeaf
with the following:
[10] The following properties must be false:
• Association::isDerived
• Classifier::isFinalSpecialization
• Feature::isStatic
• Property::isDerivedUnion
• RedefinableElement::isLeaf
Replace 12.4 [12] from resolution to 15398 in ballot 2, i.e:
[12] An Association has exactly 2 memberEnds, may never have an ownedNavigableEnd (they will always be owned by Classes) and may have at most one ownedEnd
with the following:
[12] An Association has exactly 2 memberEnds, may never have a navigableOwnedEnd (they will always be owned by Classes) and may have at most one ownedEnd
Replace 12.4 [13] from resolution to 15398 in ballot 2, i.e:
[13] Parameter::direction is ignored unless the value is ‘return’ (it is used to derive the multiplicity of the Operation)
with the following:
[13] An Operation can have up to one Parameter whose direction is ‘return’; furthermore, an Operation cannot have any ParameterSet per 12.4 [8].
Replace 12.4 [16] from resolution to 15398 in ballot 2, i.e:
[16] Property::aggregation values of ‘shared’ will be ignored and treated as ‘none’
with the following:
[16] Property::aggregation must be either ‘none’ or ‘composite’
Add the following:
[17] Enumerations may not have attributes or operations
[18] BehavioralFeature must be sequential.
[19] Class must not be active.
[20] An EnumerationLiteral must not have a ValueSpecification.
[21] An Operation Parameter must have no effect, exception or streaming characteristics.
[22] A TypedElement cannot be typed by an Association.
[23] A TypedElement other than a LiteralSpecification or an OpaqueExpression must have a Type.
[24] A TypedElement that is a kind of Parameter or Property typed by a Class cannot have a default value.
[25] For a TypedElement that is a kind of Parameter or Property typed by an Enumeration, the defaultValue, if any, must be a kind of InstanceValue.
[26] For a TypedElement that is a kind of Parameter or Property typed by an PrimitiveType, the defaultValue, if any, must be a kind of LiteralSpecification.
[27] A composite subsetting Property with mandatory multiplicity cannot subset another composite Property with mandatory multiplicity.
[28] A Property typed by a kind of DataType must have aggregation = none.
[29] A Property owned by a DataType can only be typed by a DataType.
[30] Each Association memberEnd Property must be typed by a Class.
[31] A multi-valued Property or Parameter cannot have a default value.
[31] The values of MultiplicityElement::lowerValue and upperValue must be of kind LiteralInteger and LiteralUnlimitedNatural respectively.
Add an appendix with the specification of EMOF constraints for clause 12.4 from the file EMOFConstraints.ocl
In clause 14.3, replace the first paragraph, currently:
This section details additional constraints owned by the CMOF package that are applied to metamodels to be processed by a CMOF implementation.
with the following:
This section details the constraints owned by the CMOF package that are applied to metamodels to be processed by a CMOF implementation. These constraints supersede the EMOF constraints from clause 12.4; that is, validating a CMOF should be done with respect to all the CMOF constraints defined in this clause ignoring all the constraint definitions from clause 12.4.
Replace 14.3 [1], currently:
[1] The multiplicity of Association::memberEnd is limited to 2 rather than 2..* (i.e., n-ary Associations are not supported).
context Association inv: memberEnd->size() = 2
with the following:
[1] The multiplicity of Association::memberEnd is limited to 2 rather than 2..* (i.e., n-ary Associations are not supported); unlike EMOF, CMOF associations can have navigable association-owned ends.
In 14.3 [2], delete the following:
context Operation inv: raisedException.oclIsType(Class)
In 14.3 [3], delete the following:
context Integer inv: value >= -2^31 and value <= 2^31 - 1
Replace 14.3 [6], currently:
[6] Names are required for all classifiers and features (though there is nothing to prevent these names being automatically generated by a tool).
context Classifier inv: not(name = OclUndefined)
context StructuralFeature inv: not(name = OclUndefined)
with the following:
[6] Names are required for all NamedElements except for ValueSpecifications.
Replace 14.3 [7], currently:
[7] Visibilities will be ignored (and everything assumed to be public). Name clashes through names thus exposed should be avoided.
with the following:
[7] CMOF does not support visibilities. All property visibilities must be explicitly set to public where applicable, that is for all NamedElements, ElementImports and PackageImports. Furthermore, no alias is allowed for any ElementImport.
In 14.3 [8], delete:
context Enumeration inv: isEmpty(feature)
Replace 14.3 [9] from resolution to 15398 in ballot 2, i.e:
[9] A CMOF metamodel may not include instances of the following UML metaclasses:
• AssociationClass
• GeneralizationSet
• InstanceValue
• InstanceSpecification
• Interface
• Slot
with the following:
[9] A CMOF metamodel is restricted to use the 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
Replace 14.3 [12] from resolution to 15398 in ballot 2, i.e:
[12] The value of Property::defaultValue and Parameter::defaultValue must be of kind LiteralSpecification
with the following:
[12] 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.
Delete 14.3 [14] from resolution to 15398 in ballot 2, i.e:
[14] Instances of Dependency (and subclasses) will be ignored
Replace 14.3 [15] from resolution to 15398 in ballot 2, i.e:
[15] Generalization::isSubstitutable must be true
with the following:
[14] Generalization::isSubstitutable must be true
Replace 14.3 [16] from resolution to 15398 in ballot 2, i.e:
[16] Only one member attribute of a Class may have isId=true. Any others (e.g. those inherited) must be redefined: either made unavailable or redefined to change isId = false.
with the following:
[15] Only one member attribute of a Class may have isId=true. Any others (e.g. those inherited) must be redefined: either made unavailable or redefined to change isId = false.
Replace 14.3 [17] from resolution to 15398 in ballot 2, i.e:
[17] Property::aggregation values of ‘shared’ will be ignored and treated as ‘none’
with the following:
[16] Property::aggregation must be either ‘none’ or ‘composite’
Add the following:
[17] BehavioralFeature must be sequential.
[18] Class must not be active.
[19] An EnumerationLiteral must not have a ValueSpecification.
[20] An Operation Parameter must have no effect, exception or streaming characteristics.
[21] A TypedElement cannot be typed by an Association.
[22] A TypedElement other than a LiteralSpecification or an OpaqueExpression must have a Type.
[23] A TypedElement that is a kind of Parameter or Property typed by a Class cannot have a default value.
[24] For a TypedElement that is a kind of Parameter or Property typed by an Enumeration, the defaultValue, if any, must be a kind of InstanceValue.
[25] For a TypedElement that is a kind of Parameter or Property typed by an PrimitiveType, the defaultValue, if any, must be a kind of LiteralSpecification.
[26] A composite subsetting Property with mandatory multiplicity cannot subset another composite Property with mandatory multiplicity.
[27] A Property typed by a kind of DataType must have aggregation = none.
[28] A Property owned by a DataType can only be typed by a DataType.
[29] Each Association memberEnd Property must be typed by a Class.
[30] A Constraint must constrain at least one element and must be specified via an OpaqueExpression.
[31] The body of an OpaqueExpression must not be empty.
Actions taken:
November 17, 2010: received issue
April 25, 2011: closed issue
Discussion:
Issue 15821: Remove the distinction between isSet and the default value (mof2core-rtf)
Click here for this issue's archive.
Source: Adaptive (Mr. Pete Rivett, pete.rivett(at)adaptive.com)
Nature: Revision
Severity: Significant
Summary: The MOF spec has been inconsistent about whether isSet is true if the value is explicitly assigned the default value.
Since XMI has no means to serialize otherwise, then it should be true.
This is related to XMI issue 14628.
Resolution: This is addressed in the wording introduced in issue 15832 in this ballot.
This supersedes the resolution to 8269.
Revised Text: This is addressed in the wording introduced in issue 15832 in this ballot.
This supersedes the resolution to 8269.
Revised Text:
See description of set() in 15832.
In Section 9.1, semantics, replace:
• If the value of that property is later explicitly set, even to the default value, isSet=true.
By:
• If the value of that property is later explicitly set, isSet=true unless it is set to the default value (if any) in which case isSet=false.
Also in 9.1, delete the following sentence:
In the worst case it can be implemented by having an additional boolean, but usually for a particular implementation it can be implemented more efficiently (e.g., by having an internal distinguished value used to represent “no value set”).
Actions taken:
November 17, 2010: received issue
April 25, 2011: closed issue
Issue 15824: Fix resolution to issue 15398 from MOF2.4 ballot 2 (mof2core-rtf)
Click here for this issue's archive.
Source: NASA (Dr. Nicolas F. Rouquette, nicolas.f.rouquette(at)jpl.nasa.gov)
Nature: Uncategorized Issue
Severity:
Summary: MOF::Reflection must merge UML::Classes::Kernel instead of importing it because it defines MOF::Reflection::Element as an increment of UML::Classes::Kernel::Element
MOF::Identifiers does not need to import PrimitiveTypes since MOF::Common already does and that non-conflicting visible elements are imported transitively
MOF::Extension needs to import UML::Classes::Kernel, it does not need to import PrimitiveTypes since Kernel does this already via the merge of Core::Constructs, which imports PrimitiveTypes
MOF::CMOFReflection must merge MOF::Reflection because it uses MOF::Reflection::Object and also defines MOF::CMOFReflection::Element and MOF::CMOF::Reflection::Factory as increments of the classes in MOF::Reflection
Resolution: Apply the changes to the MOF2.4 metamodel as described in the summary.
Additionally:
- MOF::Reflection must import MOF::Common since operations defined in MOF::Reflection depend on types defined in MOF::Common
- MOF::CMOFReflection does not need to import MOF::Common since it merges MOF::Reflection, which imports MOF::Common
- MOF::CMOF does not need to merge UML::Classes::Kernel per resolution 15398 because MOF::CMOF merges MOF::CMOFReflection, which merges MOF::Reflection, which merges UML::Classes::Kernel
- MOF::EMOF does not need to merge UML::Classes::Kernel per resolution 15398 because MOF::EMOF merges MOF::Reflection, which merges UML::Classes::Kernel
Revised Text: see pages 54 - 57 of OMG document ptc/2010-12-07 (worf format)
Actions taken:
November 22, 2010: received issue
April 25, 2011: closed issue
Issue 15826: Delete the redundant package MOF::CMOFExtension described in clause 14.4 (mof2core-rtf)
Click here for this issue's archive.
Source: NASA (Dr. Nicolas F. Rouquette, nicolas.f.rouquette(at)jpl.nasa.gov)
Nature: Uncategorized Issue
Severity:
Summary: Delete the redundant package MOF::CMOFExtension described in clause 14.4
Resolution: Every element shown in figure 14.3 (MOF::CMOFExtension) is a matching increment to a corresponding element shown in figure 11.1 (MOF::Extension). As far as these figures are concerned, the MOF::CMOFExtension package provides no additional capability beyond what MOF::Extension already provides. This would be sufficient to warrant deleting the MOF::CMOFExtension package. However, the resolution to issue 15827 involves adding a second association between Element and Tag that can only be expressed within CMOF because it involves a navigable owned association end, a capability that is specifically prohibited for EMOF per the resolution to issue 15820.
Revised Text: In clause 14.4, delete the following subclause:
Extension
[1] CMOF extends package Extension with role name “tag” for the non-navigable end on the association between Tag and Element.
See the resolution to issue 15827 for an update of figure 14.3.
Actions taken:
November 22, 2010: received issue
April 25, 2011: closed issue
Issue 15827: Fix resolution to issue 6905 from MOF2.4 ballot 1 (mof2core-rtf)
Click here for this issue's archive.
Source: NASA (Dr. Nicolas F. Rouquette, nicolas.f.rouquette(at)jpl.nasa.gov)
Nature: Uncategorized Issue
Severity:
Summary: Change the Element/Tag owner composite association to a composite association that symmetrically subsets the Element owner/ownedElement derived composite association from UML.
Resolution: The resolution to issue 6905 added a property: Tag::owner : Element[0..1]
When EMOF or CMOF would be merged, this property would conflict with UML::Element::/owner : Element[0..1] property (see figure 7.3 in UML2.4 superstructure)
The fix involves the following:
- change the name of ownership property from owner to tagOwner
- symmetrically subset the association end properties of the association UML::A_ownedElement_owner
- make the composite association end, ownedTag, navigable and owned by the association; this is essential to avoid an incompatible API change to UML::Classes::Kernel::Element. However, because navigable owned association ends are not allowed in EMOF, it is necessary to add the ownedTag/tagOwner association in MOF::CMOFExtension instead of MOF::Extension.
Revised Text: see pages 59 - 60 of OMG document ptc/2010-12-07 (word format)
Actions taken:
November 22, 2010: received issue
April 25, 2011: closed issue
Discussion:
Issue 15830: Delete unenforceable MOF constraint 12.4 [7] (mof2core-rtf)
Click here for this issue's archive.
Source: NASA (Dr. Nicolas F. Rouquette, nicolas.f.rouquette(at)jpl.nasa.gov)
Nature: Uncategorized Issue
Severity:
Summary: Delete unenforceable MOF constraint 12.4 [7]
Resolution: Since constraint [7] in clause 12.4 refers to an undefined operation MOF::Object.isInstance() and since the only reasonable interpretation of this constraint is that of a tautology, the constraint provides no practical value to the MOF2 Core specification
Revised Text: Delete constraint [7] in clause 12.4
Actions taken:
November 22, 2010: received issue
April 25, 2011: closed issue
Issue 15831: Delete incompletely specified MOF operation Object::verify() in 15.4 and in diagrams in clause 13 (mof2core-rtf)
Click here for this issue's archive.
Source: NASA (Dr. Nicolas F. Rouquette, nicolas.f.rouquette(at)jpl.nasa.gov)
Nature: Uncategorized Issue
Severity:
Summary: Delete incompletely specified MOF operation Object::verify() in 15.4 and in diagrams in clause 13
Resolution: Since the contents of the ReflectiveCollection result is left unspecified, this operation is unimplementable
Revised Text: Delete the reference to Element::verify(deepVerify : Boolean) : ReflectiveCollection from figure 13.2
See resolution to issues 15832, 15859 for updates to figure 13.2
Delete the following description from clause 15.4 and the post-condition:
Object::verify() modeled as ObjectInstance::verify()
Delete the entry for ‘verify’ in the MOF 2.0 column of the table in clause 16.2
Actions taken:
November 22, 2010: received issue
April 25, 2011: closed issue
Issue 15832: Move operations from 9.1 Element to 9.3 Object: equals, get/set/unset/isSet (mof2core-rtf)
Click here for this issue's archive.
Source: NASA (Dr. Nicolas F. Rouquette, nicolas.f.rouquette(at)jpl.nasa.gov)
Nature: Uncategorized Issue
Severity:
Summary: As currently specified in 9.1, it makes sense to have these operations available in Object, not Element.
Pete concurred with me on making this change in MOF2.4; he said that these operations may have been shuffled at the last minute during MOF2.0 finalization.
Resolution: Move the operations in the metamodel & the specification as indicated in the summary.
The specification of get/set operations should be in terms of ReflectiveCollection instead of ReflectiveSequence since the characteristics of a property with upper bound greater than 1 could be that of a sequence, bag, set or ordered set as specified in UML2.4 (see Superstructure clause 7.3.45, table “Collection types for properties”). Adding support for all of the collection types in UML is a separate issue.
Revised Text: see pages 63 - 66 of OMG document ptc/2010-12-07 (word format)
Actions taken:
November 23, 2010: received issue
April 25, 2011: closed issue
Discussion:
Issue 15859: Problems in MOF operations delete(), invoke() and isInstanceOfType() operations (mof2core-rtf)
Click here for this issue's archive.
Source: NASA (Dr. Nicolas F. Rouquette, nicolas.f.rouquette(at)jpl.nasa.gov)
Nature: Uncategorized Issue
Severity:
Summary: 13.3 describes an operation Object::delete() that does not appear in figure 13.2.
The operation isInstanceOfType() makes sense for an Element but not for an Object where it is misspelled.
The operation invoke() should be defined only on Object and should return set of Objects instead of a set of Elements.
Resolution:
in 13.3, delete the following operations:
delete()
isInstanceOfType(type : Class, includeSubtypes : Boolean) : Boolean
replace:
invoke(op:Operation, arguments : Argument[0..*]) : Element[0..*]
with:
invoke(op:Operation, arguments : Argument[0..*]) : Object[0..*]
in the metamodel, add:
MOF::CMOFReflection::Object::invoke(op:Operation, arguments : Argument[0..*]) : Object[0..*]
in 13.4, delete the operation:
invoke(op:Operation, arguments : Argument[0..*]) : Element[0..*]
in 13.4, rename the operation:
instanceOfType(type: Class, includeSubtypes: Boolean): Boolean
to:
isInstanceOfType(type : Class, includeSubtypes : Boolean) : Boolean
Update the diagrams & metamodel accordingly
Resolution: It is unclear from the MOF2.0 Core specification where the Object::delete() operation is to be defined; it could be in MOF::Reflection::Object or in MOF::CMOFReflection::Object. It is also unclear whether each specialization of Object should have a delete operation – e.g., there is no delete() for MOF::Common::ReflectiveCollection. With so many important details under-specified, it is better to remove this operation than to leave it.
Since the resolution to issue 15825 for Object::getType() is deferred, it does not make sense to have Object::isInstanceOfType() either, this operation should be deleted and only defined for Element as described in the summary.
In 13.3, invoke() returns a collection of Elements but in 13.4, it returns a collection of Objects. Clearly an operation could return any kind of Object; the return type should be Object, not Element. Since MOF::Common::ReflectiveCollection provides the capability for representing a collection of Objects, it is not necessary for invoke() to return yet another collection of Objects, a single Object suffice; if the actual return is in fact a collection of Objects, then the return can be a single ReflectiveCollection object. Therefore, the multiplicity on the return parameter should be changed from 0..* to 0..1
Revised Text: see pages 67 - -70 of OMG document ptc/2010-12-07
Actions taken:
December 2, 2010: received issue
April 25, 2011: closed issue
Discussion:
Issue 16329: No unambiguous way in MOF 2.4 to serialize UML 2.4's StructuredActivityNode (mof2core-rtf)
Click here for this issue's archive.
Source: No Magic, Inc. (Mr. Nerijus Jankevicius, nerijus(at)nomagic.com)
Nature: Revision
Severity: Critical
Summary: We just recently had discussion with Ed about an issue with Activity::node and Activity::group. Both are composite non-derived properties and it causes problems with all StructuredActivityNodes, which are ActivityNodes and ActivityGroups at the same time.
MagicDraw or Eclipse implementation of UML does not allow to own the same element in two composites , even if owner element is the same.
Does XMI support that?
So, ExpansionRegion or any other StructuredActivityNode appears in Activity::group only.
fUML spec/engine expects to find them in Activity::node , as all owned nodes should be there.
Any suggestions? Don't you think we should fix that somehow
Resolution: resolved as an urgent issue
Revised Text:
Actions taken:
June 10, 2011: received issue
January 12, 2012: closed issue
Discussion: Resolution:
The problem is that the combination of the UML, MOF and XMI specs taken together do not provide an adequate specification of how to serialize StructuredActivityNodes, which leads to ambiguity.
Currently, the ownership of StructuredActivityNode by Activity is derived, and is a subset of Activity::node and Activity::group. This leads to the question of whether a StructuredActivityNode should be serialized as a node, as a group, or both. This has obvious impacts on model interchange, and also impacts fUML.
The solution is to make the ownership of StructuredActivityNode by Activity non-derived, and then fix the MOF semantics and XMI serialization rules to ensure that a StructuredActivityNode is serialized in a structuredNode element, and not in a node or a group element.
This resolution fixes the MOF part; there are two counterpart issues corresponding to the UML and XMI parts.
MOF 2.4 currently states that an Element may only have a single slot that refers to its container. In the MOF semantics, it states for ClassInstance “At most one slot for an isComposite property may have a value. (This needs more work if the owner reference is not navigable)”. In fact this ought to say “At most one owning slot, i.e. a slot whose property is opposite an isComposite property, may have a value”. The semantics also specifies Object::owningProperty(), unambiguously declaring that an object only has one owning slot at a time.
The issue is that there is no correct specification of which property provides the owning slot where there is redefinition. In the case of StructuredActivityNode::activity, it redefines ActivityNode::activity and ActivityGroup::inactivity. MOF needs to be clear that in such a case it is the slot for the redefining property that is the actual owning slot. Armed with that information, the XMI spec can then say that the correct element to serialize is the one opposite the actual owning slot.
The semantics correctly states for ObjectInstance “the stored StructuralFeatures … exclude Properties that have been redefined”. However the main problem is in the definition of Instance::propertySlot(), which is supposed to return the slot corresponding to a particular property. This in turn calls a function called originalDefinition() which incorrectly climbs up the chain of redefinitions and subsettings to find the highest property in the chain. This is wrong on two counts: firstly it is the wrong algorithm in principle, because it conflicts with “excluding properties that have been redefined”, and secondly it is wrong to assume that there is only one redefinition/subsetting chain, because in general there are several.
The function originalDefinition is misnamed as well as being ill-conceived. Instead, we need a function applicableDefinition that determines, for a given instance and a given property, which slot is applicable.
The semantic function allSlottableProperties is incorrect; it misunderstands and reverses the role of redefinition, it confuses subsetting and redefinition, and it has an incorrect “not” in its attempt to exclude association-owned ends.
The semantic function owningProperty is incorrect because it does not take into account the effect of redefinition.
The semantic function allProperties is extensively used but has no definition.
Note: there are many other syntactic inconsistencies in the semantic definition of MOF 2.4, such as the inconsistent use of body conditions vs postconditions, the inconsistent use of operation names vs result, and the omission of operation call brackets. This urgent resolution does not attempt to fix those issues.
Revised text:
In Section 15.2, under ClassInstance:
Replace:
2. At most one Slot for an isComposite property may have a value. (This needs more work if the owner reference is not navigable).
by:
2. At most one owning Slot, i.e. a Slot whose property is opposite an isComposite property, may have a value.
In Section 15.8, Additional Operations:
Replace the following definition:
[1] This gives all of the properties in the namespace of the class (including inherited) that require a slot: it excludes properties owned by Associations, derived properties and those that subset or redefine another property (in which case that property will provide the slot and the redefinition will just restrict the values)
Class::allSlottableProperties(): Set(Property);
allSlottableProperties = member->select(p| p.oclIsKindOf(Property) and
not (self.allParents() includes p.namespace)
-- excludes foreign association ends
not(p.isDerived) and
isEmpty(p.redefinedProperty) and
isEmpty(p.subsettedProperty) )
Replace it by:
[1] This gives all of the owned properties of the class (including inherited) that require a slot: it excludes derived properties and those that are redefined in the same classproperties.
Class::allSlottableProperties(): Set(Property);
allSlottableProperties = self.allNonDerivedProperties ()->reject( p |
(self.allNonDerivedProperties()->select(r |
r.allRedefinedProperties()->intersection(self.allProperties())->includes(p))
[2] All the non-derived owned properties (including inherited) of a class.
Class::allNonDerivedProperties(): Set(Property);
allNonDerivedProperties = self.allProperties() -> select( p | not(p.isDerived))
[3
[2] All the non-redefined properties (including inherited) of a class.
Class::allProperties(): Set(Property);
allProperties = member->select(p | p.oclIsKindOf(Property) and p.owner = self)n |
[4 n.oclIsKindOf(Property))->collect( p |
p.oclAsType(Property))
[3] All of the properties directly or indirectly redefined by a property.
Property::allRedefinedProperties() : Set(Property)
allRedefinedProperties =
if
self.redefinedProperty->isEmpty
then
Set{}
else
self.redefinedProperty->union(
self.redefinedProperty->collect(r | r.allRedefinedProperties())()))
Replace the following definition:
[2] This returns the slot corresponding to the supplied property. For redefining properties it will be the redefined one.
Note that derived properties will only have slots if the redefine a non-derived one so the result may be null.
Instance::propertySlot(Property p): Slot
propertySlot = self.slot->select(definingFeature = p.originalDefinition))
Replace it by:
[54] This returns the slot corresponding to the supplied property. For redefined properties it will be the slot corresponding to the redefining one.
Note that derived properties will only have slots if they are redefined by a non-derived one so the result may be null.
ObjectInstance::propertySlot(Property p): Slot
propertySlot =
if
self.oclIsKindOf(ClassInstance)
then
self.slot->any(definingFeature =
p.applicableDefinition(self.oclAsType(ClassInstance).classifier))
else
self.slot->any(definingFeature = p)
Replace the following definition:
[3] This returns the original definition of a Property through any number of redefinitions and subsetting.
Property::originalDefinition(): Property
post: (isEmpty(redefinedProperty) and isEmpty(subsettedProperty) and result = self) or
(notEmpty(redefinedProperty) and result = redefinedProperty.originalDefinition()) or
(notEmpty(subsettedProperty) and result = subsettedProperty.originalDefinition())
Replace it by:
[65] This returns the property that defines the slot that will carry the data for the requesting property in an instance of the class c.
Property::applicableDefinition(Class c): Property
applicableDefinition = c.allSlottableProperties().any(p |
p.allRedefinedProperties()->includes(self))
Replace the following definition:
[4] This returns the single Property that represents the current owner of the Object based on current instance values; may be null for top level objects
Object::owningProperty(): Property
post: result = self.allProperties->select(op| op.opposite <> null and op.opposite.isComposite and self.get(op)<> null)
Replace it by:
[76] This returns the single Property with a slot that represents the current owner of the Object based on current instance values; may be null for top level objects.
Object::owningProperty(): Property modeled as ClassInstance::owningProperty(): Property
owningProperty = self.classifier.allSlottableProperties()->select(op |
op.opposite <> null and op.opposite.isComposite and self.get(op)<> null)
Add the following definition:
[7] All the non-redefined properties of an object.
Object::allProperties(): Set(Property) modeled as ClassInstance:: allProperties (): Set(Property)
allProperties = self.classifier.allProperties()
Renumber all of the remaining definitions to follow on from [8].