This document describes clarifications and fixes to
The EMOF-based QVTOperational 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 QVTOperational model is intended to provide identical behaviour subject to the replacement of
The Eclipse QVTOperational Model resolves the following errors and anomalies in the OMG QVT Rose Model.
nsPrefix for QVTOperational is qvto rather than qvtoperational
nsURI for QVTOperational is http://schema.omg.org/spec/QVT/1.0/qvtoperational.xml rather than http:///qvtoperational.ecore
name for QVTOperational is QVTOperational rather than qvtoperational
name for MappingParameter.referredDomain is referredDomain rather than refinedDomain
eSuperTypes for ImperativeCallExp is OperationCallExp,ImperativeExpression rather than OperationCallExp
eSuperTypes for MappingOperation is ImperativeOperation rather than ImperativeOperation,Operation,NamedElement
eSuperTypes for ModelType is Class rather than Class,URIExtent
eSuperTypes for ResolveExp is CallExp,ImperativeExpression rather than CallExp
eType for Module.entry is EntryOperation rather than Operation
lowerBound for ModelType.metamodel is 1 rather than 0
defaultValueLiteral for ImperativeCallExp.isVirtual is true rather than undefined
defaultValueLiteral for ModelType.conformanceKind is effective rather than undefined
ordered for OperationBody.content is true rather than false
The Eclipse QVTOperational Model resolves the following errors and anomalies in the corresponding OMG Ecore Model.
nsURI for QVTOperational is http://schema.omg.org/spec/QVT/1.0/qvtoperational.xml rather than http://www.schema.omg.org/spec/QVT/1.0/qvtoperational
nsPrefix for QVTOperational is qvto rather than qvtoperational
name for QVTOperational is QVTOperational rather than qvtoperational
name for MappingParameter.referredDomain is referredDomain rather than refinedDomain
eType for Module.entry is EntryOperation rather than Operation
eSuperTypes for ImperativeCallExp is OperationCallExp,ImperativeExpression rather than OperationCallExp
eSuperTypes for MappingOperation is ImperativeOperation rather than ImperativeOperation,Operation,NamedElement
eSuperTypes for ModelType is Class rather than Class,URIExtent
eSuperTypes for ResolveExp is CallExp,ImperativeExpression rather than CallExp
upperBound for MappingOperation.when is 1 rather than -1
upperBound for MappingOperation.where is 1 rather than -1
lowerBound for ModelType.metamodel is 1 rather than 0
defaultValueLiteral for ImperativeCallExp.isVirtual is true rather than undefined
defaultValueLiteral for ModelType.conformanceKind is effective rather than undefined
ordered for Module.ownedVariable is false rather than true
ordered for OperationBody.variable is false rather than true
Unnavigable opposite of ContextualProperty.initExpression is modelled
Unnavigable opposite of ContextualProperty.overridden is modelled
Unnavigable opposite of ImperativeOperation.overridden is modelled
Unnavigable opposite of MappingBody.endSection is modelled
Unnavigable opposite of MappingBody.initSection is modelled
Unnavigable opposite of MappingOperation.disjunct is modelled
Unnavigable opposite of MappingOperation.inherited is modelled
Unnavigable opposite of MappingOperation.merged is modelled
Unnavigable opposite of MappingOperation.refinedRelation is modelled
Unnavigable opposite of MappingOperation.when is modelled
Unnavigable opposite of MappingOperation.where is modelled
Unnavigable opposite of MappingParameter.referredDomain is modelled
Unnavigable opposite of ModelType.additionalCondition is modelled
Unnavigable opposite of ModuleImport.importedModule is modelled
Unnavigable opposite of Module.entry is modelled
Unnavigable opposite of Module.ownedTag is modelled
Unnavigable opposite of Module.ownedVariable is modelled
Unnavigable opposite of ObjectExp.referredObject is modelled
Unnavigable opposite of OperationBody.content is modelled
Unnavigable opposite of OperationBody.variable is modelled
Unnavigable opposite of OperationalTransformation.intermediateClass is modelled
Unnavigable opposite of OperationalTransformation.intermediateProperty is modelled
Unnavigable opposite of OperationalTransformation.modelParameter is modelled
Unnavigable opposite of OperationalTransformation.refined is modelled
Unnavigable opposite of OperationalTransformation.relation is modelled
Unnavigable opposite of ResolveInExp.inMapping is modelled
The Eclipse QVTOperational 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 QVTOperational is defined
name for QVTOperational is QVTOperational rather than qvtoperational
name for MappingParameter.referredDomain is referredDomain rather than refinedDomain
eType for Module.entry is EntryOperation rather than Operation
eSuperTypes for ImperativeCallExp is OperationCallExp,ImperativeExpression rather than OperationCallExp
eSuperTypes for MappingOperation is ImperativeOperation rather than ImperativeOperation,Operation,NamedElement
eSuperTypes for ModelType is Class rather than Class,URIExtent
eSuperTypes for ResolveExp is CallExp,ImperativeExpression rather than CallExp
DirectionKind::in is defined
DirectionKind::inout is defined
DirectionKind::out is defined
ImportKind::access is defined
ImportKind::extension is defined
defaultValueLiteral for ImperativeCallExp.isVirtual is true rather than undefined
defaultValueLiteral for ModelType.conformanceKind is effective rather than undefined
transient for ModuleImport.module is true rather than false
transient for OperationBody.operation is true rather than false
transient for VarParameter.ctxOwner is true rather than false
transient for VarParameter.resOwner is true rather than false
upperBound for MappingOperation.when is 1 rather than -1
upperBound for MappingOperation.where is 1 rather than -1
lowerBound for ContextualProperty.initExpression is 0 rather than 1
lowerBound for ContextualProperty.overridden is 0 rather than 1
lowerBound for Helper.isQuery is 0 rather than 1
lowerBound for ImperativeCallExp.isVirtual is 0 rather than 1
lowerBound for ImperativeOperation.body is 0 rather than 1
lowerBound for ImperativeOperation.context is 0 rather than 1
lowerBound for ImperativeOperation.isBlackbox is 0 rather than 1
lowerBound for ImperativeOperation.overridden is 0 rather than 1
lowerBound for ImperativeOperation.result is 0 rather than 1
lowerBound for MappingBody.endSection is 0 rather than 1
lowerBound for MappingBody.initSection is 0 rather than 1
lowerBound for MappingCallExp.isStrict is 0 rather than 1
lowerBound for MappingOperation.disjunct is 0 rather than 1
lowerBound for MappingParameter.extent is 0 rather than 1
lowerBound for MappingOperation.inherited is 0 rather than 1
lowerBound for MappingOperation.merged is 0 rather than 1
lowerBound for MappingOperation.refinedRelation is 0 rather than 1
lowerBound for MappingOperation.when is 0 rather than 1
lowerBound for MappingOperation.where is 0 rather than 1
lowerBound for MappingParameter.referredDomain is 0 rather than 1
lowerBound for ModelType.additionalCondition is 0 rather than 1
lowerBound for ModelType.conformanceKind is 0 rather than 1
lowerBound for ModuleImport.binding is 0 rather than 1
lowerBound for ModuleImport.kind is 0 rather than 1
lowerBound for ModuleImport.module is 0 rather than 1
lowerBound for Module.configProperty is 0 rather than 1
lowerBound for Module.entry is 0 rather than 1
lowerBound for Module.isBlackbox is 0 rather than 1
lowerBound for Module.moduleImport is 0 rather than 1
lowerBound for Module.ownedTag is 0 rather than 1
lowerBound for Module.ownedVariable is 0 rather than 1
lowerBound for Module.usedModelType is 0 rather than 1
lowerBound for OperationBody.content is 0 rather than 1
lowerBound for OperationBody.operation is 0 rather than 1
lowerBound for OperationBody.variable is 0 rather than 1
lowerBound for OperationalTransformation.intermediateClass is 0 rather than 1
lowerBound for OperationalTransformation.intermediateProperty is 0 rather than 1
lowerBound for OperationalTransformation.modelParameter is 0 rather than 1
lowerBound for OperationalTransformation.refined is 0 rather than 1
lowerBound for OperationalTransformation.relation is 0 rather than 1
lowerBound for ResolveExp.condition is 0 rather than 1
lowerBound for ResolveExp.isDeferred is 0 rather than 1
lowerBound for ResolveExp.isInverse is 0 rather than 1
lowerBound for ResolveExp.one is 0 rather than 1
lowerBound for ResolveExp.target is 0 rather than 1
lowerBound for ResolveInExp.inMapping is 0 rather than 1
lowerBound for VarParameter.ctxOwner is 0 rather than 1
lowerBound for VarParameter.kind is 0 rather than 1
lowerBound for VarParameter.resOwner is 0 rather than 1
Unnavigable opposite of ContextualProperty.initExpression is modelled
Unnavigable opposite of ContextualProperty.overridden is modelled
Unnavigable opposite of ImperativeOperation.overridden is modelled
Unnavigable opposite of MappingBody.endSection is modelled
Unnavigable opposite of MappingBody.initSection is modelled
Unnavigable opposite of MappingOperation.disjunct is modelled
Unnavigable opposite of MappingOperation.inherited is modelled
Unnavigable opposite of MappingOperation.merged is modelled
Unnavigable opposite of MappingOperation.refinedRelation is modelled
Unnavigable opposite of MappingOperation.when is modelled
Unnavigable opposite of MappingOperation.where is modelled
Unnavigable opposite of MappingParameter.referredDomain is modelled
Unnavigable opposite of ModelType.additionalCondition is modelled
Unnavigable opposite of ModuleImport.importedModule is modelled
Unnavigable opposite of Module.entry is modelled
Unnavigable opposite of Module.ownedTag is modelled
Unnavigable opposite of Module.ownedVariable is modelled
Unnavigable opposite of ObjectExp.referredObject is modelled
Unnavigable opposite of OperationBody.content is modelled
Unnavigable opposite of OperationBody.variable is modelled
Unnavigable opposite of OperationalTransformation.intermediateClass is modelled
Unnavigable opposite of OperationalTransformation.intermediateProperty is modelled
Unnavigable opposite of OperationalTransformation.modelParameter is modelled
Unnavigable opposite of OperationalTransformation.refined is modelled
Unnavigable opposite of OperationalTransformation.relation is modelled
Unnavigable opposite of ResolveInExp.inMapping is modelled
The EMOF-based QVTOperational Model exhibits the following differences with respect to the Eclipse QVT Rose Model.
nsPrefix for QVTOperational is qvto rather than qvtoperational
nsURI for QVTOperational is http://www.eclipse.org/qvt/1.0/QVTOperational rather than http://schema.omg.org/spec/QVT/1.0/qvtoperational.xml
nsPrefix for QVTOperational is eqvto rather than qvto
eType for Module.ownedTag is EAnnotation rather than Tag