namespace insurance.core; class InsuranceCompany{ singleton; 0..1 -- * InsurancePolicy; } class InsurancePolicy{ String policyNumber; defaulted Double monthlyPremium=150.0; Date starDate; Date endDate; Double insuradValue; 1 -- * Transaction; * -- 1 Person holder; key {policyNumber} } class Transaction { Integer txId; immutable Date date; key {txId} } class Renewal { Integer sequenceNumber; Integer renewalId; isA Transaction; key{sequenceNumber} } class Claim { Integer sequenceNumber; String description; Double amountClaimed; key{sequenceNumber} } class Person{ Integer idNumber; String name; String address; Date dateOfBirth; key {idNumber} } class LifeInsurancePolicy { Integer lifeInsurancePolicyId; isA InsurancePolicy; * -- 1 Person insuredLife; * -> * Person beneficiary; key {lifeInsurancePolicyId;} } class PropertyInsurancePolicy{ Integer propertyInsurancePolicyId; isA InsurancePolicy; key {propertyInsurancePolicyId} } class InsuredProperty { Integer sequenceNumber; Integer yearBuilt; 0..1 -- 1 PropertyInsurancePolicy; key{sequenceNumber} } class Building { isA InsuredProperty; String address; Double floorArea; key {address} } class Vehicle{ isA InsuredProperty; String identificationNumber; String manufacturer; String model; key{identificationNumber} }