Questions and discussion: mof-rtf@omg.org; Raising issues: http://www.omg.org/library/issuerpt.html The OMG specification on which this is based: http://www.omg.org/cgi-bin/doc?ptc/2001-10-04 The official/latest version of this file: omg.org/models/MOF1.4/XMI1.1/Model1.4/Model.xml ModelXMIProducer (switches -E) Hand-edited to insert this documentation, fix the DOCTYPE and xmlns, and insert cross-links to PrimitiveTypes.xml ...and again hand-edited to undo that manual cross-linking, thank you! Exporter generated using dMOF 1.1 'mof_1_3_transition' (switches -g 1dot4) The MOF provides a set of modeling elements, including rules for their use, with which to construct models. Formally, the MOF is defined in itself: in essence the MOF Model is its own metamodel. This file contains the MOF Model package expressed as a MOF metamodel. This file is non-normative. Definition of the Model package for MOF version 1.4, generated according to XMI version 1.1. The developers have granted to the OMG a nonexclusive, royalty-free, paid-up, worldwide license to copy and distribute this document and to modify this document and distribute copies of the modified version. For list of developers and full notice see OMG document ptc/2001-10-04 Object Management Group, Inc. javax.jmi org.omg.mof 1.4 javax.jmi Model 1.4 context ModelElement inv: not self.oclIsTypeOf(Package) implies self.container -> size = 1 FrozenAttributesCannotBeChanged context ModelElement inv: self.isFrozen() implies let myTypes = self.oclType() -> allSupertypes() -> includes(self.oclType()) in let myAttrs : Set(Attribute) = self.RefBaseObject::refMetaObject() -> asOclType(Class) -> findElementsByTypeExtended(Attribute) in myAttrs -> forAll(a | self.RefObject::refValue@pre(a) = self.RefObject::refValue(a)) context ModelElement post: (self.isFrozen@pre() and self.container@pre -> notEmpty and self.container.isFrozen@pre()) implies (self.container.Object::non_existent() or not self.Object::non_existent()) FrozenDependenciesCannotBeChanged context ModelElement post: self.isFrozen() implies let myClasses = self.oclType() -> allSupertypes() -> includes(self.oclType()) in let myRefs = Set(Reference) = self.RefBaseObject::refMetaObject() -> asOclType(Class) -> findElementsByTypeExtended(Reference) in let myDepRefs = myRefs -> select(r | Set{" " " includes(r.name)) in myDepRefs -> forAll(r | self.RefObject::refValue@pre(r) = self.RefObject::refValue(r)) 1 1 false false 1.4 1 -1 true false 1.4 1 1 false false 1.4 0 -1 false true 0 -1 false true 1 -1 false true 1 1 false false 1.4 1 1 false false 1 1 false false 1 1 false false 1.4 0 1 false false 0 -1 false true 1 1 false false 1 1 false false 1 1 false false public_vis protected_vis private_vis 1.4 context Namespace inv: self.contents.forAll(e1, e2 | e1.name = e2.name implies r1 = r2) 1 1 false false 1.4 1 1 false false 0 -1 true false 1.4 0 -1 true true 1 1 false false 1 1 false false 1.4 1 1 false false 1 -1 true false 1.4 0 -1 true true 1 1 false false 1 1 false false 1 1 false false 1 1 false false 1.4 1.4 context GeneralizableElement inv: self.allSupertypes() -> forAll(s | s <> self) context GeneralizableElement inv: self.supertypes -> forAll(s | s.oclType() = self.oclType()) ContentsMustNotCollideWithSupertypes context GeneralizableElement inv: let superContents = self.allSupertypes() -> collect(s | s.contents) in self.contents -> forAll(m1 | superContents -> forAll(m2 | m1.name = m2.name implies m1 = m2)) context GeneralizableElement inv: let superNamespaces = self.supertypes -> collect(s | s.extendedNamespace) in superNamespaces -> asSet -> isUnique(s | s.name) context GeneralizableElement inv: self.isRoot implies self.supertypes -> isEmpty context GeneralizableElement inv: self.supertypes -> forAll(s | self.isVisible(s)) context GeneralizableElement inv: self.supertypes -> forAll(s | not s.isLeaf) 1 1 false false 1 1 false false 1 1 false false 1 1 false false 0 -1 true true 0 -1 true true 1 1 false false 1 1 false false 0 -1 true true 1 1 false false 1 1 false false 1.4 context TypedElement inv: not self.type.oclIsKindOf(Association) context TypedElement inv: self.isVisible(self.type) 1 1 false false 1.4 1.4 MofClass context Class inv: Set{Class, DataType, Attribute, Reference, Operation, Exception, Constant, Constraint, Tag} -> includesAll(self.contentTypes()) AbstractClassesCannotBeSingleton context Class inv: self.isAbstract implies not self.isSingleton 1 1 false false LowerCannotBeNegativeOrUnbounded context MultiplicityType inv: self.lower >= 0 and self.lower <> Unbounded context MultiplicityType inv: self.lower <= self.upper or self.upper = Unbounded context MultiplicityType inv: self.upper >= 1 or self.upper = Unbounded context MultiplicityType inv: self.upper = 1 implies (not self.isOrdered and not self.isUnique) 1.4 context DataType inv: if self.oclIsOfType(StructureType) then Set{TypeAlias, Constraint, Tag, StructureField} -> includesAll(self.contentTypes()) else Set{TypeAlias, Constraint, Tag} -> includesAll(self.contentTypes()) context DataType inv: self.supertypes -> isEmpty context DataType inv: not self.isAbstract 1.4 1.4 1 -1 true true 1.4 1 1 false false 1.4 context StructureType inv: self.contents -> exists(c | c.oclIsOfType(StructureField)) 1.4 context StructureField inv: Set{Constraint, Tag}) -> includesAll(self.contentTypes) 1.4 instance_level classifier_level 1.4 1 1 false false 1 1 false false 1.4 1 1 false false 1 1 false false 1.4 org.omg.mof.idl_substitute_name MofAttribute 1 1 false false 1.4 ReferenceMultiplicityMustMatchEnd context Reference inv: self.multiplicity = self.referencedEnd.multiplicity context Reference inv: self.scope = #instance_level ChangeableReferenceMustHaveChangeableEnd context Reference inv: self.isChangeable = self.referencedEnd.isChangeable context Reference inv: self.type = self.referencedEnd.type context Reference inv: self.referencedEnd.isNavigable context Reference inv: self.container.allSupertypes() -> including(self) -> includes(self.referencedEnd.otherEnd.type) context Reference inv: self.isVisible(self.referencedEnd) 1 1 false false 1 1 false false 1.4 1.4 context Operation inv: Set{Parameter, Constraint, Tag} -> includesAll(self.contentTypes()) context Operation inv: self.contents -> select(c | c.oclIsTypeOf(Parameter)) -> select(p : Parameter | p.direction = #return_dir) -> size < 2 OperationExceptionsMustBeVisible context Operation inv: self.exceptions -> forAll(e | self.isVisible(e)) 1 1 false false 0 -1 true true 1.4 org.omg.mof.idl_substitute_name MofException MofException context Exception inv: Set{Parameter, Tag}) -> includesAll(self.contentTypes()) ExceptionsHaveOnlyOutParameters context Exception inv: self.contents -> select(c | c.oclIsTypeOf(Parameter)) -> forAll(p : Parameter | p.direction = #out_dir) 1.4 context Association inv: Set{AssociationEnd, Constraint, Tag} -> includesAll(self.contentTypes()) context Association inv: self.supertypes -> isEmpty context Association inv: self.isRoot and self.isLeaf context Association inv: not self.isAbstract context Association inv: self.visibility = #public_vis context Association inv: self.contents -> select(c | c.oclIsTypeOf(AssociationEnd)) -> size = 2 1 1 false false none shared composite 1.4 context AssociationEnd inv: self.type.oclIsTypeOf(Class) context AssociationEnd inv: (self.multiplicity.upper > 1 or self.multiplicity.upper = UNBOUNDED) implies self.multiplicity.isUnique context AssociationEnd inv: self.multiplicity.isOrdered implies not self.otherEnd.multiplicity.isOrdered context AssociationEnd inv: self.aggregation <> #none implies self.otherEnd = #none 1 1 false false 1 1 false false 1 1 false false 1 1 false false 1 1 false false 1.4 MofPackage context Package inv: Set{Package, Class, DataType, Association, Exception, Constant, Constraint, Import, Tag}) -> includesAll(self.contentTypes) context Package inv: not self.isAbstract 1.4 context Import inv: self.container.isVisible(self.importedNamespace) CanOnlyImportPackagesAndClasses context Import inv: self.imported.oclIsTypeOf(Class) or self.imported.oclIsTypeOf(Package) context Import inv: self.container <> self.imported context Import inv: not self.container.allContents() -> includes(self.imported) context Import inv: self.container -> notEmpty implies self.container -> asSequence -> first -> container -> isEmpty 1 1 false false 1 1 false false 1 1 false false in_dir out_dir inout_dir return_dir 1.4 1 1 false false 1 1 false false 1.4 context Constraint inv: self.constrainedElements -> forAll(c | not Set{Constraint, Tag, Imports, Constant} -> includes(c.oclType()) context Constraint inv: self.constrainedElements -> forAll(c | self.container.extendedNamespace() -> includes(c)) 1 1 false false 1.4 1 1 false false 1.4 immediate deferred 1 1 false false 1 -1 false true 1.4 context Constant inv: ... context Constant inv: self.type.oclIsOfType(PrimitiveType) 1 1 false false 1.4 1.4 1 1 false false 1.4 0 -1 true false 1.4 1 -1 false true 1.4 1 -1 false true 0 -1 true true 1.4 0 -1 false true 0 -1 false true 1.4 0 1 false false 0 -1 true true 1.4 0 -1 true true 0 -1 false true 1.4 0 -1 false true 1 1 false false 1.4 0 -1 false true 1 -1 false true 1.4 0 -1 false true 0 -1 true true 1.4 0 -1 false true 1 1 false false 1.4 0 -1 false true 1 1 false false 1.4 1 1 false false 0 -1 false true