This document describes clarifications and fixes to
The EMOF-based EssentialOCL 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 EssentialOCL model is intended to provide identical behaviour subject to the replacement of
The Eclipse EssentialOCL Model resolves the following errors and anomalies in the OMG QVT Rose Model.
nsURI for EssentialOCL is http://schema.omg.org/spec/QVT/1.0/essentialocl.xml rather than http:///essentialocl.ecore
name for EssentialOCL is EssentialOCL rather than essentialocl
name for FeatureCallExp is FeatureCallExp rather than FeaturePropertyCall
name for ExpressionInOcl.contextVariable is contextVariable rather than context
name for Variable.representedParameter is representedParameter rather than bindParameter
NavigationCallExp is defined
OpaqueExpression is undefined
TypeType is defined
CollectionKind::Collection is defined
eSuperTypes for ExpressionInOcl is TypedElement rather than OpaqueExpression
eSuperTypes for PropertyCallExp is NavigationCallExp rather than FeaturePropertyCall
eSuperTypes for AnyType is Type rather than Class,Type
abstract for CollectionType is false rather than true
containment for TupleLiteralPart.attribute is false rather than true
lowerBound for CollectionType.elementType is 1 rather than 0
upperBound for ExpressionInOcl.parameterVariable is -1 rather than 1
ordered for ExpressionInOcl.parameterVariable is false rather than true
ordered for OperationCallExp.argument is true rather than false
The Eclipse EssentialOCL Model resolves the following errors and anomalies in the corresponding OMG Ecore Model.
nsURI for EssentialOCL is http://schema.omg.org/spec/QVT/1.0/essentialocl.xml rather than http://www.schema.omg.org/spec/OCL/2.0/essentialocl
name for EssentialOCL is EssentialOCL rather than essentialocl
name for ExpressionInOcl.contextVariable is contextVariable rather than context
name for Variable.representedParameter is representedParameter rather than bindParameter
NavigationCallExp is defined
OpaqueExpression is undefined
TypeType is defined
CollectionKind::Collection is defined
eSuperTypes for ExpressionInOcl is TypedElement rather than OpaqueExpression
eSuperTypes for PropertyCallExp is NavigationCallExp
eSuperTypes for AnyType is Type rather than Class,Type
lowerBound for CollectionType.elementType is 1 rather than 0
upperBound for ExpressionInOcl.parameterVariable is -1 rather than 1
abstract for CollectionType is false rather than true
containment for TupleLiteralPart.attribute is false rather than true
ordered for CollectionLiteralExp.part is false rather than true
ordered for ExpressionInOcl.parameterVariable is false rather than true
ordered for LoopExp.iterator is false rather than true
ordered for TupleLiteralExp.part is false rather than true
Unnavigable opposite of CallExp.source is modelled
Unnavigable opposite of CollectionRange.first is modelled
Unnavigable opposite of CollectionRange.last is modelled
Unnavigable opposite of EnumLiteralExp.referredEnumLiteral is modelled
Unnavigable opposite of ExpressionInOcl.bodyExpression is modelled
Unnavigable opposite of ExpressionInOcl.contextVariable is modelled
Unnavigable opposite of ExpressionInOcl.parameterVariable is modelled
Unnavigable opposite of ExpressionInOcl.resultVariable is modelled
Unnavigable opposite of IfExp.condition is modelled
Unnavigable opposite of IfExp.elseExpression is modelled
Unnavigable opposite of IfExp.thenExpression is modelled
Unnavigable opposite of IterateExp.result is modelled
Unnavigable opposite of LoopExp.body is modelled
Unnavigable opposite of OperationCallExp.argument is modelled
Unnavigable opposite of OperationCallExp.referredOperation is modelled
Unnavigable opposite of PropertyCallExp.referredProperty is modelled
Unnavigable opposite of Variable.initExpression is modelled
Unnavigable opposite of VariableExp.referredVariable is modelled
The Eclipse EssentialOCL 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 EssentialOCL is defined
name for EssentialOCL is EssentialOCL rather than essentialocl
name for ExpressionInOcl.contextVariable is contextVariable rather than context
name for Variable.representedParameter is representedParameter rather than bindParameter
NavigationCallExp is defined
OpaqueExpression is undefined
TypeType is defined
CollectionKind::Bag is defined
CollectionKind::Collection is defined
CollectionKind::OrderedSet is defined
CollectionKind::Sequence is defined
CollectionKind::Set is defined
eType for IntegerLiteralExp.integerSymbol is Integer rather than pathmap://models/emof/primitivetypes.emof#o2
eType for RealLiteralExp.realSymbol is Real rather than String
eType for UnlimitedNaturalExp.symbol is UnlimitedNatural rather than pathmap://models/emof/primitivetypes.emof#o4
eSuperTypes for ExpressionInOcl is TypedElement rather than OpaqueExpression
eSuperTypes for PropertyCallExp is NavigationCallExp
eSuperTypes for AnyType is Type rather than Class,Type
upperBound for ExpressionInOcl.parameterVariable is -1 rather than 1
abstract for CollectionType is false rather than true
containment for TupleLiteralPart.attribute is false rather than true
transient for CollectionLiteralPart.collectionLiteralExp is true rather than false
transient for TupleLiteralPart.tupleLiteralExp is true rather than false
transient for Variable.letExp is true rather than false
lowerBound for BooleanLiteralExp.booleanSymbol is 0 rather than 1
lowerBound for CallExp.source is 0 rather than 1
lowerBound for CollectionLiteralExp.kind is 0 rather than 1
lowerBound for CollectionLiteralExp.part is 0 rather than 1
lowerBound for EnumLiteralExp.referredEnumLiteral is 0 rather than 1
lowerBound for ExpressionInOcl.contextVariable is 0 rather than 1
lowerBound for ExpressionInOcl.parameterVariable is 0 rather than 1
lowerBound for ExpressionInOcl.resultVariable is 0 rather than 1
lowerBound for IntegerLiteralExp.integerSymbol is 0 rather than 1
lowerBound for IterateExp.result is 0 rather than 1
lowerBound for LoopExp.iterator is 0 rather than 1
lowerBound for OperationCallExp.argument is 0 rather than 1
lowerBound for OperationCallExp.referredOperation is 0 rather than 1
lowerBound for PropertyCallExp.referredProperty is 0 rather than 1
lowerBound for RealLiteralExp.realSymbol is 0 rather than 1
lowerBound for StringLiteralExp.stringSymbol is 0 rather than 1
lowerBound for TupleLiteralExp.part is 0 rather than 1
lowerBound for TupleLiteralPart.attribute is 0 rather than 1
lowerBound for TupleLiteralPart.tupleLiteralExp is 0 rather than 1
lowerBound for TypeExp.referredType is 0 rather than 1
lowerBound for UnlimitedNaturalExp.symbol is 0 rather than 1
lowerBound for Variable.initExpression is 0 rather than 1
lowerBound for Variable.letExp is 0 rather than 1
lowerBound for VariableExp.referredVariable is 0 rather than 1
lowerBound for Variable.representedParameter is 0 rather than 1
Unnavigable opposite of CallExp.source is modelled
Unnavigable opposite of CollectionRange.first is modelled
Unnavigable opposite of CollectionRange.last is modelled
Unnavigable opposite of EnumLiteralExp.referredEnumLiteral is modelled
Unnavigable opposite of ExpressionInOcl.bodyExpression is modelled
Unnavigable opposite of ExpressionInOcl.contextVariable is modelled
Unnavigable opposite of ExpressionInOcl.parameterVariable is modelled
Unnavigable opposite of ExpressionInOcl.resultVariable is modelled
Unnavigable opposite of IfExp.condition is modelled
Unnavigable opposite of IfExp.elseExpression is modelled
Unnavigable opposite of IfExp.thenExpression is modelled
Unnavigable opposite of IterateExp.result is modelled
Unnavigable opposite of LoopExp.body is modelled
Unnavigable opposite of OperationCallExp.argument is modelled
Unnavigable opposite of OperationCallExp.referredOperation is modelled
Unnavigable opposite of PropertyCallExp.referredProperty is modelled
Unnavigable opposite of Variable.initExpression is modelled
Unnavigable opposite of VariableExp.referredVariable is modelled
The EMOF-based EssentialOCL Model exhibits the following differences with respect to the Eclipse QVT Rose Model.
No differences