CloudWatch logs, metrics, alarms, and dashboards
Observability classes turn operational intent into CloudWatch log groups, metric filters, alarms, composite alarms, dimensions, and dashboards.
Source: mde/metamodels/psm/awspsm-observability.emf.
CloudWatchLogGroup
Represents cloud watch log group in the PSM vocabulary. It specializes AwsResource with the details needed for this modeling concern.
Direct supertypes: AwsResource. Inherited attributes and marker capabilities are documented in the shared kernel; this section lists every attribute declared by this class.
Declared attributes
| Attribute | Type and multiplicity | What it captures and why it exists | Accepted values and example |
|---|---|---|---|
logGroupName |
String [1] |
Records stable name/key/code used for log group name for cloud watch log group. It keeps this decision explicit during review and transformation, so later steps do not have to infer it. The repository contains no direct EVL rule, ETL assignment, or artifact-generator read for this declared field. For now, it remains a model-level fact for review and future refinement. | A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: /aws/lambda/orders-handler. |
retentionDays |
Integer [1] |
Stores the data-lifecycle rule for retention days on the cloud watch log group. The field records retention and data-lifecycle controls as an explicit, reviewable input. Semantic validation: ProductionLogRetentionExplicit (production log retention explicit) in mde/validation/psm/rules/observability.evl the related value or object must be explicitly provided. |
A numeric Integer value; use the unit or boundary documented for this attribute. Example: 1. |
dataProtectionPolicyJson |
String [1] |
For a cloud watch log group, the model records the serialized JSON representation of data protection policy. Keeping the fact with its owning element lets validation and refinement inspect it before artifact generation. The repository contains no direct EVL rule, ETL assignment, or artifact-generator read for this declared field. For now, it remains a model-level fact for review and future refinement. | A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: {"enabled":true}. |
logGroupClass |
LogGroupClass [1] |
Stores the controlled classification or strategy represented by log group class on the cloud watch log group. The field keeps the model explicit and reviewable during review and transformation instead of leaving the decision to an inferred default. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/cfn.eol. |
Exactly one of: STANDARD, INFREQUENT_ACCESS, DELIVERY. Example: STANDARD. |
Relationships
| Relationship | Kind and multiplicity | Meaning in the model |
|---|---|---|
kmsKey → KmsKey |
reference, [?] | References the kms key element(s) used as kms key by this cloud watch log group; the target may be shared elsewhere in the model. |
metricFilters → CloudWatchMetricFilter |
reference, [*]; opposite logGroup |
References the cloud watch metric filter element(s) used as metric filters by this cloud watch log group; the target may be shared elsewhere in the model. |
subscriptionFilters → CloudWatchLogSubscriptionFilter |
reference, [*]; opposite logGroup |
References the cloud watch log subscription filter element(s) used as subscription filters by this cloud watch log group; the target may be shared elsewhere in the model. |
CloudWatchMetricFilter
Represents cloud watch metric filter in the PSM vocabulary. It specializes AwsResource with the details needed for this modeling concern.
Direct supertypes: AwsResource. Inherited attributes and marker capabilities are documented in the shared kernel; this section lists every attribute declared by this class.
Declared attributes
| Attribute | Type and multiplicity | What it captures and why it exists | Accepted values and example |
|---|---|---|---|
filterPattern |
String [1] |
For a cloud watch metric filter, the model records the validation pattern for filter pattern. Keeping the fact with its owning element lets validation and refinement inspect it before artifact generation. The repository contains no direct EVL rule, ETL assignment, or artifact-generator read for this declared field. For now, it remains a model-level fact for review and future refinement. | A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: ^[A-Z][A-Za-z0-9_-]*$. |
metricTransformationsJson |
String [1] |
For a cloud watch metric filter, the model records the serialized JSON representation of metric transformations. Keeping the fact with its owning element lets validation and refinement inspect it before artifact generation. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/cfn.eol. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: {"enabled":true}. |
Relationships
| Relationship | Kind and multiplicity | Meaning in the model |
|---|---|---|
metricTransformations → CloudWatchMetricTransformation |
containment, [*] | Contains the cloud watch metric transformation element(s) that make up this cloud watch metric filter; the contained objects belong to this model element. |
logGroup → CloudWatchLogGroup |
reference, [1]; opposite metricFilters |
References the cloud watch log group element(s) used as log group by this cloud watch metric filter; the target may be shared elsewhere in the model. |
CloudWatchMetricTransformation
Represents cloud watch metric transformation in the PSM vocabulary. It specializes TraceableElement with the details needed for this modeling concern.
Direct supertypes: TraceableElement. Inherited attributes and marker capabilities are documented in the shared kernel; this section lists every attribute declared by this class.
Declared attributes
| Attribute | Type and multiplicity | What it captures and why it exists | Accepted values and example |
|---|---|---|---|
metricName |
String [1] |
Stores the stable name/key/code used for metric name on the cloud watch metric transformation. The field keeps the model explicit and reviewable during review and transformation instead of leaving the decision to an inferred default. The repository contains no direct EVL rule, ETL assignment, or artifact-generator read for this declared field. For now, it remains a model-level fact for review and future refinement. | A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: CloudWatchMetricTransformationExample. |
metricNamespace |
String [1] |
Stores the metric namespace value on the cloud watch metric transformation. The field keeps the model explicit and reviewable during review and transformation instead of leaving the decision to an inferred default. The repository contains no direct EVL rule, ETL assignment, or artifact-generator read for this declared field. For now, it remains a model-level fact for review and future refinement. | A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: Cloud Watch Metric Transformation Metric Namespace. |
defaultValue |
String [1] |
Records the default value value for the cloud watch metric transformation. This keeps the decision explicit even when the element's class or relationships remain unchanged. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/templates/infrastructure/sam-template.egl. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: READY. |
unit |
String [1] |
Records the unit value for cloud watch metric transformation. It keeps this decision explicit during review and transformation, so later steps do not have to infer it. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/awspsm2artifacts.egx. The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/paths.eol. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: milliseconds. |
Relationships
| Relationship | Kind and multiplicity | Meaning in the model |
|---|---|---|
metricValue → ValueExpression |
containment, [1] | Contains the value expression element(s) that make up this cloud watch metric transformation; the contained objects belong to this model element. |
dimensions → MetricDimension |
containment, [*] | Contains the metric dimension element(s) that make up this cloud watch metric transformation; the contained objects belong to this model element. |
CloudWatchLogSubscriptionFilter
Represents cloud watch log subscription filter in the PSM vocabulary. It specializes AwsResource with the details needed for this modeling concern.
Direct supertypes: AwsResource. Inherited attributes and marker capabilities are documented in the shared kernel; this section lists every attribute declared by this class.
Declared attributes
| Attribute | Type and multiplicity | What it captures and why it exists | Accepted values and example |
|---|---|---|---|
filterPattern |
String [1] |
Records the validation pattern for filter pattern for the cloud watch log subscription filter. This keeps the decision explicit even when the element's class or relationships remain unchanged. The repository contains no direct EVL rule, ETL assignment, or artifact-generator read for this declared field. For now, it remains a model-level fact for review and future refinement. | A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: ^[A-Z][A-Za-z0-9_-]*$. |
destinationArn |
String [1] |
Stores the destination selected for destination arn on the cloud watch log subscription filter. The field keeps the model explicit and reviewable during review and transformation instead of leaving the decision to an inferred default. The repository contains no direct EVL rule, ETL assignment, or artifact-generator read for this declared field. For now, it remains a model-level fact for review and future refinement. | A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: arn:aws:lambda:us-east-1:123456789012:function:orders. |
roleArn |
String [1] |
Stores the AWS ARN used for role on the cloud watch log subscription filter. The field keeps the model explicit and reviewable during review and transformation instead of leaving the decision to an inferred default. The repository contains no direct EVL rule, ETL assignment, or artifact-generator read for this declared field. For now, it remains a model-level fact for review and future refinement. | A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: arn:aws:lambda:us-east-1:123456789012:function:orders. |
Relationships
| Relationship | Kind and multiplicity | Meaning in the model |
|---|---|---|
logGroup → CloudWatchLogGroup |
reference, [1]; opposite subscriptionFilters |
References the cloud watch log group element(s) used as log group by this cloud watch log subscription filter; the target may be shared elsewhere in the model. |
destinationResource → AwsResource |
reference, [?] | References the aws resource element(s) used as destination resource by this cloud watch log subscription filter; the target may be shared elsewhere in the model. |
role → IamRole |
reference, [?] | References the iam role element(s) used as role by this cloud watch log subscription filter; the target may be shared elsewhere in the model. |
CloudWatchAlarm
Represents cloud watch alarm in the PSM vocabulary. It specializes AwsResource with the details needed for this modeling concern.
Direct supertypes: AwsResource. Inherited attributes and marker capabilities are documented in the shared kernel; this section lists every attribute declared by this class.
Declared attributes
| Attribute | Type and multiplicity | What it captures and why it exists | Accepted values and example |
|---|---|---|---|
alarmName |
String [1] |
Records stable name/key/code used for alarm name for cloud watch alarm. It keeps this decision explicit during review and transformation, so later steps do not have to infer it. Transformation role: ETL rule AlertPolicy2CloudWatchAlarm in mde/transformations/pim-to-awspsm/contracts-external-policy.etl assigns or materializes this feature while refining CloudWatchAlarm. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/cfn.eol. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: CloudWatchAlarmExample. |
alarmDescription |
String [1] |
For a cloud watch alarm, the model records the human explanation of alarm description. Keeping the fact with its owning element lets validation and refinement inspect it before artifact generation. Transformation role: ETL rule AlertPolicy2CloudWatchAlarm in mde/transformations/pim-to-awspsm/contracts-external-policy.etl assigns or materializes this feature while refining CloudWatchAlarm. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/cfn.eol. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: Processes confirmed orders for the owning capability.. |
namespace |
String [1] |
For a cloud watch alarm, the model records the namespace value. Keeping the fact with its owning element lets validation and refinement inspect it before artifact generation. Semantic validation: AlarmHasMetricAndThreshold (alarm has metric and threshold) in mde/validation/psm/rules/observability.evl the value must be present and non-blank. Transformation role: ETL rule AlertPolicy2CloudWatchAlarm in mde/transformations/pim-to-awspsm/contracts-external-policy.etl assigns or materializes this feature while refining CloudWatchAlarm. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/cfn.eol. The artifact generator references this feature in mde/generation/awspsm-to-artifacts/templates/lambda/shared-metrics.egl. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: Cloud Watch Alarm Namespace. |
metricName |
String [1] |
For a cloud watch alarm, the model records the stable name/key/code used for metric name. Keeping the fact with its owning element lets validation and refinement inspect it before artifact generation. Semantic validation: AlarmHasMetricAndThreshold (alarm has metric and threshold) in mde/validation/psm/rules/observability.evl the value must be present and non-blank. Transformation role: ETL rule AlertPolicy2CloudWatchAlarm in mde/transformations/pim-to-awspsm/contracts-external-policy.etl assigns or materializes this feature while refining CloudWatchAlarm. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: CloudWatchAlarmExample. |
statistic |
String [1] |
Records the statistic value for the cloud watch alarm. This keeps the decision explicit even when the element's class or relationships remain unchanged. Transformation role: ETL rule AlertPolicy2CloudWatchAlarm in mde/transformations/pim-to-awspsm/contracts-external-policy.etl assigns or materializes this feature while refining CloudWatchAlarm. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/cfn.eol. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: Cloud Watch Alarm Statistic. |
extendedStatistic |
String [1] |
For a cloud watch alarm, the model records the extended statistic value. Keeping the fact with its owning element lets validation and refinement inspect it before artifact generation. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/cfn.eol. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: Cloud Watch Alarm Extended Statistic. |
period |
Integer [1] |
Stores the period value on the cloud watch alarm. The field records an operational boundary explicitly instead of leaving it to provider defaults. Semantic validation: AlarmEvaluationSettingsValid (alarm evaluation settings valid) in mde/validation/psm/rules/observability.evl the value must remain absent in this modeling situation. Transformation role: ETL rule AlertPolicy2CloudWatchAlarm in mde/transformations/pim-to-awspsm/contracts-external-policy.etl assigns or materializes this feature while refining CloudWatchAlarm. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/cfn.eol. |
A numeric Integer value; use the unit or boundary documented for this attribute. Example: 1. |
evaluationPeriods |
Integer [1] |
Records the evaluation periods value for cloud watch alarm. It keeps an operational boundary that should not be left to provider defaults explicit during review and transformation, so later steps do not have to infer it. Semantic validation: AlarmEvaluationSettingsValid (alarm evaluation settings valid) in mde/validation/psm/rules/observability.evl the value must remain absent in this modeling situation. Transformation role: ETL rule AlertPolicy2CloudWatchAlarm in mde/transformations/pim-to-awspsm/contracts-external-policy.etl assigns or materializes this feature while refining CloudWatchAlarm. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/cfn.eol. |
A numeric Integer value; use the unit or boundary documented for this attribute. Example: 1. |
datapointsToAlarm |
Integer [1] |
Stores the datapoints to alarm value on the cloud watch alarm. The field records an operational boundary explicitly instead of leaving it to provider defaults. Semantic validation: AlarmEvaluationSettingsValid (alarm evaluation settings valid) in mde/validation/psm/rules/observability.evl the value must remain absent in this modeling situation. Transformation role: ETL rule AlertPolicy2CloudWatchAlarm in mde/transformations/pim-to-awspsm/contracts-external-policy.etl assigns or materializes this feature while refining CloudWatchAlarm. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/cfn.eol. |
A numeric Integer value; use the unit or boundary documented for this attribute. Example: 1. |
threshold |
Double [?] |
For a cloud watch alarm, the model records the threshold value. Keeping the fact with its owning element lets validation and refinement inspect it before artifact generation. Semantic validation: AlarmHasMetricAndThreshold (alarm has metric and threshold) in mde/validation/psm/rules/observability.evl the value must be present and non-blank. Transformation role: ETL rule AlertPolicy2CloudWatchAlarm in mde/transformations/pim-to-awspsm/contracts-external-policy.etl assigns or materializes this feature while refining CloudWatchAlarm. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/cfn.eol. |
A numeric Double value; use the unit or boundary documented for this attribute. Example: 1. |
comparisonOperator |
CloudWatchComparisonOperator [1] |
Stores the controlled classification or strategy represented by comparison operator on the cloud watch alarm. The field keeps the model explicit and reviewable during review and transformation instead of leaving the decision to an inferred default. Semantic validation: AlarmHasMetricAndThreshold (alarm has metric and threshold) in mde/validation/psm/rules/observability.evl the value must be present and non-blank. Transformation role: ETL rule AlertPolicy2CloudWatchAlarm in mde/transformations/pim-to-awspsm/contracts-external-policy.etl assigns or materializes this feature while refining CloudWatchAlarm. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/cfn.eol. |
Exactly one of: GREATER_THAN_OR_EQUAL_TO_THRESHOLD, GREATER_THAN_THRESHOLD, LESS_THAN_THRESHOLD, LESS_THAN_OR_EQUAL_TO_THRESHOLD, LESS_THAN_LOWER_OR_GREATER_THAN_UPPER_THRESHOLD, LESS_THAN_LOWER_THRESHOLD, GREATER_THAN_UPPER_THRESHOLD. Example: GREATER_THAN_OR_EQUAL_TO_THRESHOLD. |
treatMissingData |
String [1] |
Records the treat missing data value for the cloud watch alarm. This keeps the decision explicit even when the element's class or relationships remain unchanged. Transformation role: ETL rule AlertPolicy2CloudWatchAlarm in mde/transformations/pim-to-awspsm/contracts-external-policy.etl assigns or materializes this feature while refining CloudWatchAlarm. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/cfn.eol. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: Cloud Watch Alarm Treat Missing Data. |
alarmActionArns |
String [*] |
Stores the alarm action arns value on the cloud watch alarm. The field keeps the model explicit and reviewable during review and transformation instead of leaving the decision to an inferred default. Semantic validation: ProductionAlarmShouldHaveActions (production alarm should have actions) in mde/validation/psm/rules/observability.evl the collection or referenced set must not be empty. |
A collection of values. Example: [arn:aws:lambda:us-east-1:123456789012:function:orders, arn:aws:lambda:us-east-1:123456789012:function:orders-2]. |
okActionArns |
String [*] |
Records the ok action arns value for the cloud watch alarm. This keeps the decision explicit even when the element's class or relationships remain unchanged. The repository contains no direct EVL rule, ETL assignment, or artifact-generator read for this declared field. For now, it remains a model-level fact for review and future refinement. | A collection of values. Example: [arn:aws:lambda:us-east-1:123456789012:function:orders, arn:aws:lambda:us-east-1:123456789012:function:orders-2]. |
insufficientDataActionArns |
String [*] |
Stores the insufficient data action arns value on the cloud watch alarm. The field keeps the model explicit and reviewable during review and transformation instead of leaving the decision to an inferred default. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/cfn.eol. |
A collection of values. Example: [arn:aws:lambda:us-east-1:123456789012:function:orders, arn:aws:lambda:us-east-1:123456789012:function:orders-2]. |
Relationships
| Relationship | Kind and multiplicity | Meaning in the model |
|---|---|---|
dimensions → MetricDimension |
containment, [*] | Contains the metric dimension element(s) that make up this cloud watch alarm; the contained objects belong to this model element. |
alarmActionResources → AwsResource |
reference, [*] | References the aws resource element(s) used as alarm action resources by this cloud watch alarm; the target may be shared elsewhere in the model. |
okActionResources → AwsResource |
reference, [*] | References the aws resource element(s) used as ok action resources by this cloud watch alarm; the target may be shared elsewhere in the model. |
insufficientDataActionResources → AwsResource |
reference, [*] | References the aws resource element(s) used as insufficient data action resources by this cloud watch alarm; the target may be shared elsewhere in the model. |
monitoredResource → AwsResource |
reference, [?] | References the aws resource element(s) used as monitored resource by this cloud watch alarm; the target may be shared elsewhere in the model. |
MetricDimension
Represents metric dimension in the PSM vocabulary. It specializes TraceableElement with the details needed for this modeling concern.
Direct supertypes: TraceableElement. Inherited attributes and marker capabilities are documented in the shared kernel; this section lists every attribute declared by this class.
Declared attributes
| Attribute | Type and multiplicity | What it captures and why it exists | Accepted values and example |
|---|---|---|---|
dimensionName |
String [1] |
Records stable name/key/code used for dimension name for metric dimension. It keeps this decision explicit during review and transformation, so later steps do not have to infer it. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/cfn.eol. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: MetricDimensionExample. |
Relationships
| Relationship | Kind and multiplicity | Meaning in the model |
|---|---|---|
value → ValueExpression |
containment, [1] | Contains the value expression element(s) that make up this metric dimension; the contained objects belong to this model element. |
CloudWatchCompositeAlarm
Represents cloud watch composite alarm in the PSM vocabulary. It specializes AwsResource with the details needed for this modeling concern.
Direct supertypes: AwsResource. Inherited attributes and marker capabilities are documented in the shared kernel; this section lists every attribute declared by this class.
Declared attributes
| Attribute | Type and multiplicity | What it captures and why it exists | Accepted values and example |
|---|---|---|---|
alarmRule |
String [1] |
Records the expression or rule that governs alarm rule for the cloud watch composite alarm. This keeps the decision explicit even when the element's class or relationships remain unchanged. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/cfn.eol. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: $.status == 'READY'. |
alarmActionArns |
String [*] |
Records the alarm action arns value for cloud watch composite alarm. It keeps this decision explicit during review and transformation, so later steps do not have to infer it. Semantic validation: CompositeAlarmShouldHaveActions (composite alarm should have actions) in mde/validation/psm/rules/observability.evl the collection or referenced set must not be empty. |
A collection of values. Example: [arn:aws:lambda:us-east-1:123456789012:function:orders, arn:aws:lambda:us-east-1:123456789012:function:orders-2]. |
okActionArns |
String [*] |
Stores the ok action arns value on the cloud watch composite alarm. The field keeps the model explicit and reviewable during review and transformation instead of leaving the decision to an inferred default. The repository contains no direct EVL rule, ETL assignment, or artifact-generator read for this declared field. For now, it remains a model-level fact for review and future refinement. | A collection of values. Example: [arn:aws:lambda:us-east-1:123456789012:function:orders, arn:aws:lambda:us-east-1:123456789012:function:orders-2]. |
Relationships
| Relationship | Kind and multiplicity | Meaning in the model |
|---|---|---|
alarmActionResources → AwsResource |
reference, [*] | References the aws resource element(s) used as alarm action resources by this cloud watch composite alarm; the target may be shared elsewhere in the model. |
okActionResources → AwsResource |
reference, [*] | References the aws resource element(s) used as ok action resources by this cloud watch composite alarm; the target may be shared elsewhere in the model. |
CloudWatchDashboard
Represents cloud watch dashboard in the PSM vocabulary. It specializes AwsResource with the details needed for this modeling concern.
Direct supertypes: AwsResource. Inherited attributes and marker capabilities are documented in the shared kernel; this section lists every attribute declared by this class.
Declared attributes
| Attribute | Type and multiplicity | What it captures and why it exists | Accepted values and example |
|---|---|---|---|
dashboardName |
String [1] |
Records the stable name/key/code used for dashboard name for the cloud watch dashboard. This keeps the decision explicit even when the element's class or relationships remain unchanged. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/cfn.eol. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: CloudWatchDashboardExample. |
dashboardBodyJson |
String [1] |
Stores the serialized JSON representation of dashboard body on the cloud watch dashboard. The field preserves structured provider or contract detail as an explicit, reviewable input. Generation role: The artifact generator references this feature in mde/generation/awspsm-to-artifacts/lib/cfn.eol. |
A free-form String, subject to this class's semantic meaning and any EVL constraints. Example: {"enabled":true}. |
Relationships
This class declares no direct relationships.