A structural model artefact representing an ENTRY Domain Model constrained for use within one or more specified areas of interest within the domain of the LRA.
Specializes
LraTechnicalModelArtefact
Constraints
| Type | Name | Specification |
|---|---|---|
| Each ConstrainedDomainComponentRelationship instance has a minimum of one owned end (i.e. the "source" relationship) in which the type of every instance is owned by the containing package | Invariant | inv: let elements: Sequence(Element) = self.packagedElement->select(Element: e | e.oclAsType(DomainModelClass).referenceClass.qualifiedName = ("lra::technical::en13606::extract::FINDING_OBSERVATION_ELEMENT" or "lra::technical::en13606::extract::PROPERTY_OBSERVATION_ELEMENT" or "lra::technical::en13606::extract::GENERAL_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::MATERIAL_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::INVESTIGATION_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::UNBOUND_DATA_ELEMENT")) in let relationships: Sequence(Element) = self.packagedElement->select(Element: e | e.oclIsTypeOf(ConstrainedDomainComponentRelationship)) in relationships->forAll(e: Element | e.oclAsType(ConstrainedDomainComponentRelationship).ownedEnd->exists(p: Property | elements->includesAll(p.oclAsType(Slot).instance->flatten()))) |
| Instance contains an association to each of one or more ConstrainedDomainModelClass instances of kind ELEMENT | Invariant | inv: self.packagedElement->select(Element: e | e.oclAsType(Association).memberEnd->exists(Property: p | p.class.oclAsType(ConstrainedDomainModelClass).qualifiedName = ("lra::technical::en13606::extract::FINDING_OBSERVATION_ELEMENT" or "lra::technical::en13606::extract::PROPERTY_OBSERVATION_ELEMENT" or "lra::technical::en13606::extract::GENERAL_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::MATERIAL_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::INVESTIGATION_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::UNBOUND_DATA_ELEMENT")))->size() >= 1 |
| Instance contains one ConstrainedDomainModelClass instance of type ENTRY | Invariant | inv: self.packagedElement->select(Element: e | e.oclAsType(DomainModelClass).referenceClass.qualifiedName = "lra::technical::en13606::extract::ENTRY")->size() = 1 |
| Instance contains one or more ConstrainedDomainModelClass "Participant" instances | Invariant | inv: self.packagedElement->select(Element: e | e.oclAsType(ConstrainedDomainModelClass).referenceClass.qualifiedName = ("lra::technical::en13606::extract::RELATED_PARTY" or "lra::technical::en13606::extract ::FUNCTIONAL_ROLE" or "lra::technical::en13606::extended::PARTICIPATION" or "lra::technical::participations::LANGUAGE_COMMUNICATION" or "lra::technical::participations::ROLE_RELATIONSHIP" or "lra::technical::participations::PERSON_ROLE" or "lra::technical::participations::ORGANISATIONAL_ROLE" or "lra::technical::participations::DEVICE_ROLE" or "lra::technical::participations::ENVIRONMENT_ROLE" or "lra::technical::participations::PERSON_ENTITY" or "lra::technical::participations::ORGANISATION_ENTITY" or "lra::technical::participations::DEVICE_ENTITY" or "lra::technical::participations::PLACE_ENTITY"))->size() >= 1 |
| Instance contains zero or more ConstrainedDomainComponentRelationship instances | Invariant | inv: self.packagedElement->select(Element: e | e.oclAsType(ConstrainedDomainComponentRelationship))->size() >= 0 |
| The type of every instance of the owned end of any ConstrainedDomainComponentRelationship instance is owned either by the containing package or by a referenced package | Invariant | inv: let elements: Sequence(Element) = self.packagedElement->select(Element: e | e.oclAsType(ConstrainedDomainModelClass).referenceClass.qualifiedName = ("lra::technical::en13606::extract::FINDING_OBSERVATION_ELEMENT" or "lra::technical::en13606::extract::PROPERTY_OBSERVATION_ELEMENT" or "lra::technical::en13606::extract::GENERAL_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::MATERIAL_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::INVESTIGATION_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::UNBOUND_DATA_ELEMENT")) in let relationships: Sequence(Element) = self.packagedElement->select(Element: e | e.oclIsTypeOf(DomainComponentRelationship)) in let references: Sequence(Element) = self.referencedElement->select(Element: e | e.oclAsType(ConstrainedDomainModelClass).referenceClass.qualifiedName = ("lra::technical::en13606::extract::FINDING_OBSERVATION_ELEMENT" or "lra::technical::en13606::extract::PROPERTY_OBSERVATION_ELEMENT" or "lra::technical::en13606::extract::GENERAL_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::MATERIAL_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::INVESTIGATION_ACTIVITY_ELEMENT" or "lra::technical::en13606::extract::UNBOUND_DATA_ELEMENT")) in let allElements: Sequence(Element) = elements->union(references) let relationships: Sequence(Element) = self.packagedElement->select(Element: e | e.oclIsTypeOf(ConstrainedDomainComponentRelationship)) in relationships->forAll(e: Element | e.oclAsType(ConstrainedDomainComponentRelationship).ownedEnd->flatten()->forAll(p: Property | allElements->includesAll(p.oclAsType(Slot).instance->flatten()))) |