Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Meta-Object Facility
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Standard of Object Management Group}} [[Image:M0-m3.png|thumb|320px|Illustration of the Meta-Object Facility.]] The '''Meta-Object Facility''' ('''MOF''') is an [[Object Management Group]] (OMG) standard for [[model-driven engineering]]. Its purpose is to provide a [[type system]] for entities in the [[CORBA]] architecture and a set of interfaces through which those types can be created and manipulated. MOF may be used for [[Domain-driven design|domain-driven software design]] and [[Object-oriented modeling|object-oriented modelling]].{{r|mof241|page=15}} == Overview == MOF was developed to provide a [[type system]] for use in the [[CORBA]] architecture, a set of schemas by which the structure, meaning and behaviour of objects could be defined, and a set of CORBA interfaces through which these schemas could be created, stored and manipulated.<ref>{{cite web|title=Common Facilities RFP-5: Meta-Object Facility|url=http://www.omg.org/cgi-bin/doc?cf/96-05-02.pdf|publisher=Object Management Group|access-date=14 January 2014|date=2 May 1996}}</ref> MOF is designed as a four-layered architecture. It provides a meta-meta model at the top layer, called the M3 layer. This M3-model is the language used by MOF to build metamodels, called M2-models. The most prominent example of a Layer 2 MOF model is the UML metamodel, the model that describes the UML itself. These M2-models describe elements of the M1-layer, and thus M1-models. These would be, for example, models written in UML. The last layer is the M0-layer or data layer. It is used to describe real-world objects. Beyond the M3-model, MOF describes the means to create and manipulate models and metamodels by defining [[CORBA]] interfaces that describe those operations. Because of the similarities between the MOF M3-model and UML structure models, MOF metamodels are usually modeled as UML class diagrams. === File formats === A conversion from MOF specification models (M3-, M2-, or M1-Layer) to W3C XML and XSD are specified by the [[XML Metadata Interchange|XMI]] (ISO/IEC 19503) specification. XMI is an XML-based exchange format for models.{{r|mof241|page=xi}} From MOF to Javaβ’ there is the Java Metadata Interchange (JMI) specification by [[Java Community Process]].{{r|mof241|page=xi}} It also provides specs to make easier automatic CORBA IDL interfaces generation.{{r|mof241|page=3}} == Metamodeling architecture == MOF is a ''closed'' metamodeling architecture; it defines an M3-model, which conforms to itself. MOF allows a ''strict'' meta-modeling architecture; every model element on every layer is strictly in correspondence with a model element of the layer above. MOF only provides a means to define the structure, or [[abstract syntax]] of a language or of data. For defining metamodels, MOF plays exactly the role that [[EBNF]] plays for defining programming language grammars. MOF is a [[Domain Specific Language]] (DSL) used to define metamodels, just as EBNF is a DSL for defining grammars. Similarly to EBNF, MOF could be defined in MOF. In short, MOF uses the notion of '''MOF::Classes''' (not to be confused with '''UML::Classes'''), as known from [[Object-oriented programming|object orientation]], to define concepts (model elements) on a metalayer. MOF may be used to define object-oriented metamodels (as [[Unified Modeling Language|UML]] for example) as well as non object-oriented metamodels (e.g. a [[Petri net]] or a [[Web Service]] metamodel). As of May 2006, the [[Object Management Group|OMG]] has defined two compliance points for MOF: *EMOF for Essential MOF<ref name=mof241>{{cite web|title=OMG Meta-Object Facility (MOF) Core Specification, Version 2.4.1|url=http://www.omg.org/spec/MOF/2.4.1/PDF|publisher=[[Object Management Group]]|access-date=17 February 2014|page=1}}</ref> *CMOF for Complete MOF<ref name=mof241/> In June 2006, a ''request for proposal'' was issued by OMG for a third variant, SMOF (Semantic MOF). The variant '''ECore''' that has been defined in the '''[[Eclipse Modeling Framework]]''' is more or less aligned on OMG's EMOF. Another related standard is [[Object Constraint Language|OCL]], which describes a formal language that can be used to define model constraints in terms of [[predicate logic]]. [[QVT]], which introduces means to query, view and transform MOF-based models, is a very important standard, approved in 2008. See [[Model Transformation Language]] for further information. == International standard == MOF is an international standard: ;MOF 2.4.2 :[[International Organization for Standardization|ISO]]/[[International Electrotechnical Commission|IEC]] 19508:2014 Information technology β Object Management Group Meta Object Facility (MOF) Core ;MOF 1.4 :[[International Organization for Standardization|ISO]]/[[International Electrotechnical Commission|IEC]] 19502:2005 Information technology β Meta Object Facility (MOF) MOF can be viewed as a standard to write [[Metamodeling|metamodels]], for example in order to model the abstract syntax of [[Domain Specific Language]]s. [[Kermeta]] is an extension to MOF allowing executable actions to be attached to EMOF meta-models, hence making it possible to also model a DSL operational semantics and readily obtain an interpreter for it. [[Java Metadata Interface|JMI]] defines a Java API for manipulating MOF models. OMG's MOF is not to be confused with the Managed Object Format (MOF) defined by the [[Distributed Management Task Force]] (DMTF) in section 6 of the Common Information Model (CIM) Infrastructure Specification, version 2.5.0.<ref>[http://www.dmtf.org/standards/published_documents/DSP0004_2.5.0.pdf Common Interface Model (CIM) Interface Structure, version 2.5.0]</ref> == See also == {{div col|colwidth=22em}} * [[Common Warehouse Metamodel]] * [[Domain-specific language]] * [[Kermeta]] * [[KM3]] * [[Metamodeling]] * [[Metadata]] * [[Model-driven architecture]] * [[OGML]] * [[Platform-specific model]] * [[QVT]] * [[SPEM]] * [[XML Metadata Interchange]] {{div col end}} ==References== {{reflist}} {{Refimprove|date=February 2009}} == Further reading == *Official MOF specification from OMG *Ralph Sobek, MOF Specifications Documents *Johannes Ernst, ''What is metamodeling?'' *Woody Pidcock, ''What are the differences between a vocabulary, a taxonomy, a thesaurus, an ontology, and a meta-model?'' *Anna Gerber and Kerry Raymond, MOF to EMF and Back Again. *Weaving Executability into Object-Oriented Meta-Languages *MOF Support for Semantic Structures RFP Request For Proposal on SMOF == External links == {{Commonscat|Meta-Object Facility}} * [http://www.omg.org/mof/ OMG's MetaObject Facility] {{ISO standards}} [[Category:Specification languages]] [[Category:Data modeling]] [[Category:Unified Modeling Language]] [[Category:ISO standards]]
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Cite web
(
edit
)
Template:Commonscat
(
edit
)
Template:Div col
(
edit
)
Template:Div col end
(
edit
)
Template:ISO standards
(
edit
)
Template:R
(
edit
)
Template:Refimprove
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Search
Search
Editing
Meta-Object Facility
Add topic