Модель в данном примере в основном утверждает, что личность может быть мужчиной или женщиной. Каждая личность имеет некоторые определяющие характеристики, такие как имя и фамилия, дата рождения, тип волос, а также может иметь или не иметь детей (которые, конечно, также являются людьми). Мужчина может быть женат на женщине. В этом случае женщина имеет инверсную взаимосвязь с данным мужчиной.
Возраст (объект age) личности является вычисляемым атрибутом, который рассчитывается с помощью функции years, определяющей число лет между датой, вводимой в качестве параметра, и текущей датой.
Личность (объект person) имеет инверсный атрибут, связывающий детей со своими родителями. Нижней границей данного инверсного атрибута является 0, чтобы обеспечить ненужность предоставления всей родословной.
Примечание - Если бы объект parents (родители) был необходимым явным атрибутом, а объект children (дети) - его инверсным атрибутом, то родословную надо было бы раскручивать назад во времени.
Пример - Модель единой схемы на языке EXPRESS.
SCHEMA example; | |||||
(blonde, | |||||
END_TYPE; | |||||
first_name : STRING; | |||||
DERIVE | |||||
age : INTEGER : = years (birth_date); | |||||
INVERSE | |||||
parents : SET [0 : 2] OF person FOR children; | |||||
END_ENTITY; | |||||
ONEOF (female, male); | |||||
END_SUBTYPE_CONSTRAINT; | |||||
SUBTYPE OF (person); | |||||
INVERSE | |||||
husband : SET [0 :1] OF male FOR wife; -- муж является необязательным! | |||||
END_ENTITY; | |||||
SUBTYPE OF (person); | |||||
END_ENTITY; | |||||
(* "years" Данная функция рассчитывает число лет | |||||
END_FUNCTION; |