This document describes clarifications and fixes to
The EMOF-based EMOF model is intended to exactly comply with the spirit of the latest QVT specification; the model therefore corrects numerous problems in the official QVT 1.0 models. The EMOF-based model should be used for modelling, where accuracy is important.
The Ecore-based EMOF model is intended to provide identical behaviour subject to the replacement of
The Eclipse EMOF Model resolves the following errors and anomalies in the OMG QVT Rose Model.
nsURI for EMOF is http://schema.omg.org/spec/MOF/2.0/emof.xml rather than http:///emof.ecore
name for EMOF is EMOF rather than emof
name for Property.isID is isID rather than isId
Factory is defined
ReflectiveCollection is defined
ReflectiveSequence is defined
Comment.body is defined
Factory.package is defined
Element.tag is undefined
eOpposite for Tag.element is undefined
lowerBound for Operation.class is 0 rather than 1
lowerBound for Type.package is 0 rather than 1
lowerBound for Property.class is 0 rather than 1
ordered for Class.ownedAttribute is true rather than false
ordered for Class.ownedOperation is true rather than false
ordered for Operation.ownedParameter is true rather than false
defaultValueLiteral for Class.isAbstract is false rather than undefined
defaultValueLiteral for MultiplicityElement.isOrdered is false rather than undefined
defaultValueLiteral for MultiplicityElement.isUnique is true rather than undefined
defaultValueLiteral for MultiplicityElement.lower is 1 rather than undefined
defaultValueLiteral for MultiplicityElement.upper is 1 rather than undefined
defaultValueLiteral for Property.isComposite is false rather than undefined
defaultValueLiteral for Property.isDerived is false rather than undefined
defaultValueLiteral for Property.isReadOnly is false rather than undefined
Element.container() is defined
Element.equals(object) is defined
Element.get(property) is defined
Element.getMetaClass() is defined
Element.isSet(property) is defined
Element.set(property,object) is defined
Element.unset(property) is defined
Extent.elements() is defined
Extent.useContainment() is defined
Factory.convertToString(dataType,object) is defined
Factory.create(metaClass) is defined
Factory.createFromString(dataType,string) is defined
ReflectiveCollection.add(object) is defined
ReflectiveCollection.addAll(objects) is defined
ReflectiveCollection.clear() is defined
ReflectiveCollection.remove(object) is defined
ReflectiveCollection.size() is defined
ReflectiveSequence.add(index,object) is defined
ReflectiveSequence.get(index) is defined
ReflectiveSequence.remove(index) is defined
ReflectiveSequence.set(index,object) is defined
Type.isInstance(object) is defined
URIExtent.contextURI() is defined
URIExtent.element(uri) is defined
URIExtent.uri(element) is defined
Unnavigable opposite of Element.ownedComment is modelled
The Eclipse EMOF Model resolves the following errors and anomalies in the corresponding OMG Ecore Model.
nsURI for EMOF is http://schema.omg.org/spec/MOF/2.0/emof.xml rather than http:///emof.ecore
name for EMOF is EMOF rather than emof
name for Property.isID is isID rather than isId
Factory is defined
ReflectiveCollection is defined
ReflectiveSequence is defined
Comment.body is defined
Factory.package is defined
Element.tag is undefined
eOpposite for Tag.element is undefined
lowerBound for Operation.class is 0 rather than 1
lowerBound for Type.package is 0 rather than 1
lowerBound for Property.class is 0 rather than 1
ordered for Class.superClass is false rather than true
ordered for Comment.annotatedElement is false rather than true
ordered for Element.ownedComment is false rather than true
ordered for Operation.raisedException is false rather than true
ordered for Package.nestedPackage is false rather than true
ordered for Package.ownedType is false rather than true
ordered for Tag.element is false rather than true
defaultValueLiteral for Class.isAbstract is false rather than undefined
defaultValueLiteral for MultiplicityElement.isOrdered is false rather than undefined
defaultValueLiteral for MultiplicityElement.isUnique is true rather than undefined
defaultValueLiteral for MultiplicityElement.lower is 1 rather than undefined
defaultValueLiteral for MultiplicityElement.upper is 1 rather than undefined
defaultValueLiteral for Property.isComposite is false rather than undefined
defaultValueLiteral for Property.isDerived is false rather than undefined
defaultValueLiteral for Property.isReadOnly is false rather than undefined
Element.container() is defined
Element.equals(object) is defined
Element.get(property) is defined
Element.getMetaClass() is defined
Element.isSet(property) is defined
Element.set(property,object) is defined
Element.unset(property) is defined
Extent.elements() is defined
Extent.useContainment() is defined
Factory.convertToString(dataType,object) is defined
Factory.create(metaClass) is defined
Factory.createFromString(dataType,string) is defined
ReflectiveCollection.add(object) is defined
ReflectiveCollection.addAll(objects) is defined
ReflectiveCollection.clear() is defined
ReflectiveCollection.remove(object) is defined
ReflectiveCollection.size() is defined
ReflectiveSequence.add(index,object) is defined
ReflectiveSequence.get(index) is defined
ReflectiveSequence.remove(index) is defined
ReflectiveSequence.set(index,object) is defined
Type.isInstance(object) is defined
URIExtent.contextURI() is defined
URIExtent.element(uri) is defined
URIExtent.uri(element) is defined
Unnavigable opposite of Class.superClass is modelled
Unnavigable opposite of Element.ownedComment is modelled
Unnavigable opposite of Package.nestedPackage is modelled
Unnavigable opposite of Property.opposite is modelled
The Eclipse EMOF Model resolves the following errors and anomalies in the corresponding OMG EMOF Model.
The model namespace is http://schema.omg.org/spec/MOF/2.0/emof.xml rather than http://www.schema.omg.org/spec/MOF/2.0/emof.xml
xmi:type of Boolean is emof:PrimitiveType rather than emof:Class
xmi:type of Integer is emof:PrimitiveType rather than emof:Class
xmi:type of String is emof:PrimitiveType rather than emof:Class
xmi:type of UnlimitedNatural is emof:PrimitiveType rather than emof:Class
package of Boolean is emof rather than primitivetypes
package of Integer is emof rather than primitivetypes
package of String is emof rather than primitivetypes
package of UnlimitedNatural is emof rather than primitivetypes
uri for EMOF is defined
name for EMOF is EMOF rather than emof
name for Property.isID is isID rather than isId
Factory is defined
Real is defined
ReflectiveCollection is defined
ReflectiveSequence is defined
Comment.body is defined
Factory.package is defined
Element.tag is undefined
eOpposite for Tag.element is undefined
eType for MultiplicityElement.lower is Integer rather than pathmap://models/emof/primitivetypes.emof#o2
eType for MultiplicityElement.upper is UnlimitedNatural rather than pathmap://models/emof/primitivetypes.emof#o4
lowerBound for Class.isAbstract is 0 rather than 1
lowerBound for Class.ownedAttribute is 0 rather than 1
lowerBound for Class.ownedOperation is 0 rather than 1
lowerBound for Class.superClass is 0 rather than 1
lowerBound for Comment.annotatedElement is 0 rather than 1
lowerBound for Element.ownedComment is 0 rather than 1
lowerBound for Enumeration.ownedLiteral is 0 rather than 1
lowerBound for EnumerationLiteral.enumeration is 0 rather than 1
lowerBound for MultiplicityElement.isOrdered is 0 rather than 1
lowerBound for MultiplicityElement.isUnique is 0 rather than 1
lowerBound for MultiplicityElement.lower is 0 rather than 1
lowerBound for MultiplicityElement.upper is 0 rather than 1
lowerBound for NamedElement.name is 0 rather than 1
lowerBound for Operation.class is 0 rather than 1
lowerBound for Operation.ownedParameter is 0 rather than 1
lowerBound for Operation.raisedException is 0 rather than 1
lowerBound for Package.nestedPackage is 0 rather than 1
lowerBound for Package.ownedType is 0 rather than 1
lowerBound for Package.uri is 0 rather than 1
lowerBound for Parameter.operation is 0 rather than 1
lowerBound for Property.class is 0 rather than 1
lowerBound for Property.default is 0 rather than 1
lowerBound for Property.isComposite is 0 rather than 1
lowerBound for Property.isDerived is 0 rather than 1
lowerBound for Property.isID is 0 rather than 1
lowerBound for Property.isReadOnly is 0 rather than 1
lowerBound for Property.opposite is 0 rather than 1
lowerBound for Tag.element is 0 rather than 1
lowerBound for Tag.name is 0 rather than 1
lowerBound for Tag.value is 0 rather than 1
lowerBound for Type.package is 0 rather than 1
lowerBound for TypedElement.type is 0 rather than 1
transient for EnumerationLiteral.enumeration is true rather than false
transient for Operation.class is true rather than false
transient for Parameter.operation is true rather than false
transient for Property.class is true rather than false
transient for Type.package is true rather than false
defaultValueLiteral for Class.isAbstract is false rather than undefined
defaultValueLiteral for MultiplicityElement.isOrdered is false rather than undefined
defaultValueLiteral for MultiplicityElement.isUnique is true rather than undefined
defaultValueLiteral for MultiplicityElement.lower is 1 rather than undefined
defaultValueLiteral for MultiplicityElement.upper is 1 rather than undefined
defaultValueLiteral for Property.isComposite is false rather than undefined
defaultValueLiteral for Property.isDerived is false rather than undefined
defaultValueLiteral for Property.isReadOnly is false rather than undefined
Element.container() is defined
Element.equals(object) is defined
Element.get(property) is defined
Element.getMetaClass() is defined
Element.isSet(property) is defined
Element.set(property,object) is defined
Element.unset(property) is defined
Extent.elements() is defined
Extent.useContainment() is defined
Factory.convertToString(dataType,object) is defined
Factory.create(metaClass) is defined
Factory.createFromString(dataType,string) is defined
ReflectiveCollection.add(object) is defined
ReflectiveCollection.addAll(objects) is defined
ReflectiveCollection.clear() is defined
ReflectiveCollection.remove(object) is defined
ReflectiveCollection.size() is defined
ReflectiveSequence.add(index,object) is defined
ReflectiveSequence.get(index) is defined
ReflectiveSequence.remove(index) is defined
ReflectiveSequence.set(index,object) is defined
Type.isInstance(object) is defined
URIExtent.contextURI() is defined
URIExtent.element(uri) is defined
URIExtent.uri(element) is defined
Unnavigable opposite of Class.superClass is modelled
Unnavigable opposite of Element.ownedComment is modelled
Unnavigable opposite of Package.nestedPackage is modelled
Unnavigable opposite of Property.opposite is modelled
The EMOF-based EMOF Model exhibits the following differences with respect to the Eclipse QVT Rose Model.
No differences