Constraints:

Signature: CMOF_14_3_7a() : Boolean;Description: 14.3 [7] CMOF does not support visibilities. All property visibilities must be explicitly set to
public where applicable, that is for all NamedElements, ElementImports and PackageImports.
Furthermore, no alias is allowed for any ElementImport.
see also: https://sites.google.com/site/metamodelingantipatterns/catalog/mof/named-element-is-not-publicExpression: visibility = VisibilityKind::public

Operations:

Signature: separator() : String;Description: The query separator() gives the string that is used to separate names when
constructing a qualifiedName.Expression: result = ('::')

Signature: qualifiedName.1() : String;Description: When a NamedElement has a name, and all of its containing Namespaces have
a name, the qualifiedName is constructed from the name of the NamedElement
and the names of the containing Namespaces.Expression: result = (if self.name <> null and self.allNamespaces()->select( ns | ns.name=null )->isEmpty() then self.allNamespaces()->iterate( ns : Namespace; agg: String = self.name | ns.name.concat(self.separator()).concat(agg)) else null endif)

Signature: isDistinguishableFrom(n : NamedElement; ns : Namespace; ) : Boolean;Description: The query isDistinguishableFrom() determines whether two NamedElements
may logically co-exist within a Namespace. By default, two named elements
are distinguishable if (a) they have types neither of which is a kind of
the other or (b) they have different names.Expression: result = ((self.oclIsKindOf(n.oclType()) or n.oclIsKindOf(self.oclType())) implies ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->isEmpty() )

Signature: allOwningPackages() : Package;Description: The query allOwningPackages() returns the set of all the enclosing Namespaces
of this NamedElement, working outwards, that are Packages, up to but not
including the first such Namespace that is not a Package.Expression: result = (if namespace.oclIsKindOf(Package) then let owningPackage : Package = namespace.oclAsType(Package) in owningPackage->union(owningPackage.allOwningPackages()) else null endif)

Signature: allNamespaces() : Namespace;Description: The query allNamespaces() gives the sequence of Namespaces in which the
NamedElement is nested, working outwards.Expression: result = (if owner.oclIsKindOf(TemplateParameter) and owner.oclAsType(TemplateParameter).signature.template.oclIsKindOf(Namespace) then let enclosingNamespace : Namespace = owner.oclAsType(TemplateParameter).signature.template.oclAsType(Namespace) in enclosingNamespace.allNamespaces()->prepend(enclosingNamespace) else if namespace->isEmpty() then OrderedSet{} else namespace.allNamespaces()->prepend(namespace) endif endif)