ГОСТ Р ИСО 10303-22-2002
П р и м е р 17 — Предположим, что имеются следующие EXPRESS-схсмы:
SCHEMA resource:
ENTITY a ABSTRACT SUPERTYPE OF (b ANDOR c):
attrl : REAL;
WHERE
WR1 : attrl >= 0.0:
END_ENT1TY;
ENTITY b SUBTYPE OF (a): END_ENTITY;
ENTITY c SUBTYPE OF <a>:
attr4: STRING:
UNIQUE
URI : attr4;
END_ENTITY;
END_SCHEMA;
SCHEMA cxample_schema;
USE FROM resource (a. b);
REFERENCE FROM resource (c);
ENTITY d SUPERTYPE OF (ONEOF (e. 0 AND (g ANDOR h)) SUBTYPE OF (b);
alt’ : g:
END_ENTITY:
ENTITY c SUBTYPE OF (d):
SELF\a.attrl : INTEGER:
END_ENTITY;
ENTITY f SUBTYPE OF <d>; END_ENTITY:
ENTITY g SUBTYPE OF (d):
INVERSE
attr3 : SET|2:4| OF d FOR attr2;
END_ENTITY:
ENTITY h SUBTYPE OF (d); END_ENTITY;
RULE f_atlrl_big FOR (П;
WHERE
WR1: SIZEOF (QUERY (fab <* f | fab.attrl < 1000.0)) - 0;
END_RULE;
END.SCHEMA;
Тогда в словаре могут появиться следующие экземпляры cntitv_dcfinition. закодированные в соотнет-
ствии
с ГОСТ Р ИСО 10303-21:
#1 * SCHEMA_DEFINITION(‘example_schcma\ $);
#100 =■ENTITY_DEFINITION(a\ («101). *1, (). .F.. .F., .T.):
#101 - WHERE RULE(’wrl\ #100);
#102 - EXPLICIT_ATTRIBUTE(,attrr, #100. #103. S. .F.);
# 103 - REAL_TYPE($);
#110 - ENTITY_DEFINITION (*b\ (), #1. (#100), .F.. .T.. .T.);
#120 - ENTITY_DEFINITlON (‘c’, (). #1. (#100), .F., .T., .F.);
#121 - EXPLICIT ATTRIBUTE(’attr4’. #120. #122. S. .F.);
#122 - STRING_TYPE($, .F.);
#123 - UNIQUENESS RULECurF. (#121), #120);
#130 - ENTITY_DEFINITION (4l\ (), #1. (#110), .F., .T., .T.);
#131 - EXPLICIT_ATTRIBUTE(’attr2‘. #130, #160. $, .F.);
#140 - ENTITY_DEFINlTION( e \ (>, #1, (#130), .F„ .T.. .T.);
#141 - EXPLICIT_ATTRIBUTE(*attr2\ #140. #142. «102, .F.);
#142 - INTEGER,TYPED:
#150 - ENTITY_DEFINITION(T. (), #1. (#130). .F.. ,T„ .T);
#160 - ENTITY_DEFINITIONCg\ (), #1, (#130), .F., .T., T.);
#161 = INVERSE_ATTRlBUTECattr3-. #160. #130. S. #131, #162. #163. .F.);
#162 - INTEGER,BOUND(2);
#163- INTEGER BOUND(4);
#170 - ENTITY.DEFINlTIONCh*, (). #1, (#130), .F., .T.. .T.);
#200 - GLOBAL_RULE(T_attrl_big\ (#150). (#201). #1):
#201 - WHERE RULECwrF. #200);
#300 = ENTITY_DEFINITION( b+c’, (). #1. (#110. #120), .T., .T., .T.);
#301 - ENTITY_DEFINITI0N(‘e4g‘, (). #1, (#140. #160), .T., .T.f .T.);
#302 - ENTITY,DEFINlTI0N(‘e4h*. (). #1. (#140. #170), ,T„ ,T., .T.);
112