Class UML 2.5::Property
Description:
A Property is a StructuralFeature. A Property related by ownedAttribute
to a Classifier (other than an association) represents an attribute and
might also represent an association end. It relates an instance of the
Classifier to a value or set of values of the type of the attribute. A
Property related by memberEnd to an Association represents an end of the
Association. The type of the Property is the type of the end of the Association.
A Property has the capability of being a DeploymentTarget in a Deployment
relationship. This enables modeling the deployment to hierarchical nodes
that have Properties functioning as internal parts. Property specializes
ParameterableElement to specify that a Property can be exposed as a formal
template parameter, and provided as an actual parameter in a binding of
a template.
Direct Superclasses: ConnectableElement,
DeploymentTarget,
StructuralFeatureDirect Subclasses: Port,
ExtensionEndClass Precedence List: Property,
ConnectableElement,
DeploymentTarget,
StructuralFeature,
MultiplicityElement,
TypedElement,
Feature,
RedefinableElement,
NamedElement,
ParameterableElement,
ElementProperties:
![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
aggregation :
AggregationKind (1 1); -- source
Property![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
association :
Association (0 1); -- source
Property![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
associationEnd :
Property (0 1); -- source
Property![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
class :
Class (0 1); -- source
Property![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
datatype :
DataType (0 1); -- source
Property![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
defaultValue :
ValueSpecification (0 1); -- source
Property![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
interface :
Interface (0 1); -- source
Property![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
isComposite : Boolean (1 1); -- source
Property![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
isDerived : Boolean (1 1); -- source
Property![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
isDerivedUnion : Boolean (1 1); -- source
Property![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
isID : Boolean (1 1); -- source
Property![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
opposite :
Property (0 1); -- source
Property![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
owningAssociation :
Association (0 1); -- source
Property![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
qualifier :
Property (0 *); -- source
Property![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
redefinedProperty :
Property (0 *); -- source
Property![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
subsettedProperty :
Property (0 *); -- source
Property![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
end :
ConnectorEnd (0 *); -- source
ConnectableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
templateParameter :
ConnectableElementTemplateParameter (0 1); -- source
ConnectableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
deployedElement :
PackageableElement (0 *); -- source
DeploymentTarget![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
deployment :
Deployment (0 *); -- source
DeploymentTarget![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
isReadOnly : Boolean (1 1); -- source
StructuralFeature![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
isOrdered : Boolean (1 1); -- source
MultiplicityElement![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
isUnique : Boolean (1 1); -- source
MultiplicityElement![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
lower : Integer (1 1); -- source
MultiplicityElement![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
lowerValue :
ValueSpecification (0 1); -- source
MultiplicityElement![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
upper : UnlimitedNatural (1 1); -- source
MultiplicityElement![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
upperValue :
ValueSpecification (0 1); -- source
MultiplicityElement![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
type :
Type (0 1); -- source
TypedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
featuringClassifier :
Classifier (0 1); -- source
Feature![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
isStatic : Boolean (1 1); -- source
Feature![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
isLeaf : Boolean (1 1); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
redefinedElement :
RedefinableElement (0 *); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
redefinitionContext :
Classifier (0 *); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
clientDependency :
Dependency (0 *); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
name : String (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
nameExpression :
StringExpression (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
namespace :
Namespace (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
qualifiedName : String (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
visibility :
VisibilityKind (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
owningTemplateParameter :
TemplateParameter (0 1); -- source
ParameterableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
ownedComment :
Comment (0 *); -- source
Element![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
ownedElement :
Element (0 *); -- source
Element![](/se-interop/image/down-arrow.png?hunchentoot-session=16725%3A61881368D591D693582FCA02ABC85209)
owner :
Element (0 1); -- source
ElementConstraints:
Signature: CMOF_14_3_27() : Boolean;
Description: 14.3 [27] A Property typed by a kind of DataType must have aggregation = none.
Expression: type.oclIsKindOf(DataType) implies aggregation = AggregationKind::none
Signature: CMOF_14_3_26() : Boolean;
Description: 14.3 [26] A composite subsetting Property with mandatory multiplicity cannot subset
another composite Property with mandatory multiplicity.
Expression: isComposite and lowerBound() = 1 implies subsettedProperty->forAll(not (isComposite and lowerBound() = 1))
Signature: CMOF_14_3_25b() : Boolean;
Description: 14.3 [25] For a TypedElement that is a kind of Parameter or Property typed by an PrimitiveType,
the defaultValue, if any, must be a kind of LiteralSpecification.
see also: https://sites.google.com/site/metamodelingantipatterns/catalog/mof/typed-element-is-primitive-with-non-literal-default
Expression: type.oclIsKindOf(PrimitiveType) and defaultValue->notEmpty()
implies defaultValue.oclIsKindOf(LiteralSpecification)
Signature: CMOF_14_3_24b() : Boolean;
Description: 14.3 [24] For a TypedElement that is a kind of Parameter or Property typed by an Enumeration,
the defaultValue, if any, must be a kind of InstanceValue.
see also: https://sites.google.com/site/metamodelingantipatterns/catalog/mof/typed-element-is-enumeration-with-non-instance-value-default
Expression: type.oclIsKindOf(Enumeration) and defaultValue->notEmpty() implies defaultValue.oclIsKindOf(InstanceValue)
Signature: CMOF_14_3_23b() : Boolean;
Description: 14.3 [23] A TypedElement that is a kind of Parameter or Property typed by a Class cannot have a default value.
see also: https://sites.google.com/site/metamodelingantipatterns/catalog/mof/typed-element-is-complex-with-default-value
Expression: type.oclIsKindOf(Class) implies defaultValue->isEmpty()
Signature: CMOF_14_3_16() : Boolean;
Description: 14.3 [16] Property::aggregation must be either 'none' or 'composite'
see also: https://sites.google.com/site/metamodelingantipatterns/catalog/mof/property-has-shared-aggregation
Expression: aggregation = AggregationKind::composite or aggregation = AggregationKind::none
Signature: CMOF_14_3_12d() : Boolean;
Description: 14.3 [12] A multi-valued Property or Parameter cannot have a default value.
The default value of a Property or Parameter typed by a PrimitiveType must be a kind of LiteralSpecification.
The default value of a Property or Parameter typed by an Enumeration must be a kind of InstanceValue.
A Property or Parameter typed by a Class cannot have a default value.
see also: https://sites.google.com/site/metamodelingantipatterns/catalog/mof/parameter-has-invalid-default-value
see also: https://sites.google.com/site/metamodelingantipatterns/catalog/mof/property-has-invalid-default-value
Expression: defaultValue->notEmpty() implies
(upperBound() <= 1 and
((type.oclIsKindOf(PrimitiveType) and defaultValue.oclIsKindOf(LiteralSpecification)) or
(type.oclIsKindOf(Enumeration) and defaultValue.oclIsKindOf(InstanceValue))))
Signature: CMOF_14_3_12c() : Boolean;
Description: 14.3 [12] A multi-valued Property or Parameter cannot have a default value.
The default value of a Property or Parameter typed by a PrimitiveType must be a kind of LiteralSpecification.
The default value of a Property or Parameter typed by an Enumeration must be a kind of InstanceValue.
A Property or Parameter typed by a Class cannot have a default value.
see also: https://sites.google.com/site/metamodelingantipatterns/catalog/mof/parameter-has-invalid-default-value
see also: https://sites.google.com/site/metamodelingantipatterns/catalog/mof/property-has-invalid-default-value
Expression: (upperBound() > 1 or type.oclIsKindOf(Class) implies defaultValue->isEmpty())
Signature: CMOF_14_3_10b() : Boolean;
Description: see also: https://sites.google.com/site/metamodelingantipatterns/catalog/mof/property-has-qualifier
Expression: qualifier->isEmpty()
Operations:
Signature: subsettingContext() : Type;
Description: The query subsettingContext() gives the context for subsetting a Property.
It consists, in the case of an attribute, of the corresponding Classifier,
and in the case of an association end, all of the Classifiers at the other
ends.
Expression: result = (if association <> null then association.memberEnd->excluding(self)->collect(type)->asSet() else if classifier<>null then classifier->asSet() else Set{} endif endif)
Signature: opposite.1() : Property;
Description: If this property is a memberEnd of a binary association, then opposite
gives the other end.
Expression: result = (if association <> null and association.memberEnd->size() = 2 then association.memberEnd->any(e | e <> self) else null endif)
Signature: isNavigable() : Boolean;
Description: The query isNavigable() indicates whether it is possible to navigate across
the property.
Expression: result = (not classifier->isEmpty() or association.navigableOwnedEnd->includes(self))
Signature: isConsistentWith(redefiningElement : RedefinableElement; ) : Boolean;
Description: The query isConsistentWith() specifies, for any two Properties in a context
in which redefinition is possible, whether redefinition would be logically
consistent. A redefining Property is consistent with a redefined Property
if the type of the redefining Property conforms to the type of the redefined
Property, and the multiplicity of the redefining Property (if specified)
is contained in the multiplicity of the redefined Property.
Expression: result = (redefiningElement.oclIsKindOf(Property) and let prop : Property = redefiningElement.oclAsType(Property) in (prop.type.conformsTo(self.type) and ((prop.lowerBound()->notEmpty() and self.lowerBound()->notEmpty()) implies prop.lowerBound() >= self.lowerBound()) and ((prop.upperBound()->notEmpty() and self.upperBound()->notEmpty()) implies prop.lowerBound() <= self.lowerBound()) and (self.isComposite implies prop.isComposite)))
Signature: isComposite.1() : Boolean;
Description: The value of isComposite is true only if aggregation is composite.
Expression: result = (aggregation = AggregationKind::composite)
Signature: isCompatibleWith(p : ParameterableElement; ) : Boolean;
Description: The query isCompatibleWith() determines if this Property is compatible
with the specified ParameterableElement. This Property is compatible with
ParameterableElement p if the kind of this Property is thesame as or a
subtype of the kind of p. Further, if p is a TypedElement, then the type
of this Property must be conformant with the type of p.
Expression: result = (self.oclIsKindOf(p.oclType()) and (p.oclIsKindOf(TypeElement) implies self.type.conformsTo(p.oclAsType(TypedElement).type)))
Signature: isAttribute() : Boolean;
Description: The query isAttribute() is true if the Property is defined as an attribute
of some Classifier.
Expression: result = (not classifier->isEmpty())
Send questions or comments to
[email protected].