vocabulary Address; /* * Value Types */ City is written as String(64); Company Name is written as String; Family Name is written as String(20); Given Names is written as String(20); Number is written as String(12); Postcode is written as String; Street Line is written as String(64); /* * Entity Types */ Company is identified by its Name; Family is identified by its Name; Person is identified by Family and Given Names where Person is of one Family, Family includes Person, Person has one Given Names; Street is identified by first-Street Line and second-Street Line and third-Street Line where Street includes one first-Street Line, Street includes at most one second-Street Line, Street includes at most one third-Street Line; Address is identified by street-Number and Street and City and Postcode where Address is at at most one street-Number, Address is at one Street, Address is in one City, Address is in at most one Postcode restricted to {1000..9999}, Postcode is of Address; Company has head office at at most one Address; Person lives at at most one Address; /* * Constraints: */ Street includes third Street Line only if Street includes second Street Line;