This document describes clarifications and fixes to
The EMOF-based ImperativeOCL 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 ImperativeOCL model is intended to provide identical behaviour subject to the replacement of
The Eclipse ImperativeOCL Model resolves the following errors and anomalies in the OMG QVT Rose Model.
nsURI for ImperativeOCL is http://schema.omg.org/spec/QVT/1.0/imperativeocl.xml rather than http:///imperativeocl.ecore
nsPrefix for ImperativeOCL is impocl rather than imperativeocl
name for ImperativeOCL is ImperativeOCL rather than imperativeocl
name for TryExp.exceptClause is exceptClause rather than undefined
containment for UnpackExp.targetVariable is false rather than true
lowerBound for ReturnExp.value is 0 rather than 1
defaultValueLiteral for AssertExp.severity is error rather than undefined
defaultValueLiteral for VariableInitExp.withResult is false rather than undefined
eSuperTypes for SwitchExp should not include CallExp
The Eclipse ImperativeOCL Model resolves the following errors and anomalies in the corresponding OMG Ecore Model.
nsURI for ImperativeOCL is http://schema.omg.org/spec/QVT/1.0/imperativeocl.xml rather than http://www.schema.omg.org/spec/QVT/1.0/imperativeocl
nsPrefix for ImperativeOCL is impocl rather than imperativeocl
name for ImperativeOCL is ImperativeOCL rather than imperativeocl
name for TryExp.exceptClause is exceptClause rather than undefined
containment for UnpackExp.targetVariable is false rather than true
ordered for DictLiteralExp.part is false rather than true
lowerBound for ReturnExp.value is 0 rather than 1
defaultValueLiteral for AssertExp.severity is error rather than undefined
defaultValueLiteral for VariableInitExp.withResult is false rather than undefined
eSuperTypes for SwitchExp is ImperativeExpression rather than CallExp,ImperativeExpression
Unnavigable opposite of AltExp.body is modelled
Unnavigable opposite of AltExp.condition is modelled
Unnavigable opposite of AssertExp.assertion is modelled
Unnavigable opposite of AssignExp.defaultValue is modelled
Unnavigable opposite of AssignExp.left is modelled
Unnavigable opposite of AssignExp.value is modelled
Unnavigable opposite of BlockExp.body is modelled
Unnavigable opposite of CatchExp.exception is modelled
Unnavigable opposite of ComputeExp.body is modelled
Unnavigable opposite of ComputeExp.returnedElement is modelled
Unnavigable opposite of DictionaryType.keyType is modelled
Unnavigable opposite of DictLiteralExp.part is modelled
Unnavigable opposite of DictLiteralPart.key is modelled
Unnavigable opposite of DictLiteralPart.value is modelled
Unnavigable opposite of ImperativeIterateExp.target is modelled
Unnavigable opposite of ImperativeLoopExp.condition is modelled
Unnavigable opposite of InstantiationExp.argument is modelled
Unnavigable opposite of LogExp.condition is modelled
Unnavigable opposite of OrderedTupleLiteralExp.part is modelled
Unnavigable opposite of OrderedTupleLiteralPart.value is modelled
Unnavigable opposite of OrderedTupleType.elementType is modelled
Unnavigable opposite of RaiseExp.exception is modelled
Unnavigable opposite of SwitchExp.alternativePart is modelled
Unnavigable opposite of SwitchExp.elsePart is modelled
Unnavigable opposite of TryExp.exceptClause is modelled
Unnavigable opposite of TryExp.tryBody is modelled
Unnavigable opposite of UnlinkExp.item is modelled
Unnavigable opposite of UnlinkExp.target is modelled
Unnavigable opposite of VariableInitExp.referredVariable is modelled
Unnavigable opposite of WhileExp.body is modelled
Unnavigable opposite of WhileExp.condition is modelled
The Eclipse ImperativeOCL 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 ImperativeOCL is defined
name for ImperativeOCL is ImperativeOCL rather than imperativeocl
name for TryExp.exceptClause is exceptClause rather than undefined
containment for UnpackExp.targetVariable is false rather than true
lowerBound for ReturnExp.value is 0 rather than 1
defaultValueLiteral for AssertExp.severity is error rather than undefined
defaultValueLiteral for VariableInitExp.withResult is false rather than undefined
eSuperTypes for SwitchExp is ImperativeExpression rather than CallExp,ImperativeExpression
SeverityKind::error is defined
SeverityKind::fatal is defined
SeverityKind::warning is defined
lowerBound for AssertExp.severity is 0 rather than 1
lowerBound for AssignExp.defaultValue is 0 rather than 1
lowerBound for AssignExp.isReset is 0 rather than 1
lowerBound for AssertExp.log is 0 rather than 1
lowerBound for AssignExp.value is 0 rather than 1
lowerBound for BlockExp.body is 0 rather than 1
lowerBound for CatchExp.body is 0 rather than 1
lowerBound for CatchExp.exception is 0 rather than 1
lowerBound for DictionaryType.keyType is 0 rather than 1
lowerBound for DictLiteralExp.part is 0 rather than 1
lowerBound for ImperativeIterateExp.target is 0 rather than 1
lowerBound for ImperativeLoopExp.condition is 0 rather than 1
lowerBound for InstantiationExp.argument is 0 rather than 1
lowerBound for InstantiationExp.extent is 0 rather than 1
lowerBound for LogExp.condition is 0 rather than 1
lowerBound for OrderedTupleLiteralExp.part is 0 rather than 1
lowerBound for OrderedTupleType.elementType is 0 rather than 1
lowerBound for RaiseExp.argument is 0 rather than 1
lowerBound for SwitchExp.alternativePart is 0 rather than 1
lowerBound for SwitchExp.elsePart is 0 rather than 1
lowerBound for TemplateParameterType.specification is 0 rather than 1
lowerBound for TryExp.exceptClause is 0 rather than undefined
lowerBound for TryExp.tryBody is 0 rather than 1
lowerBound for Typedef.condition is 0 rather than 1
lowerBound for VariableInitExp.withResult is 0 rather than 1
Unnavigable opposite of AltExp.body is modelled
Unnavigable opposite of AltExp.condition is modelled
Unnavigable opposite of AssertExp.assertion is modelled
Unnavigable opposite of AssignExp.defaultValue is modelled
Unnavigable opposite of AssignExp.left is modelled
Unnavigable opposite of AssignExp.value is modelled
Unnavigable opposite of BlockExp.body is modelled
Unnavigable opposite of CatchExp.exception is modelled
Unnavigable opposite of ComputeExp.body is modelled
Unnavigable opposite of ComputeExp.returnedElement is modelled
Unnavigable opposite of DictionaryType.keyType is modelled
Unnavigable opposite of DictLiteralExp.part is modelled
Unnavigable opposite of DictLiteralPart.key is modelled
Unnavigable opposite of DictLiteralPart.value is modelled
Unnavigable opposite of ImperativeIterateExp.target is modelled
Unnavigable opposite of ImperativeLoopExp.condition is modelled
Unnavigable opposite of InstantiationExp.argument is modelled
Unnavigable opposite of LogExp.condition is modelled
Unnavigable opposite of OrderedTupleLiteralExp.part is modelled
Unnavigable opposite of OrderedTupleLiteralPart.value is modelled
Unnavigable opposite of OrderedTupleType.elementType is modelled
Unnavigable opposite of RaiseExp.exception is modelled
Unnavigable opposite of SwitchExp.alternativePart is modelled
Unnavigable opposite of SwitchExp.elsePart is modelled
Unnavigable opposite of TryExp.exceptClause is modelled
Unnavigable opposite of TryExp.tryBody is modelled
Unnavigable opposite of UnlinkExp.item is modelled
Unnavigable opposite of UnlinkExp.target is modelled
Unnavigable opposite of VariableInitExp.referredVariable is modelled
Unnavigable opposite of WhileExp.body is modelled
Unnavigable opposite of WhileExp.condition is modelled
The EMOF-based ImperativeOCL Model exhibits the following differences with respect to the Eclipse QVT Rose Model.
nsPrefix for ImperativeOCL is impocl rather than imperativeocl
nsURI for ImperativeOCL is http://www.eclipse.org/qvt/1.0/ImperativeOCL rather than http://schema.omg.org/spec/QVT/1.0/imperativeocl.xml
nsPrefix for ImperativeOCL is eimpocl rather than impocl