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