QVT: Difference between revisions
m add title |
m Open access bot: hdl updated in citation with #oabot. |
||
(20 intermediate revisions by 14 users not shown) | |||
Line 1: | Line 1: | ||
{{Short description|Standard set of languages for model transformation}} |
|||
[[Image:QVT-Language-Architecture 591x387.jpg|thumb|320px|QVT Architecture as shown in the OMG standard]] |
[[Image:QVT-Language-Architecture 591x387.jpg|thumb|320px|QVT Architecture as shown in the OMG standard]] |
||
'''QVT''' (Query/View/Transformation) is a standard set of languages for [[model transformation]] defined by the [[Object Management Group]].<ref name="OMGQVT"/> |
'''QVT''' ('''Query/View/Transformation''') is a standard set of languages for [[model transformation]] defined by the [[Object Management Group]].<ref name="OMGQVT"/> |
||
== Overview == |
== Overview == |
||
Line 9: | Line 10: | ||
* QVT-Operational is an imperative language designed for writing unidirectional transformations. |
* QVT-Operational is an imperative language designed for writing unidirectional transformations. |
||
* QVT-Relations is a declarative language designed to permit both unidirectional and bidirectional model transformations to be written. A transformation embodies a consistency relation on sets of models. Consistency can be checked by executing the transformation in checkonly mode; the transformation then returns True if the set of models is consistent according to the transformation and False otherwise. The same transformation can be used in enforce mode to attempt to modify one of the models so that the set of models will be consistent. The QVT-Relations language has both a textual and a graphical concrete syntax. |
* QVT-Relations is a declarative language designed to permit both unidirectional and bidirectional model transformations to be written. A transformation embodies a consistency relation on sets of models. Consistency can be checked by executing the transformation in checkonly mode; the transformation then returns True if the set of models is consistent according to the transformation and False otherwise. The same transformation can be used in enforce mode to attempt to modify one of the models so that the set of models will be consistent. The QVT-Relations language has both a textual and a graphical concrete syntax. |
||
* QVT-Core is a declarative language designed to be simple and to act as the target of translation from QVT-Relations. However, QVT-Core has never had a full implementation and in fact it is not as expressive as QVT-Relations.<ref name="Stevens2011"/> Hence the QVT Architecture pictured above is misleading: the transformation from QVT-Relations to QVT-Core given in the QVT Standard is not semantics-preserving. |
* QVT-Core is a declarative language designed to be simple and to act as the target of translation from QVT-Relations. However, QVT-Core has never had a full implementation and in fact it is not as expressive as QVT-Relations.<ref name="Stevens2011"/> Hence the QVT Architecture pictured above is misleading: the transformation from QVT-Relations to QVT-Core given in the QVT Standard is not semantics-preserving. |
||
Finally |
Finally, QVT-BlackBox is a mechanism to invoke transformation facilities expressed in other languages (for example [[XSLT]] or [[XQuery]]). |
||
Although QVT has a broad scope, it does not cover everything that has been considered as a model transformation, view or query. For example, the QVT languages do not permit transformations to or from textual models, since each model must conform to some MOF 2.0 metamodel. Model-to-text transformations are being standardised separately by OMG (see [[MOFM2T]]). |
Although QVT has a broad scope, it does not cover everything that has been considered as a model transformation, view or query. For example, the QVT languages do not permit transformations to or from textual models, since each model must conform to some MOF 2.0 metamodel. Model-to-text transformations are being standardised separately by OMG (see [[MOFM2T]]). |
||
Line 26: | Line 25: | ||
QVT-Operational: |
QVT-Operational: |
||
*[[Borland Together]] contains an implementation of QVT Operational, which has been contributed<ref>[http://dev.eclipse.org/mhonarc/lists/m2m-dev/msg00003.html [m2m-dev] Borland QVT contribution]</ref> to the [[Eclipse Foundation]] and is now developed as the [[M2M (Eclipse)|Eclipse M2M]] Operational QVT project. |
*[[Borland Together]] contains an implementation of QVT Operational, which has been contributed<ref>[http://dev.eclipse.org/mhonarc/lists/m2m-dev/msg00003.html [m2m-dev] Borland QVT contribution] {{webarchive |url=https://web.archive.org/web/20120225213412/http://dev.eclipse.org/mhonarc/lists/m2m-dev/msg00003.html |date=February 25, 2012 }}</ref> to the [[Eclipse Foundation]] and is now developed as the [[M2M (Eclipse)|Eclipse M2M]] Operational QVT project. |
||
*[[M2M (Eclipse)|Eclipse M2M]] Operational QVT: official Eclipse open source implementation of QVT Operational.<ref name="EclipseM2M"/> |
*[[M2M (Eclipse)|Eclipse M2M]] Operational QVT: official Eclipse open source implementation of QVT Operational.<ref name="EclipseM2M"/> |
||
*[[MagicDraw]] has the QVT plugin which uses Operational QVT implementation that is provided by the [[M2M (Eclipse)|Eclipse M2M]] project. |
*[[MagicDraw]] has the QVT plugin which uses Operational QVT implementation that is provided by the [[M2M (Eclipse)|Eclipse M2M]] project. |
||
*[[SmartQVT]]: an Eclipse open source implementation (Orange Labs) of the QVT-Operational language. |
*[[SmartQVT]]: an Eclipse open source implementation (Orange Labs) of the QVT-Operational language. |
||
Line 40: | Line 36: | ||
*ModelMorf: A proprietary tool from [[Tata Consultancy Services]] Ltd. Fully compliant with QVT-Relations language. The trial version<ref name="ModelMorf"/> provides a command line utility which consumes and produces models in XMI form. A full-fledged, repository integrated version is available as part of their proprietary modeling framework.<ref name="TCSCodeGeneratorFramework"/> |
*ModelMorf: A proprietary tool from [[Tata Consultancy Services]] Ltd. Fully compliant with QVT-Relations language. The trial version<ref name="ModelMorf"/> provides a command line utility which consumes and produces models in XMI form. A full-fledged, repository integrated version is available as part of their proprietary modeling framework.<ref name="TCSCodeGeneratorFramework"/> |
||
*MediniQVT:<ref name="Medini"/> EMF based transformation engine with EPL license for engine and non-commercial license editor/debugger. Uses QVT-Relations syntax, but deliberately departs from the semantics of the OMG standard.<ref name="MediniSlides"/> |
*MediniQVT:<ref name="Medini"/> EMF based transformation engine with EPL license for engine and non-commercial license editor/debugger. Uses QVT-Relations syntax, but deliberately departs from the semantics of the OMG standard.<ref name="MediniSlides"/> |
||
*The [[M2M (Eclipse)|Eclipse M2M]] project aims to produce an implementation of QVT Core and Relations.<ref name="EclipseM2M"/> |
*The [[M2M (Eclipse)|Eclipse M2M]] project aims to produce an implementation of QVT Core and Relations.<ref name="EclipseM2M"/> |
||
⚫ | |||
⚫ | |||
QVT-Like: |
QVT-Like: |
||
*jQVT:<ref name="jQVT"/> A compiled QVT engine for Java, using Xbase in place of OCL. A QVT-relational transformation is first compiled into Java source code, which then directly produces the target model from source ones at run-time, without interpreting the transformation rule again. It supports EMF models, as well as plain Java objects. |
*jQVT:<ref name="jQVT"/> A compiled QVT engine for Java, using Xbase in place of OCL. A QVT-relational transformation is first compiled into Java source code, which then directly produces the target model from source ones at run-time, without interpreting the transformation rule again. It supports EMF models, as well as plain Java objects. |
||
*[[Tefkat]] : an open source implementation of Tefkat language which is also similar to QVT. Open source. |
*[[Tefkat]] : an open source implementation of Tefkat language which is also similar to QVT. Open source. |
||
*[[ATLAS Transformation Language|ATL]] : a component in the [[M2M (Eclipse)|M2M]] Eclipse project. ATL is a QVT-like transformation language and engine with a large user community and an open source library of transformations. |
*[[ATLAS Transformation Language|ATL]] : a component in the [[M2M (Eclipse)|M2M]] Eclipse project. ATL is a QVT-like transformation language and engine with a large user community and an open source library of transformations. |
||
*Model Transformation Framework (MTF):<ref name="IBMMTF"/> an [[IBM]] [[alphaWorks]] project, last updated in 2007. |
*Model Transformation Framework (MTF):<ref name="IBMMTF"/> an [[IBM]] [[alphaWorks]] project, last updated in 2007. |
||
Line 89: | Line 79: | ||
| first14=Xavier | last14=Blanc |
| first14=Xavier | last14=Blanc |
||
| first15=Radek | last15=Dvorak |
| first15=Radek | last15=Dvorak |
||
| |
| first16=Ed | last16=Willink |
||
| title = Meta Object Facility (MOF) 2.0 Query/View/Transformation (QVT) |
| title = Meta Object Facility (MOF) 2.0 Query/View/Transformation (QVT) |
||
| url=http://www.omg.org/spec/QVT/1.1 |
| url=http://www.omg.org/spec/QVT/1.1|date=January 2011 |
||
| |
| access-date = 9 May 2011|format=pdf }} |
||
</ref> |
</ref> |
||
Line 113: | Line 103: | ||
| first14=Xavier | last14=Blanc |
| first14=Xavier | last14=Blanc |
||
| first15=Radek | last15=Dvorak |
| first15=Radek | last15=Dvorak |
||
| |
| first16=Ed | last16=Willink |
||
| title = Meta Object Facility (MOF) 2.0 Query/View/Transformation (QVT) |
| title = Meta Object Facility (MOF) 2.0 Query/View/Transformation (QVT) |
||
| url=http://www.omg.org/spec/QVT/1.0 |
| url=http://www.omg.org/spec/QVT/1.0 |
||
| |
| access-date = 1 Nov 2013|format=pdf }} |
||
</ref> |
</ref> |
||
Line 123: | Line 113: | ||
| doi=10.1007/s10270-011-0198-8 |
| doi=10.1007/s10270-011-0198-8 |
||
| last=Stevens |
| last=Stevens |
||
| first=Perdita |
| first=Perdita |author-link=Perdita Stevens |
||
| title=A simple game-theoretic approach to checkonly QVT Relations |
| title=A simple game-theoretic approach to checkonly QVT Relations |
||
| publisher=[[Springer Science+Business Media|Springer]] |
| publisher=[[Springer Science+Business Media|Springer]] |
||
Line 129: | Line 119: | ||
| year=2011 |
| year=2011 |
||
| journal=Software and Systems Modeling| volume=12 |
| journal=Software and Systems Modeling| volume=12 |
||
| pages= |
| pages=175–199 |
||
| hdl=20.500.11820/58a19b4d-3782-4081-ad75-175c4626a62e |
|||
| hdl-access=free |
|||
}} |
}} |
||
</ref> |
</ref> |
||
<ref name="EclipseM2M"> |
<ref name="EclipseM2M"> |
||
Eclipse M2M Project. |
Eclipse M2M Project. {{cite web |
||
|url = http://www.eclipse.org/m2m/ |
|||
|title = Model to Model (M2M) |
|||
|access-date = 2011-05-09 |
|||
|url-status = live |
|||
|archive-url = https://web.archive.org/web/20121203221732/http://www.eclipse.org/m2m/ |
|||
|archive-date = 2012-12-03 |
|||
}} . Retrieved 9 May 2011. |
|||
</ref> |
</ref> |
||
<ref name="ModelMorf"> |
<ref name="ModelMorf"> |
||
ModelMorf beta. http://www.tcs-trddc.com/trddc_website/ModelMorf/ModelMorf.htm |
ModelMorf beta. {{cite web |
||
|url=http://www.tcs-trddc.com/trddc_website/ModelMorf/ModelMorf.htm |
|||
|title=ModelMorf Registration Form |
|||
|access-date=May 9, 2011 |
|||
|url-status=dead |
|||
|archive-url=https://web.archive.org/web/20120323171429/http://www.tcs-trddc.com/trddc_website/ModelMorf/ModelMorf.htm |
|||
|archive-date=March 23, 2012 |
|||
}} . Retrieved 9 May 2011. |
|||
</ref> |
</ref> |
||
<ref name="TCSCodeGeneratorFramework"> |
<ref name="TCSCodeGeneratorFramework"> |
||
TCS Code Generator Framework (previously known as MasterCraft). http://www.tcs.com/offerings/technology-products/code-generator-framework/Pages/default.aspx |
TCS Code Generator Framework (previously known as MasterCraft). {{cite web |
||
|url=http://www.tcs.com/offerings/technology-products/code-generator-framework/Pages/default.aspx |
|||
|title=TCS Code Generator Framework: TCS Technology Products: Offerings: TCS |
|||
|access-date=May 9, 2011 |
|||
|url-status=dead |
|||
|archive-url=https://web.archive.org/web/20110809040534/http://www.tcs.com/offerings/technology-products/code-generator-framework/Pages/default.aspx |
|||
|archive-date=August 9, 2011 |
|||
}} . Retrieved 9 May 2011. |
|||
</ref> |
</ref> |
||
<ref name="Medini"> |
<ref name="Medini"> |
||
Medini QVT. {{cite web |
|||
|url=http://projects.ikv.de/qvt/wiki |
|||
|title=Medini QVT |
|||
|access-date=2009-08-13 |
|||
|url-status=live |
|||
|archive-url=https://web.archive.org/web/20160729174054/http://projects.ikv.de/qvt/wiki |
|||
|archive-date=2016-07-29 |
|||
}} . Retrieved 9 May 2011. |
|||
</ref> |
</ref> |
||
<ref name="Echo"> |
<ref name="Echo"> |
||
Echo. http://haslab.github.io/echo |
Echo. [http://haslab.github.io/echo/] Retrieved 2 Nov 2013. |
||
</ref> |
</ref> |
||
Line 164: | Line 184: | ||
<ref name="jQVT"> |
<ref name="jQVT"> |
||
jQVT. https://sourceforge.net/projects/jqvt/ |
jQVT. {{cite web |
||
|url=https://sourceforge.net/projects/jqvt/ |
|||
|title=JQVT download | SourceForge.net |
|||
|access-date=2012-11-10 |
|||
|url-status=live |
|||
|archive-url=https://web.archive.org/web/20160307214956/https://sourceforge.net/projects/jqvt/ |
|||
|archive-date=2016-03-07 |
|||
}} |
|||
</ref> |
</ref> |
||
Latest revision as of 01:17, 6 January 2024
![](http://upload.wikimedia.org/wikipedia/commons/thumb/8/82/QVT-Language-Architecture_591x387.jpg/320px-QVT-Language-Architecture_591x387.jpg)
QVT (Query/View/Transformation) is a standard set of languages for model transformation defined by the Object Management Group.[1]
Overview
[edit]Model transformation is a key technique used in model-driven architecture. As the name QVT indicates, the OMG standard covers transformations, views and queries together. Model queries and model views can be seen as special kinds of model transformation, provided that we use a suitably broad definition of model transformation: a model transformation is a program which operates on models.
The QVT standard defines three model transformation languages. All of them operate on models which conform to Meta-Object Facility (MOF) 2.0 metamodels; the transformation states which metamodels are used. A transformation in any of the three QVT languages can itself be regarded as a model, conforming to one of the metamodels specified in the standard. The QVT standard integrates the OCL 2.0 standard and also extends it with imperative features.
- QVT-Operational is an imperative language designed for writing unidirectional transformations.
- QVT-Relations is a declarative language designed to permit both unidirectional and bidirectional model transformations to be written. A transformation embodies a consistency relation on sets of models. Consistency can be checked by executing the transformation in checkonly mode; the transformation then returns True if the set of models is consistent according to the transformation and False otherwise. The same transformation can be used in enforce mode to attempt to modify one of the models so that the set of models will be consistent. The QVT-Relations language has both a textual and a graphical concrete syntax.
- QVT-Core is a declarative language designed to be simple and to act as the target of translation from QVT-Relations. However, QVT-Core has never had a full implementation and in fact it is not as expressive as QVT-Relations.[2] Hence the QVT Architecture pictured above is misleading: the transformation from QVT-Relations to QVT-Core given in the QVT Standard is not semantics-preserving.
Finally, QVT-BlackBox is a mechanism to invoke transformation facilities expressed in other languages (for example XSLT or XQuery).
Although QVT has a broad scope, it does not cover everything that has been considered as a model transformation, view or query. For example, the QVT languages do not permit transformations to or from textual models, since each model must conform to some MOF 2.0 metamodel. Model-to-text transformations are being standardised separately by OMG (see MOFM2T).
History
[edit]In 2002, OMG issued a Request for proposal (RFP) on MOF Query/View/Transformation to seek a standard compatible with the Model Driven Architecture (MDA) recommendation suite (UML, MOF, OCL, etc.).
Several replies were given by a number of companies and research institutions that evolved during three years to produce a common proposal, based on a draft by UK research Dr Laurence Tratt. The first version was submitted and approved in 2005.[3] QVT Version 1.1 was released in January 2011.[1]
Implementations
[edit]QVT-Operational:
- Borland Together contains an implementation of QVT Operational, which has been contributed[4] to the Eclipse Foundation and is now developed as the Eclipse M2M Operational QVT project.
- Eclipse M2M Operational QVT: official Eclipse open source implementation of QVT Operational.[5]
- MagicDraw has the QVT plugin which uses Operational QVT implementation that is provided by the Eclipse M2M project.
- SmartQVT: an Eclipse open source implementation (Orange Labs) of the QVT-Operational language.
QVT-Core:
- OptimalJ: Early access implementation of the QVT-Core language was in OptimalJ version 3.4 from Compuware. However, OptimalJ has been discontinued.
QVT-Relations:
- ModelMorf: A proprietary tool from Tata Consultancy Services Ltd. Fully compliant with QVT-Relations language. The trial version[6] provides a command line utility which consumes and produces models in XMI form. A full-fledged, repository integrated version is available as part of their proprietary modeling framework.[7]
- MediniQVT:[8] EMF based transformation engine with EPL license for engine and non-commercial license editor/debugger. Uses QVT-Relations syntax, but deliberately departs from the semantics of the OMG standard.[9]
- The Eclipse M2M project aims to produce an implementation of QVT Core and Relations.[5]
- Echo,[10] an open-source EMF-based tool for model repair and transformation built over the Alloy model finder, which provides an implementation of QVT-Relations syntax, but using semantics that deliberately depart from the OMG specification.
QVT-Like:
- jQVT:[11] A compiled QVT engine for Java, using Xbase in place of OCL. A QVT-relational transformation is first compiled into Java source code, which then directly produces the target model from source ones at run-time, without interpreting the transformation rule again. It supports EMF models, as well as plain Java objects.
- Tefkat : an open source implementation of Tefkat language which is also similar to QVT. Open source.
- ATL : a component in the M2M Eclipse project. ATL is a QVT-like transformation language and engine with a large user community and an open source library of transformations.
- Model Transformation Framework (MTF):[12] an IBM alphaWorks project, last updated in 2007.
See also
[edit]- List of available transformation languages
- MOF Model to Text Transformation Language - OMG's transformation language specification for expressing M2T transformations
- Model-driven engineering (MDE)
- Model Driven Architecture (MDA): OMG's vision of MDE
- Domain-specific language (DSL)
- Meta-Object Facility (MOF): a language to write metamodels
- Object Constraint Language (OCL): a model constraint (and query) language
- Model transformation
- Model transformation language
- Metamodel
References
[edit]- ^ a b Bast, Wim; Murphree, Michael; Lawley, Michael; Duddy, Keith; Belaunde, Mariano; Griffin, Catherine; Sendall, Shane; Vojtisek, Didier; Steel, Jim; Helsen, Simon; Tratt, Laurence; Reddy, Sreedhar; Venkatesh, R.; Blanc, Xavier; Dvorak, Radek; Willink, Ed (January 2011). "Meta Object Facility (MOF) 2.0 Query/View/Transformation (QVT)" (pdf). Object Management Group. Retrieved 9 May 2011.
- ^ Stevens, Perdita (2011). "A simple game-theoretic approach to checkonly QVT Relations". Software and Systems Modeling. 12. Berlin / Heidelberg: Springer: 175–199. doi:10.1007/s10270-011-0198-8. hdl:20.500.11820/58a19b4d-3782-4081-ad75-175c4626a62e.
- ^ Bast, Wim; Murphree, Michael; Lawley, Michael; Duddy, Keith; Belaunde, Mariano; Griffin, Catherine; Sendall, Shane; Vojtisek, Didier; Steel, Jim; Helsen, Simon; Tratt, Laurence; Reddy, Sreedhar; Venkatesh, R.; Blanc, Xavier; Dvorak, Radek; Willink, Ed. "Meta Object Facility (MOF) 2.0 Query/View/Transformation (QVT)" (pdf). Object Management Group. Retrieved 1 Nov 2013.
- ^ [m2m-dev] Borland QVT contribution Archived February 25, 2012, at the Wayback Machine
- ^ a b Eclipse M2M Project. "Model to Model (M2M)". Archived from the original on 2012-12-03. Retrieved 2011-05-09. . Retrieved 9 May 2011.
- ^ ModelMorf beta. "ModelMorf Registration Form". Archived from the original on March 23, 2012. Retrieved May 9, 2011. . Retrieved 9 May 2011.
- ^ TCS Code Generator Framework (previously known as MasterCraft). "TCS Code Generator Framework: TCS Technology Products: Offerings: TCS". Archived from the original on August 9, 2011. Retrieved May 9, 2011. . Retrieved 9 May 2011.
- ^ Medini QVT. "Medini QVT". Archived from the original on 2016-07-29. Retrieved 2009-08-13. . Retrieved 9 May 2011.
- ^ Kiegeland, J.; Eichler, H. (February 2008), "medini QVT workshop", medini QVT workshop (ppt), Enschede, Telematica Instituut: ikv++ technologies ag, retrieved 2015-09-24
- ^ Echo. [1] Retrieved 2 Nov 2013.
- ^ jQVT. "JQVT download | SourceForge.net". Archived from the original on 2016-03-07. Retrieved 2012-11-10.
- ^ Model Transformation Framework. http://www.alphaworks.ibm.com/tech/mtf . Retrieved 9 May 2011.