Integrated generic resource: Visual presentation ISO 10303-46:2021(E)
© ISO

Cover page
Table of contents
Copyright
Foreword
Introduction
1 Scope
2 Normative references
3 Terms, definitions and abbreviated terms
    3.1 Terms and definitions
    3.2 Abbreviated terms

4 Presentation organization
   4.1 General
   4.2 Fundamental concepts and assumptions
   4.3 Presentation organization type definitions
   4.4 Presentation organization entity definitions
   4.5 Presentation organization subtype constraint definition
   4.6 Presentation organization function definitions
   4.7 Presentation organization rule definitions
5 Presentation definition
   5.1 General
   5.2 Fundamental concepts and assumptions
   5.3 Presentation definition type definitions
   5.4 Presentation definition entity definitions
   5.5 Presentation definition subtype constraint definition
   5.6 Presentation definition function definitions
6 Presentation appearance
   6.1 General
   6.2 Fundamental concepts and assumptions
   6.3 Presentation appearance type definitions
   6.4 Presentation appearance entity definitions
   6.5 Presentation appearance subtype constraint definitions
   6.6 Presentation appearance function definitions
7 Presentation resource
   7.1 General
   7.2 Fundamental concepts and assumptions
   7.3 Presentation resource type definitions
   7.4 Presentation resource entity definitions
   7.5 Presentation resource subtype constraint definition

A Short names of entities
B Information object registration
C Computer interpretable listings
D EXPRESS-G diagrams
E Technical discussion
F Change history
Bibliography
Index

5 Presentation definition schema

5.1 General

The presentation_definition_schema provides the structure for the definition of annotation and assignment of style properties to annotation primitives. Annotation in this part of ISO 10303 is always planar, but may be located in three-dimensional space.

This clause defines the information requirements to which implementations shall conform using the EXPRESS language as defined in ISO 10303-11. The following EXPRESS declaration begins the presentation_definition_schema and identifies the necessary external references.

Each implementation of an AP that uses this schema and that encodes entity names shall use the encoding specified in Annex A. Each reference to this schema in an open system shall use the identifier encoding specified in Annex B. This schema is illustrated in Annex D using the EXPRESS-G notation.

EXPRESS specification:

*)
SCHEMA presentation_definition_schema;

REFERENCE FROM draughting_element_schema    --  ISO 10303-101
  (annotation_plane,
   tessellated_annotation_occurrence);

REFERENCE FROM mechanical_design_schema    --  ISO 10303-113
  (annotation_placeholder_occurrence);

REFERENCE FROM external_reference_schema    --  ISO 10303-41
  (externally_defined_item,
   pre_defined_item);

REFERENCE FROM geometric_model_schema    --  ISO 10303-42
  (geometric_curve_set);

REFERENCE FROM geometry_schema    --  ISO 10303-42
  (axis2_placement,
   b_spline_curve,
   composite_curve,
   curve,
   geometric_representation_item,
   point,
   polyline);

REFERENCE FROM measure_schema    --  ISO 10303-41
  (positive_ratio_measure);

REFERENCE FROM presentation_appearance_schema    --  ISO 10303-46
  (styled_item);

REFERENCE FROM presentation_organization_schema    --  ISO 10303-46
  (annotation_representation_select);

REFERENCE FROM presentation_resource_schema    --  ISO 10303-46
  (character_glyph_symbol,
   font_select,
   planar_box,
   planar_extent,
   text_font);

REFERENCE FROM representation_schema    --  ISO 10303-43
  (item_in_context,
   mapped_item,
   representation,
   representation_item,
   representation_map,
   representation_relationship,
   representation_relationship_with_transformation,
   using_representations);

REFERENCE FROM support_resource_schema    --  ISO 10303-41
  (bag_to_set,
   label,
   text);
(*

NOTE 1   The schemas referenced above are specified in the following parts:

draughting_element_schema ISO 10303-101
mechanical_design_schema ISO 10303-113
external_reference_schema ISO 10303-41
geometric_model_schema ISO 10303-42
geometry_schema ISO 10303-42
measure_schema ISO 10303-41
presentation_appearance_schema ISO 10303-46
presentation_organization_schema ISO 10303-46
presentation_resource_schema ISO 10303-46
representation_schema ISO 10303-43
support_resource_schema ISO 10303-41

NOTE 2   See Annex D for a graphical representation of this schema.

5.2 Fundamental concepts and assumptions

Annotation primitives are the elements from which symbolic presentations are constructed. The annotation primitives defined in this schema include annotation points, curves, fill areas, texts, symbols, and tables.

An annotation point is a point which is presented using a point_style. The presentation appearance schema does not define a special entity for annotation points because the point entity defined in ISO 10303-42 is sufficient for annotation purposes.

An annotation curve is a planar curve which is presented using a curve_style. The presentation appearance schema does not define a special entity for annotation curves, because the curve entity defined in ISO 10303-42 is sufficient for annotation purposes.

Annotation text is a collection of characters, character strings, collection of strings, and more complex collections of strings and characters. Annotation text is defined by the annotation_text entity which uses the concept of mapped_item. For more information on mapped_item see ISO 10303-43. The annotation_text entity positions and orients a collection of characters, simple character strings, collection of strings, and more complex collections of strings and characters, which is defined in a text_string_representation. Several annotation_text entities can reference the same text_string_representation. A text_string_representation itself is a set of annotation_text, defined_character_glyph, annotation_text_character, text_literal, or composite_text entities. This structure allows the recursive construction of an annotation_text. Characters may be pre-defined, externally defined, or may be defined within a conforming exchange using concepts of this part of ISO 10303. In the last case, the annotation_text_character entity refers to the character_glyph_symbol entity. This entity contains the geometric representation of a character. The text_literal allows the specification of a text string as part of an annotation_text. A complex collection that may be placed and styled as a whole can be defined by the composite_text entity. Specializations of annotation_text allow additionally the specification of blanking boxes, surrounding curves, delineations, or extent rectangles for that text. An annotation_text is presented using a text style. For more information on text_style see clause 6.

An annotation symbol is a pre-defined symbol, an externally defined symbol, or a collection of representation_items which make up a graphical symbol. An annotation symbol is defined either by the defined_symbol entity or by the annotation_symbol entity. The defined_symbol entity scales, positions, and orients an implicit description of a symbol. The annotation_symbol uses the concept of mapped_item. For more information on mapped_item see ISO 10303-43. The annotation_symbol entity scales, positions, and orients a collection of representation_items which are defined in a symbol_representation. Several annotation_symbol entities can reference the same symbol_representation. The representation_items which make up a symbol can be elements of geometry (see ISO 10303-42), annotation primitives, or annotation occurrences. This structure allows the recursive construction of symbols. Moreover, a symbol_representation itself can be built of several symbol_representations. Such a hierarchy is defined by establishing a relationship between two symbol_representations. A relationship is established by instantiating an entity of type symbol_representation_relationship which refers to a pair of representations. One of these representations is called rep_1, the other one is called rep_2, and the relationship is directed from the parent (rep_1) to the child (rep_2). The relationship specifies additionally a transformation. This transformation shall be executed to transform elements in the rep_2 to the coordinate system of the rep_1. A single symbol_representation is then the collection of all representation_items in that representation plus all symbol_representations which are nodes in the relationship tree associated with that representation. Symbols are presented using symbol_style, which is a collection of presentation styles. For more information on symbol_style see clause 6.

An annotation table is a special type of annotation_symbol which represents a table. An annotation table is defined by the annotation_table entity which uses the concept of mapped_item. For more information on mapped_item see ISO 10303-43. The annotation_table entity scales, positions, and orients a table which is defined in a table_representation. Several annotation_table entities can reference the same table_representation. A table_representation can be built of table_record_representations which itself can be made of several table_record_field_representations. A table_record_representation usually corresponds to a column or row of a table, while a table_record_field_representation corresponds to a single cell of a table. Nevertheless, more complex structures can be built because table_record_field_representations may be built of other table_record_field_representations. The hierarchy making up a table_representation is built by relating the components by a table_representation_relationship which is a specialization of symbol_representation_relationship. The annotation_table defines only an empty table. To put text into a table, annotation_text occurrences are defined individually in such a way that they are placed in a table. The table_text_relationship can be used to associate such text with a specific field of a table.

Annotation primitives can occur only in conjunction with a style assignment. An annotation primitive, together with its style, is called an annotation_occurrence. For each type of primitive a special annotation_occurrence is defined which restricts the presentation style to appropriate types. The annotation_occurrence_relationship allows the definition of a relationship between two annotation_occurrences. The table_text_relationship associates an annotation_text_occurrence with a table_record_field_representation of an annotation table.

5.3 presentation_definition_schema type definitions

5.3.1 annotation_symbol_occurrence_item   EXPRESS-G

The annotation_symbol_occurrence_item type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types.

EXPRESS specification:

*)
TYPE annotation_symbol_occurrence_item = SELECT
   (annotation_symbol,
    defined_symbol);
END_TYPE;
(*

5.3.2 annotation_table_occurrence_item   EXPRESS-G

The annotation_table_occurrence_item type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types.

EXPRESS specification:

*)
TYPE annotation_table_occurrence_item = SELECT
   (annotation_table,
    defined_table);
END_TYPE;
(*

5.3.3 annotation_text_occurrence_item   EXPRESS-G

The annotation_text_occurrence_item type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types.

EXPRESS specification:

*)
TYPE annotation_text_occurrence_item = SELECT
   (text_literal,
    annotation_text,
    annotation_text_character,
    defined_character_glyph,
    composite_text);
END_TYPE;
(*

5.3.4 curve_or_curve_set   EXPRESS-G

The curve_or_curve_set type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types.

EXPRESS specification:

*)
TYPE curve_or_curve_set = SELECT
   (curve,
    geometric_curve_set);
END_TYPE;
(*

5.3.5 defined_glyph_select   EXPRESS-G

The defined_glyph_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types.

EXPRESS specification:

*)
TYPE defined_glyph_select = SELECT
   (pre_defined_character_glyph,
    externally_defined_character_glyph);
END_TYPE;
(*

5.3.6 defined_symbol_select   EXPRESS-G

The defined_symbol_select type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The defined_symbol_select specifies the implicit description of a defined_symbol.

EXPRESS specification:

*)
TYPE defined_symbol_select = SELECT
   (pre_defined_symbol,
    externally_defined_symbol);
END_TYPE;
(*

5.3.7 presentable_text   EXPRESS-G

A presentable_text is any string which can be presented.

EXPRESS specification:

*)
TYPE presentable_text = STRING;
WHERE
  WR1: control_characters_free(SELF);
END_TYPE;
(*

Formal propositions:

WR1: The string shall not contain any control characters.

NOTE    This prohibits linefeed and carriage return characters in presentable_text.

5.3.8 text_alignment   EXPRESS-G

The text_alignment is provided to control the alignment of text.

NOTE    Application protocols shall specify legal values of the text_alignment and shall associate precise meaning with those values.

EXAMPLE    An Application Protocol may specify that the only permitted values of this type are 'left', 'centre' and 'right', and associate these to the positioning of text with respect to alignment points as shown in figure 13.



Figure 13 —  Examples of text alignment

Figure 13 —  Examples of text alignment

EXPRESS specification:

*)
TYPE text_alignment = label;
END_TYPE;
(*

5.3.9 text_delineation   EXPRESS-G

The text_delineation type is provided to control the delineation of text.

NOTE    Application protocols may specify legal values of text_delineation and associate precise meaning with those values.

EXAMPLE    An application protocol may specify that the only permitted values of this type are 'underline' and 'overline', and associate these with the delineation of text as shown in figure 14.



Figure 14 —  Examples of text delineation

Figure 14 —  Examples of text delineation

EXPRESS specification:

*)
TYPE text_delineation = label;
END_TYPE;
(*

5.3.10 text_or_character   EXPRESS-G

The text_or_character type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types. The text_or_character specifies the items which can be used in an annotation_text or a composite_text.

EXPRESS specification:

*)
TYPE text_or_character = SELECT
   (annotation_text,
    annotation_text_character,
    defined_character_glyph,
    composite_text,
    text_literal);
END_TYPE;
(*

5.3.11 text_path   EXPRESS-G

The text_path specifies the direction of the location of the next text character relative to the current character. The next text character can appear to the left of the current character, to the right of the current character, above the current character, or below the current character.

EXPRESS specification:

*)
TYPE text_path = ENUMERATION OF
   (left,
    right,
    up,
    down);
END_TYPE;
(*

Enumerated item definitions:

left: the next character is placed to the left of the current character.

right: the next character is placed to the right of the current character.

up: the next character is placed above the current character.

down: the next character is placed below the current character.

5.3.12 text_string_representation_item   EXPRESS-G

The text_string_representation_item type is a list of alternate data types. It provides a mechanism to refer to an instance of one of these data types.

EXPRESS specification:

*)
TYPE text_string_representation_item = SELECT
   (text_literal,
    annotation_text,
    annotation_text_character,
    defined_character_glyph,
    composite_text,
    axis2_placement);
END_TYPE;
(*

5.4 presentation_definition_schema entity definitions

5.4.1 annotation_curve_occurrence   EXPRESS-G

An annotation_curve_occurrence is a type of annotation_occurrence. An annotation_curve_occurrence is a curve or set of curves with a style assignment.

EXPRESS specification:

*)
ENTITY annotation_curve_occurrence
  SUBTYPE OF (annotation_occurrence);
  SELF\styled_item.item : curve_or_curve_set;
END_ENTITY;
(*

Attribute definitions:

item: the curve or geometric_curve_set that is annotated by the annotation_curve_occurrence.

5.4.2 annotation_fill_area   EXPRESS-G

An annotation_fill_area is a type of geometric_representation_item. An annotation_fill_area is a set of curves that may be filled with hatching, shading, colour, or tiling. The annotation_fill_area is described by boundaries which consist of non-intersecting, non-self-intersecting closed curves. These curves form the boundary of planar areas to be filled according to the style for the annotation_fill_area. The filling is defined by the following rules:

Figure 15 —  Filling of annotation fill areas

Figure 15 —  Filling of annotation fill areas

EXPRESS specification:

*)
ENTITY annotation_fill_area
  SUBTYPE OF (geometric_representation_item);
  boundaries : SET[1:?] OF curve;
WHERE
  WR1: (SELF\geometric_representation_item.dim = 3) OR (SIZEOF (QUERY (curve <* boundaries | NOT ( ('GEOMETRY_SCHEMA.CIRCLE' IN TYPEOF (curve)) OR ('GEOMETRY_SCHEMA.ELLIPSE' IN TYPEOF (curve)) OR ( ('GEOMETRY_SCHEMA.B_SPLINE_CURVE' IN TYPEOF (curve)) AND (curve\b_spline_curve.closed_curve = TRUE) ) OR ( ('GEOMETRY_SCHEMA.COMPOSITE_CURVE' IN TYPEOF (curve)) AND (curve\composite_curve.closed_curve = TRUE) ) OR ( ('GEOMETRY_SCHEMA.POLYLINE' IN TYPEOF (curve)) AND (curve\polyline.points[LOINDEX(curve\polyline.points)] = curve\polyline.points[HIINDEX(curve\polyline.points)]) ) ) )) = 0);
END_ENTITY;
(*

Attribute definitions:

boundaries: a set of curves that define the boundaries of the fill area.

Formal propositions:

WR1: All the curves in the set boundaries shall be closed and planar.

Informal propositions:

IP1: If there are two or more curves in the set boundaries, all of these curves shall be coplanar, and no two curves shall intersect each other.

5.4.3 annotation_fill_area_occurrence   EXPRESS-G

An annotation_fill_area_occurrence is a type of annotation_occurrence. An annotation_fill_area_occurrence is the assignment of a style to an annotation_fill_area; it includes the specification of the point to be used as the starting point of the fill_area.

EXPRESS specification:

*)
ENTITY annotation_fill_area_occurrence
  SUBTYPE OF (annotation_occurrence);
  fill_style_target : point;
  SELF\styled_item.item : annotation_fill_area;
END_ENTITY;
(*

Attribute definitions:

fill_style_target: the point that specifies the starting location for the fill_area_style assigned to the annotation_fill_area_occurrence.

item: the annotation_fill_area that is styled by the annotation_fill_area_occurrence.

5.4.4 annotation_occurrence   EXPRESS-G

An annotation_occurrence is a type of styled_item. An annotation_occurrence defines occurrences of annotation by combining two-dimensional geometry or annotation elements with style for presentation purposes. The annotation_occurrences shall be used only in representations which are defined for annotation purposes, i.e., area_dependent_annotation_representation, view_dependent_annotation_representation, curve_style_curve_pattern, fill_area_style_tile_curve_with_style, or fill_area_style_tile_coloured_region. An annotation_occurrence may be either an annotation_point_occurrence, or an annotation_curve_occurrence, or an annotation_fill_area_occurrence, or an annotation_text_occurrence, or an annotation_symbol_occurrence.

EXPRESS specification:

*)
ENTITY annotation_occurrence
  SUPERTYPE OF (ONEOF (annotation_point_occurrence,
                       annotation_curve_occurrence,
                       annotation_fill_area_occurrence,
                       annotation_placeholder_occurrence,
                       annotation_plane,
                       annotation_text_occurrence,
                       annotation_symbol_occurrence,
                       tessellated_annotation_occurrence))
  SUBTYPE OF (styled_item);
WHERE
  WR1: 'GEOMETRY_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF (SELF);
  WR2: SIZEOF (QUERY (reps <* using_representations(SELF) | NOT('PRESENTATION_ORGANIZATION_SCHEMA.ANNOTATION_REPRESENTATION_SELECT' IN TYPEOF(reps)))) = 0;
END_ENTITY;
(*

Formal propositions:

WR1: An annotation_occurrence shall be a geometric_representation_item.

WR2: The annotation_occurrences shall be used only in representations which are defined for annotation purposes: area_dependent_annotation_representation, view_dependent_annotation_representation.

5.4.5 annotation_occurrence_relationship   EXPRESS-G

An annotation_occurrence_relationship is the association of two annotation_occurrences.

NOTE    There is no significance to the ordering of the two related annotation_occurrences. The use of the different attribute names serves only to distinguish the names.

EXPRESS specification:

*)
ENTITY annotation_occurrence_relationship;
  name : label;
  description : text;
  relating_annotation_occurrence : annotation_occurrence;
  related_annotation_occurrence : annotation_occurrence;
END_ENTITY;
(*

Attribute definitions:

name: the word, or group of words, by which the annotation_occurrence_relationship is referred to.

description: text that relates the nature of the annotation_occurrence_relationship.

relating_annotation_occurrence: the first of two annotation_occurrences which are related.

related_annotation_occurrence: the second of two annotation_occurrences which are related.

5.4.6 annotation_point_occurrence   EXPRESS-G

An annotation_point_occurrence is a type of annotation_occurrence An annotation_point_occurrence is a point with a style assignment.

EXPRESS specification:

*)
ENTITY annotation_point_occurrence
  SUBTYPE OF (annotation_occurrence);
  SELF\styled_item.item : point;
END_ENTITY;
(*

Attribute definitions:

item: the point that is styled by the annotation_point_occurrence.

5.4.7 annotation_symbol   EXPRESS-G

An annotation_symbol is a type of mapped_item. An annotation_symbol is the mapping of a symbol_representation as a geometric_representation_item to present that symbol_representation as part of a picture.

NOTE    Figure 16 shows examples of annotation symbols.



Figure 16 —  Examples of annotation symbols

Figure 16 —  Examples of annotation symbols

EXPRESS specification:

*)
ENTITY annotation_symbol
  SUBTYPE OF (mapped_item);
  SELF\mapped_item.mapping_source : symbol_representation_map;
  SELF\mapped_item.mapping_target : symbol_target;
WHERE
  WR1: 'GEOMETRY_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF (SELF);
END_ENTITY;
(*

Attribute definitions:

mapping_source: a symbol_representation_map which maps the symbol_representation.

mapping_target: a symbol_target indicating where the symbol is to be placed.

Formal propositions:

WR1: An instance of annotation_symbol shall also be an instance of geometric_representation_item.

5.4.8 annotation_symbol_occurrence   EXPRESS-G

An annotation_symbol_occurrence is a type of annotation_occurrence. An annotation_symbol_occurrence is an annotation_symbol with a style assignment or a defined_symbol with a style assignment.

EXPRESS specification:

*)
ENTITY annotation_symbol_occurrence
  SUBTYPE OF (annotation_occurrence);
  SELF\styled_item.item : annotation_symbol_occurrence_item;
END_ENTITY;
(*

Attribute definitions:

item: the annotation_symbol_occurrence_item that is styled by the annotation_symbol_occurrence.

5.4.9 annotation_table   EXPRESS-G

An annotation_table is a type of annotation_symbol. An annotation_table is the mapping of a table_representation to present the table_representation as part of a picture.

EXPRESS specification:

*)
ENTITY annotation_table
  SUBTYPE OF (annotation_symbol);
WHERE
  WR1: 'PRESENTATION_DEFINITION_SCHEMA.TABLE_REPRESENTATION' IN TYPEOF (SELF\mapped_item.mapping_source.mapped_representation);
END_ENTITY;
(*

Formal propositions:

WR1: The representation that is mapped shall be a table_representation.

5.4.10 annotation_table_occurrence   EXPRESS-G

An annotation_table_occurrence is a type of annotation_symbol_occurrence An annotation_table_occurrence is an annotation_table with a style assignment or a defined_table with a style assignment.

EXPRESS specification:

*)
ENTITY annotation_table_occurrence
  SUBTYPE OF (annotation_symbol_occurrence);
  SELF\styled_item.item : annotation_table_occurrence_item;
END_ENTITY;
(*

Attribute definitions:

item: the annotation_table_occurrence_item that is styled by the annotation_table_occurrence.

5.4.11 annotation_text   EXPRESS-G

An annotation_text is a type of mapped_item. An annotation_text is the mapping of a text_string_representation which contains annotation_text_character, text_literal, composite_text, or annotation_text entities as a geometric_representation_item to present that text_string_representation as part of a picture. This structure allows an annotation_text to be a simple string of characters, a collection of strings, or a more complex collection of strings and characters.

EXPRESS specification:

*)
ENTITY annotation_text
  SUBTYPE OF (mapped_item);
  SELF\mapped_item.mapping_target : axis2_placement;
WHERE
  WR1: 'PRESENTATION_DEFINITION_SCHEMA.TEXT_STRING_REPRESENTATION' IN TYPEOF( SELF\mapped_item.mapping_source.mapped_representation);
  WR2: 'GEOMETRY_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF( SELF);
END_ENTITY;
(*

Attribute definitions:

mapping_target: an axis2_placement which positions and orients the annotation_text.

Formal propositions:

WR1: The mapped_representation shall be a text_string_representation.

WR2: An instance of annotation_text shall also be an instance of geometric_representation_item.

5.4.12 annotation_text_character   EXPRESS-G

An annotation_text_character is a type of mapped_item which has a character as its mapping_source. That character is a glyph that exists within a conforming exchange.

EXPRESS specification:

*)
ENTITY annotation_text_character
  SUBTYPE OF (mapped_item);
  alignment : text_alignment;
  SELF\mapped_item.mapping_target : axis2_placement;
WHERE
  WR1: 'PRESENTATION_RESOURCE_SCHEMA.CHARACTER_GLYPH_SYMBOL' IN TYPEOF (SELF\mapped_item.mapping_source.mapped_representation);
  WR2: 'GEOMETRY_SCHEMA.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF (SELF);
END_ENTITY;
(*

Attribute definitions:

alignment: the specification of the point by which the character is located.

mapping_target: an axis2_placement which is the target of the mapping transformation.

Formal propositions:

WR1: The source of the annotation_text_character shall be a character_glyph_symbol.

WR2: The annotation_text_character shall be a geometric_representation_item.

5.4.13 annotation_text_occurrence   EXPRESS-G

An annotation_text_occurrence is a type of annotation_occurrence An annotation_text_occurrence is a text_literal, annotation_text, annotation_text_character, defined_character_glyph, or composite_text with a style assignment.

EXPRESS specification:

*)
ENTITY annotation_text_occurrence
  SUBTYPE OF (annotation_occurrence);
  SELF\styled_item.item : annotation_text_occurrence_item;
END_ENTITY;
(*

Attribute definitions:

item: the annotation_text_occurrence_item, that is styled by the annotation_text_occurrence.

5.4.14 annotation_text_with_associated_curves   EXPRESS-G

An annotation_text_with_associated_curves is a type of annotation_text that contains one or more curves.

EXPRESS specification:

*)
ENTITY annotation_text_with_associated_curves
  SUBTYPE OF (annotation_text);
  associated_curves : SET[1:?] OF curve;
END_ENTITY;
(*

Attribute definitions:

associated_curves: a set of curves associated with the annotation_text.

NOTE    If the curves associated with an annotation_text_with_associated_curves are to be presented, then they may be assigned style by annotation_curve_occurrence.

5.4.15 annotation_text_with_blanking_box   EXPRESS-G

An annotation_text_with_blanking_box is a type of annotation_text that contains a blanking box.

EXPRESS specification:

*)
ENTITY annotation_text_with_blanking_box
  SUBTYPE OF (annotation_text);
  blanking : planar_box;
END_ENTITY;
(*

Attribute definitions:

blanking: a planar_box that defines a rectangular area within which only the annotation_text is presented.

5.4.16 annotation_text_with_delineation   EXPRESS-G

An annotation_text_with_delineation is a type of annotation_text that specifies the delineation of the text. The type of delineation and its effect on the appearance of the text is specified in an Application Protocol.

EXPRESS specification:

*)
ENTITY annotation_text_with_delineation
  SUBTYPE OF (annotation_text);
  delineation : text_delineation;
END_ENTITY;
(*

Attribute definitions:

delineation: the specification of the delineation to be applied to the text.

5.4.17 annotation_text_with_extent   EXPRESS-G

An annotation_text_with_extent is a type of annotation_text whose extent is explicitly specified.

EXPRESS specification:

*)
ENTITY annotation_text_with_extent
  SUBTYPE OF (annotation_text);
  extent : planar_extent;
END_ENTITY;
(*

Attribute definitions:

extent: the extent of the annotation_text in x and y directions of the local coordinate system defined by the placement attribute.

5.4.18 composite_text   EXPRESS-G

A composite_text is a type of geometric_representation_item. A composite_text is a collection of text_literal, annotation_text, annotation_text_character, defined_character_glyph, or other composite_text that may be placed and styled as a collection.

EXPRESS specification:

*)
ENTITY composite_text
  SUBTYPE OF (geometric_representation_item);
  collected_text : SET[2:?] OF text_or_character;
WHERE
  WR1: acyclic_composite_text( SELF, collected_text);
END_ENTITY;
(*

Attribute definitions:

collected_text: the set of text_literal, annotation_text, annotation_text_character, or other composite_text that may be placed and styled as a collection.

Formal propositions:

WR1: A composite text shall not participate in its own definition.

5.4.19 composite_text_with_associated_curves   EXPRESS-G

A composite_text_with_associated_curves is a type of composite_text that contains one or more curves.

EXPRESS specification:

*)
ENTITY composite_text_with_associated_curves
  SUBTYPE OF (composite_text);
  associated_curves : SET[1:?] OF curve;
END_ENTITY;
(*

Attribute definitions:

associated_curves: a set of curves associated with the composite_text.

NOTE    If the curves associated with a composite_text_with_associated_curves are to be presented, then they may be assigned style by annotation_curve_occurrence.

5.4.20 composite_text_with_blanking_box   EXPRESS-G

A composite_text_with_blanking_box is a type of composite_text that contains a blanking box.

EXPRESS specification:

*)
ENTITY composite_text_with_blanking_box
  SUBTYPE OF (composite_text);
  blanking : planar_box;
END_ENTITY;
(*

Attribute definitions:

blanking: a planar_box that defines a rectangular area within which only the composite_text is presented.

5.4.21 composite_text_with_delineation   EXPRESS-G

A composite_text_with_delineation is a type of composite_text that specifies the delineation of the text. The type of delineation and its effect on the appearance of the text is specified in an Application Protocol.

EXPRESS specification:

*)
ENTITY composite_text_with_delineation
  SUBTYPE OF (composite_text);
  delineation : text_delineation;
END_ENTITY;
(*

Attribute definitions:

delineation: the specification of the delineation to be applied to the text.

5.4.22 composite_text_with_extent   EXPRESS-G

A composite_text_with_extent is a type of composite_text whose extent is explicitly specified.

EXPRESS specification:

*)
ENTITY composite_text_with_extent
  SUBTYPE OF (composite_text);
  extent : planar_extent;
END_ENTITY;
(*

Attribute definitions:

extent: the extent in x and y directions of the composite_text_with_extent.

5.4.23 defined_character_glyph   EXPRESS-G

A defined_character_glyph is a type of geometric_representation_item. A defined_character_glyph is a character glyph that has an implicit definition, either through a pre_defined_character_glyph or an externally_defined_character_glyph.

EXPRESS specification:

*)
ENTITY defined_character_glyph
  SUBTYPE OF (geometric_representation_item);
  definition : defined_glyph_select;
  placement : axis2_placement;
END_ENTITY;
(*

Attribute definitions:

definition: an implicit description of a character glyph, either pre-defined or externally defined.

placement: a description of the placement and orientation of the character glyph.

5.4.24 defined_symbol   EXPRESS-G

A defined_symbol is a type of geometric_representation_item. A defined_symbol is a symbol that has an implicit definition, either through a pre_defined_symbol or an externally_defined_symbol.

EXPRESS specification:

*)
ENTITY defined_symbol
  SUBTYPE OF (geometric_representation_item);
  definition : defined_symbol_select;
  target : symbol_target;
END_ENTITY;
(*

Attribute definitions:

definition: an implicit description of a symbol, either pre-defined or externally defined.

target: a description of the scaling, placement, and orientation of the defined_symbol.

5.4.25 defined_table   EXPRESS-G

A defined_table is a type of defined_symbol that specifies an implicit definition of a table.

EXPRESS specification:

*)
ENTITY defined_table
  SUBTYPE OF (defined_symbol);
END_ENTITY;
(*

5.4.26 externally_defined_character_glyph   EXPRESS-G

An externally_defined_character_glyph is a type of externally_defined_item that makes an external reference to a character glyph.

EXPRESS specification:

*)
ENTITY externally_defined_character_glyph
  SUBTYPE OF (externally_defined_item);
END_ENTITY;
(*

5.4.27 externally_defined_symbol   EXPRESS-G

An externally_defined_symbol is a type of externally_defined_item that makes an external reference to a symbol.

EXPRESS specification:

*)
ENTITY externally_defined_symbol
  SUBTYPE OF (externally_defined_item);
END_ENTITY;
(*

5.4.28 pre_defined_character_glyph   EXPRESS-G

A pre_defined_character_glyph is a type of pre_defined_item. A pre_defined_character_glyph allows a conforming exchange to define an application-specific character glyph. The actual character glyph shall be defined by an Application Protocol.

EXPRESS specification:

*)
ENTITY pre_defined_character_glyph
  SUBTYPE OF (pre_defined_item);
END_ENTITY;
(*

5.4.29 pre_defined_symbol   EXPRESS-G

A pre_defined_symbol is a type of pre_defined_item. A pre_defined_symbol allows a conforming exchange to define an application-specific symbol. The actual symbol shall be defined by an Application Protocol.

EXPRESS specification:

*)
ENTITY pre_defined_symbol
  SUBTYPE OF (pre_defined_item);
END_ENTITY;
(*

5.4.30 symbol_representation   EXPRESS-G

A symbol_representation is a type of representation used in the assembly of a symbol. It allows also the definition of annotation_tables which are a specialization of annotation_symbols. The symbol_representations may only be related to each other using symbol_representation_relationships.

EXPRESS specification:

*)
ENTITY symbol_representation
  SUBTYPE OF (representation);
END_ENTITY;
(*

5.4.31 symbol_representation_map   EXPRESS-G

A symbol_representation_map is a type of representation_map which maps a symbol_representation to an annotation_symbol.

EXPRESS specification:

*)
ENTITY symbol_representation_map
  SUBTYPE OF (representation_map);
  SELF\representation_map.mapped_representation : symbol_representation;
  SELF\representation_map.mapping_origin : axis2_placement;
WHERE
  WR1: SIZEOF( QUERY(mi <* SELF\representation_map.map_usage | NOT('PRESENTATION_DEFINITION_SCHEMA.ANNOTATION_SYMBOL' IN TYPEOF(mi))) ) = 0;
END_ENTITY;
(*

Attribute definitions:

mapped_representation: the symbol_representation to be included in an annotation_symbol.

mapping_origin: an axis2_placement defining the origin of the mapping.

Formal propositions:

WR1: Each mapped_item that references a symbol_representation_map shall be an annotation_symbol.

5.4.32 symbol_representation_relationship   EXPRESS-G

A symbol_representation_relationship is a type of representation_relationship_with_transformation to relate symbol_representations in a hierarchical order.

EXPRESS specification:

*)
ENTITY symbol_representation_relationship
  SUBTYPE OF (representation_relationship_with_transformation);
  SELF\representation_relationship.rep_1 : symbol_representation;
  SELF\representation_relationship.rep_2 : symbol_representation;
WHERE
  WR1: acyclic_symbol_representation_relationship (SELF, [SELF\representation_relationship. rep_2]);
END_ENTITY;
(*

Attribute definitions:

rep_1: a symbol_representation that plays the role of a parent (root) in a tree of symbol_representations.

rep_2: a symbol_representation that plays the role of a child (leaf) in a tree of symbol_representations.

Formal propositions:

WR1: A symbol_representation_relationship shall not participate in a tree of symbol_representations where the root of the tree is also a leaf of its own tree.

5.4.33 symbol_representation_with_blanking_box   EXPRESS-G

A symbol_representation_with_blanking_box is a type of symbol_representation that includes a box which blanks out all other elements in the box.

EXPRESS specification:

*)
ENTITY symbol_representation_with_blanking_box
  SUBTYPE OF (symbol_representation);
  blanking : planar_box;
WHERE
  WR1: item_in_context (blanking, SELF\representation.context_of_items);
END_ENTITY;
(*

Attribute definitions:

blanking: a box which blanks out any element in the box with exception of the symbol itself.

Formal propositions:

WR1: The blanking box shall be in the context_of_items.

5.4.34 symbol_target   EXPRESS-G

A symbol_target is a type of geometric_representation_item. A symbol_target is the target of the transformation which determines the location and orientation of a symbol_representation used as an annotation_symbol, or the target of a defined_symbol. It consists of an oriented position and a scaling in x and y.

EXPRESS specification:

*)
ENTITY symbol_target
  SUBTYPE OF (geometric_representation_item);
  placement : axis2_placement;
  x_scale : positive_ratio_measure;
  y_scale : positive_ratio_measure;
END_ENTITY;
(*

Attribute definitions:

placement: the location and orientation of a symbol_representation or of a defined_symbol used as an annotation_symbol.

x_scale: the scale applied to the x coordinates of the symbol_representation or of the defined_symbol.

y_scale: the scale applied to the y coordinates of the symbol_representation or of the defined_symbol.

5.4.35 table_record_field_representation   EXPRESS-G

A table_record_field_representation is a type of symbol_representation used for creating fields within records of a table. The table_record_field_representations may only be related by table_representation_relationship entities. If a table_record_field_representation plays the role of rep_1 in a table_representation_relationship, only a table_record_field_representation may play the role of rep_2.

EXPRESS specification:

*)
ENTITY table_record_field_representation
  SUBTYPE OF (symbol_representation);
WHERE
  WR1: (SIZEOF(USEDIN(SELF, 'REPRESENTATION_SCHEMA.'+ 'REPRESENTATION_RELATIONSHIP.REP_2')) > 0) OR (SIZEOF(QUERY( map_item <* USEDIN(SELF, 'REPRESENTATION_SCHEMA.'+ 'REPRESENTATION_MAP.'+ 'MAPPED_REPRESENTATION') | SIZEOF(QUERY( mi <* USEDIN(map_item, 'REPRESENTATION_SCHEMA.'+ 'MAPPED_ITEM.'+ 'MAPPING_SOURCE') | SIZEOF(QUERY( rep <* using_representations (mi) | 'PRESENTATION_DEFINITION_SCHEMA.'+ 'TABLE_RECORD_REPRESENTATION' IN TYPEOF (rep))) > 0 )) > 0)) > 0);
END_ENTITY;
(*

Formal propositions:

WR1: Either a table_record_field_representation shall be used as a rep_2 in a table_representation_relationship, or it shall be mapped into a table_record_representation.

5.4.36 table_record_field_representation_with_clipping_box   EXPRESS-G

A table_record_field_representation_with_clipping_box is a type of table_record_field_representation which includes a clipping box to blank out all elements outside of the box.

EXPRESS specification:

*)
ENTITY table_record_field_representation_with_clipping_box
  SUBTYPE OF (table_record_field_representation);
  clipping_box : planar_box;
WHERE
  WR1: item_in_context (clipping_box, SELF\representation.context_of_items);
END_ENTITY;
(*

Attribute definitions:

clipping_box: a planar_box that defines the boundary for clipping the contents of the table_record_field_representation.

Formal propositions:

WR1: The clipping_box shall be in the same context as the table_record_field_representation_with_clipping_box.

5.4.37 table_record_representation   EXPRESS-G

A table_record_representation is a type of symbol_representation used for creating records within tables. Two table_record_representations may only be related by table_representation_relationships. If a table_record_representation plays the role of rep_1 in a table_representation_relationship, only a table_record_field_representation may play the role of rep_2.

EXPRESS specification:

*)
ENTITY table_record_representation
  SUBTYPE OF (symbol_representation);
WHERE
  WR1: (SIZEOF(USEDIN(SELF, 'REPRESENTATION_SCHEMA.'+ 'REPRESENTATION_RELATIONSHIP.REP_2')) > 0) OR (SIZEOF(QUERY( map_item <* USEDIN(SELF, 'REPRESENTATION_SCHEMA.'+ 'REPRESENTATION_MAP.'+ 'MAPPED_REPRESENTATION') | SIZEOF(QUERY( mi <* USEDIN(map_item, 'REPRESENTATION_SCHEMA.'+ 'MAPPED_ITEM.'+ 'MAPPING_SOURCE') | SIZEOF(QUERY( rep <* using_representations (mi) | 'PRESENTATION_DEFINITION_SCHEMA.'+ 'TABLE_REPRESENTATION' IN TYPEOF (rep))) > 0 )) > 0)) > 0);
  WR2: (SIZEOF (QUERY (trr <* USEDIN (SELF, 'REPRESENTATION_SCHEMA.' + 'REPRESENTATION_RELATIONSHIP.REP_1') | NOT ('PRESENTATION_DEFINITION_SCHEMA.TABLE_REPRESENTATION_RELATIONSHIP' IN TYPEOF (trr)) )) = 0) AND (SIZEOF (QUERY (trr <* USEDIN (SELF, 'REPRESENTATION_SCHEMA.' + 'REPRESENTATION_RELATIONSHIP.REP_2') | NOT ('PRESENTATION_DEFINITION_SCHEMA.TABLE_REPRESENTATION_RELATIONSHIP' IN TYPEOF (trr)) )) = 0);
END_ENTITY;
(*

Formal propositions:

WR1: Either a table_record_representation shall be used as a rep_2 in a table_representation_relationship, or it shall be mapped into a table_representation.

WR2: All users of type representation_relationship in role rep_1 or rep_2 shall be of type table_representation_relationship.

5.4.38 table_representation   EXPRESS-G

A table_representation is a type of symbol_representation used for creating tables. The table_representations may only be related with table_representation_relationship entities. If a table_representation plays the role of rep_1 in a table_representation_relationship, only a table_record_representation may play the role of rep_2.

EXPRESS specification:

*)
ENTITY table_representation
  SUBTYPE OF (symbol_representation);
WHERE
  WR1: (SIZEOF (QUERY (trr <* USEDIN (SELF, 'REPRESENTATION_SCHEMA.' + 'REPRESENTATION_RELATIONSHIP.REP_1') | NOT ('PRESENTATION_DEFINITION_SCHEMA.TABLE_REPRESENTATION_RELATIONSHIP' IN TYPEOF (trr)) )) = 0) AND (SIZEOF (QUERY (trr <* USEDIN (SELF, 'REPRESENTATION_SCHEMA.' + 'REPRESENTATION_RELATIONSHIP.REP_2') | NOT ('PRESENTATION_DEFINITION_SCHEMA.TABLE_REPRESENTATION_RELATIONSHIP' IN TYPEOF (trr)) )) = 0);
END_ENTITY;
(*

Formal propositions:

WR1: All users of representation_relationship in role rep_1 and rep_2 shall be of type table_representation_relationship.

5.4.39 table_representation_relationship   EXPRESS-G

A table_representation_relationship is a type of symbol_representation_relationship used to relate table_representations, table_record_representations, and table_record_field_representations.

EXPRESS specification:

*)
ENTITY table_representation_relationship
  SUBTYPE OF (symbol_representation_relationship);
WHERE
  WR1: NOT ('PRESENTATION_DEFINITION_SCHEMA.TABLE_RECORD_REPRESENTATION' IN TYPEOF (SELF\representation_relationship.rep_1)) OR ('PRESENTATION_DEFINITION_SCHEMA.TABLE_RECORD_FIELD_REPRESENTATION' IN TYPEOF (SELF\representation_relationship.rep_2));
  WR2: NOT ('PRESENTATION_DEFINITION_SCHEMA.TABLE_REPRESENTATION' IN TYPEOF (SELF\representation_relationship.rep_1)) OR ('PRESENTATION_DEFINITION_SCHEMA.TABLE_RECORD_REPRESENTATION' IN TYPEOF (SELF\representation_relationship.rep_2));
  WR3: NOT ('PRESENTATION_DEFINITION_SCHEMA.TABLE_RECORD_FIELD_REPRESENTATION' IN TYPEOF (SELF\representation_relationship.rep_1)) OR ('PRESENTATION_DEFINITION_SCHEMA.TABLE_RECORD_FIELD_REPRESENTATION' IN TYPEOF (SELF\representation_relationship.rep_2));
END_ENTITY;
(*

Formal propositions:

WR1: If rep_1 is a table_record_representation, then rep_2 shall be a table_record_field_representation.

WR2: If rep_1 is a table_representation, then rep_2 shall be a table_record_representation.

WR3: If rep_1 is a table_record_field_representation, then rep_2 shall be a table_record_field_representation.

5.4.40 table_text_relationship   EXPRESS-G

A table_text_relationship is a type of annotation_occurrence_relationship A table_text_relationship establishes a relationship between a field in an annotation_table_occurrence and an annotation_text_occurrence. It is used to include text in a field of a table.

EXPRESS specification:

*)
ENTITY table_text_relationship
  SUBTYPE OF (annotation_occurrence_relationship);
  field : table_record_field_representation;
  SELF\annotation_occurrence_relationship.relating_annotation_occurrence : annotation_table_occurrence;
  SELF\annotation_occurrence_relationship.related_annotation_occurrence : annotation_text_occurrence;
WHERE
  WR1: 'PRESENTATION_DEFINITION_SCHEMA.ANNOTATION_TABLE' IN TYPEOF (SELF\annotation_occurrence_relationship. relating_annotation_occurrence\styled_item.item);
  WR2: field_in_table (field, SELF\annotation_occurrence_relationship. relating_annotation_occurrence);
END_ENTITY;
(*

Attribute definitions:

field: the particular field in the table in which the text is positioned.

relating_annotation_occurrence: the annotation_table_occurrence in which text is positioned.

related_annotation_occurrence: the annotation_text_occurrence positioned in the table.

Formal propositions:

WR1: The relating_annotation_occurrence shall present an annotation_table.

WR2: The field shall be a field in the table in which the text is positioned.

5.4.41 text_literal   EXPRESS-G

A text_literal is a type of geometric_representation_item. A text_literal is a definition of a text string using a string literal.

EXPRESS specification:

*)
ENTITY text_literal
  SUBTYPE OF (geometric_representation_item);
  literal : presentable_text;
  placement : axis2_placement;
  alignment : text_alignment;
  path : text_path;
  font : font_select;
END_ENTITY;
(*

Attribute definitions:

literal: the text literal to be presented.

placement: an axis2_placement which determines the position and orientation of the presented string. The y axis is taken as reference direction for box_rotate_angle and box_slant_angle.

NOTE    If both box_rotate_angle and box_slant_angle are zero the baseline of each character box is parallel to the x axis and the upright direction of each character box is parallel to the y axis. See figure 17.



Figure 17 —  Box slant and rotate angle

Figure 17 —  Box slant and rotate angle

alignment: the alignment of the text literal relative to its position.

path: the writing direction of the text literal.

font: the pre-defined or externally defined font which shall be used for presenting the text_literal.

5.4.42 text_literal_with_associated_curves   EXPRESS-G

A text_literal_with_associated_curves is a type of text_literal that contains one or more curves.

EXPRESS specification:

*)
ENTITY text_literal_with_associated_curves
  SUBTYPE OF (text_literal);
  associated_curves : SET[1:?] OF curve;
END_ENTITY;
(*

Attribute definitions:

associated_curves: a set of curves associated with the text_literal.

NOTE    If the curves associated with a text_literal_with_associated_curves are to be presented, then they may be assigned style by annotation_curve_occurrence.

5.4.43 text_literal_with_blanking_box   EXPRESS-G

A text_literal_with_blanking_box is a type of text_literal that contains a blanking box.

EXPRESS specification:

*)
ENTITY text_literal_with_blanking_box
  SUBTYPE OF (text_literal);
  blanking : planar_box;
END_ENTITY;
(*

Attribute definitions:

blanking: a planar_box that defines a rectangular area within which only the text_literal is presented.

5.4.44 text_literal_with_delineation   EXPRESS-G

A text_literal_with_delineation is a type of text_literal that specifies the delineation of the text. The type of delineation and its effect on the appearance of the text is specified in an Application Protocol.

EXPRESS specification:

*)
ENTITY text_literal_with_delineation
  SUBTYPE OF (text_literal);
  delineation : text_delineation;
END_ENTITY;
(*

Attribute definitions:

delineation: the specification of the delineation to be applied to the text.

5.4.45 text_literal_with_extent   EXPRESS-G

A text_literal_with_extent is a type of text_literal whose extent is explicitly specified.

EXPRESS specification:

*)
ENTITY text_literal_with_extent
  SUBTYPE OF (text_literal);
  extent : planar_extent;
END_ENTITY;
(*

Attribute definitions:

extent: the extent in x and y direction of the text_literal.

5.4.46 text_string_representation   EXPRESS-G

A text_string_representation is a type of representation which has a collection of text strings and characters to be mapped to an annotation_text entity.

EXPRESS specification:

*)
ENTITY text_string_representation
  SUBTYPE OF (representation);
  SELF\representation.items : SET[1:?] OF text_string_representation_item;
WHERE
  WR1: SIZEOF ( QUERY (item <* SELF\representation.items | NOT (SIZEOF (['PRESENTATION_DEFINITION_SCHEMA.TEXT_LITERAL', 'PRESENTATION_DEFINITION_SCHEMA.ANNOTATION_TEXT', 'PRESENTATION_DEFINITION_SCHEMA.ANNOTATION_TEXT_CHARACTER', 'PRESENTATION_DEFINITION_SCHEMA.DEFINED_CHARACTER_GLYPH', 'PRESENTATION_DEFINITION_SCHEMA.COMPOSITE_TEXT'] * TYPEOF (item)) = 0) )) >= 1;
  WR2: SIZEOF ( QUERY (a2p <* QUERY (item <* SELF\representation.items | 'GEOMETRY_SCHEMA.AXIS2_PLACEMENT' IN TYPEOF (item)) | NOT ((SIZEOF ( QUERY (at <* QUERY (item <* SELF\representation.items | 'PRESENTATION_DEFINITION_SCHEMA.' + 'ANNOTATION_TEXT' IN TYPEOF (item)) | (at\mapped_item.mapping_target :=: a2p))) >= 1) OR (SIZEOF ( QUERY (atc <* QUERY (item <* SELF\representation.items | 'PRESENTATION_DEFINITION_SCHEMA.' + 'ANNOTATION_TEXT_CHARACTER' IN TYPEOF (item)) | (atc\mapped_item.mapping_target :=: a2p))) >= 1) ))) = 0;
END_ENTITY;
(*

Attribute definitions:

items: a set of text_string_representation_items that the text_string_representation is a collection of.

Formal propositions:

WR1: The text_string_representation shall contain one or more annotation_text, annotation_text_character, text_literal, or composite_text.

WR2: Each axis2_placement shall be the mapping_target of an annotation_text or an annotation_text_character in the text_string_representation.

5.5 presentation_definition_schema subtype constraint definition

5.5.1 pds_geometric_representation_item_subtypes   EXPRESS-G

A pds_geometric_representation_item_subtypes is a constraint, that specifies a constraint that applies to instances of subtypes of geometric_representation_item.

EXPRESS specification:

*)
SUBTYPE_CONSTRAINT pds_geometric_representation_item_subtypes FOR geometric_representation_item;
  ONEOF (annotation_fill_area,
         composite_text,
         curve,
         defined_character_glyph,
         defined_symbol,
         point,
         symbol_target,
         text_literal);
END_SUBTYPE_CONSTRAINT;
(*

5.6 presentation_definition_schema function definitions

5.6.1 acyclic_composite_text

The acyclic_composite_text function examines a composite_text instance to see if it participates in its own definition. It returns TRUE if the composite_text instance is acyclic (does not participate in its own definition) and FALSE if it is cyclic (does participate in its own definition).

The function first checks to see if it is among its own collected_text set, and returns FALSE if it is.

Next, it creates a local set of all instances of composite_text in its own collected_text set. It then adds to this set all of the instances of composite_text that are referenced by the text_string_representation used by the representation_map used by any annotation_text in its own collected_text set. This local set is added to the set of instances already examined. If the set of instances already examined does not increase in size, then all possibilities have been examined and the function returns TRUE. Otherwise, the function is then called recursively to check further.

EXPRESS specification:

*)
FUNCTION acyclic_composite_text (start_composite : composite_text; child_text : SET[1:?] OF text_or_character) : LOGICAL;
LOCAL
      i : INTEGER;
      local_composite_text : SET [0:?] OF composite_text;
      local_annotation_text : SET [0:?] OF annotation_text;
      local_children : SET [0:?] OF text_or_character;
    END_LOCAL;

    local_composite_text := QUERY (child <* child_text |
                          ('PRESENTATION_DEFINITION_SCHEMA.COMPOSITE_TEXT'
                           IN TYPEOF (child)));

    IF (SIZEOF (local_composite_text) > 0)
      THEN
        REPEAT i := 1 TO HIINDEX (local_composite_text);
          IF (start_composite :=: local_composite_text[i])
            THEN
              RETURN (FALSE);
          END_IF;
        END_REPEAT;
    END_IF;

    local_children := child_text;

    IF (SIZEOF (local_composite_text)) > 0 THEN
      REPEAT i := 1 TO HIINDEX (local_composite_text);
        local_children := local_children +
                          local_composite_text[i].collected_text;
      END_REPEAT;
    END_IF;

    local_annotation_text := QUERY (child <* child_text |
                            ('PRESENTATION_DEFINITION_SCHEMA.ANNOTATION_TEXT'
                             IN TYPEOF (child)));

    IF (SIZEOF (local_annotation_text) > 0) THEN
      REPEAT i := 1 TO HIINDEX (local_annotation_text);
        local_children := local_children +
        QUERY (item <* local_annotation_text[i]\mapped_item.
                       mapping_source.mapped_representation.items |
          SIZEOF(['PRESENTATION_DEFINITION_SCHEMA.ANNOTATION_TEXT',
                  'PRESENTATION_DEFINITION_SCHEMA.COMPOSITE_TEXT'] *
                  TYPEOF(item)) > 0);
      END_REPEAT;
    END_IF;

    IF (local_children :<>: child_text) THEN
      RETURN (acyclic_composite_text (start_composite, local_children));
    ELSE
      RETURN (TRUE);
    END_IF;
END_FUNCTION;
(*

Argument definitions:

start_composite: the composite_text which is tested. This is input to the function.

child_text: the text_or_characters referenced by start_composite. This is input to the function. On initial input this set contains as its only element the collected_text of the start_composite.

5.6.2 acyclic_symbol_representation_relationship

The acyclic_symbol_representation_relationship function determines if a symbol_representation is used in the tree of symbol_representation_relationships that defines this symbol_representation. It returns TRUE if it is not acyclic, and FALSE if there is.

EXPRESS specification:

*)
FUNCTION acyclic_symbol_representation_relationship (relation : symbol_representation_relationship; children : SET[0:?] OF symbol_representation) : BOOLEAN;
LOCAL
      x : SET OF symbol_representation_relationship;
      local_children : SET OF symbol_representation;
    END_LOCAL;

    REPEAT i:=1 TO HIINDEX(children);
      IF relation\representation_relationship.rep_1 :=: children[i] THEN
        RETURN(FALSE);
      END_IF;
    END_REPEAT;

    x := bag_to_set (USEDIN ( relation\representation_relationship.rep_1,
                  'REPRESENTATION_SCHEMA.'+
                  'REPRESENTATION_RELATIONSHIP.'+ 'REP_2'));
    local_children := children + relation\representation_relationship.rep_1;

    IF SIZEOF (x) > 0 THEN
      REPEAT i:=1 TO HIINDEX (x);
        IF NOT acyclic_symbol_representation_relationship(x[i] ,
                                                  local_children) THEN
          RETURN (FALSE);
        END_IF;
      END_REPEAT;
    END_IF;

    RETURN (TRUE);
END_FUNCTION;
(*

Argument definitions:

relation: the symbol_representation_relationship which is tested. This is input to the function.

children: the symbol_representations referenced by relation. This is input to the function. On initial input this set contains as only element the rep_2 of the relation.

5.6.3 control_characters_free

The control_characters_free is a function that examines a string for the occurrence of control characters. It returns true if no control character is found in the string.

EXPRESS specification:

*)
FUNCTION control_characters_free (s : STRING) : BOOLEAN;
LOCAL
      ch : STRING;
    END_LOCAL;

    REPEAT i:=1 TO LENGTH(s);
      ch := s[i];
      IF (ch = '\x9') OR (ch = '\xA') OR (ch = '\xD') THEN
        RETURN(FALSE);
      END_IF;
    END_REPEAT;
    RETURN (TRUE);
END_FUNCTION;
(*

Argument definitions:

s: the string that is examined for control characters.

5.6.4 field_in_table

The field_in_table function is a function that examines a table_record_field_representation and an annotation_table_occurrence, and returns the value TRUE if the field is in the table, and FALSE if the field is not in the table.

The function first finds the table_representation that the annotation_table_occurrence maps.

It then finds all the table_record_representations which are either related to the table_representation entity by a symbol_representation_relationship or are included in the table_representation through a mapped_item.

Finally, it returns FALSE if there are no table_record_representation entities which relate to the field by a symbol_representation_relationship or include the field through a mapped_item, and returns TRUE otherwise.

EXPRESS specification:

*)
FUNCTION field_in_table (field : table_record_field_representation; table : annotation_table_occurrence) : BOOLEAN;
LOCAL
      table_rep : table_representation;
      symbol_rep_rel_set : SET OF symbol_representation_relationship;
      mapped_item_set : SET OF mapped_item;
      table_record_rep_set : SET OF table_record_representation := [];
    END_LOCAL;

    table_rep := table\styled_item.item\mapped_item.mapping_source.
      mapped_representation;
    mapped_item_set := QUERY(item <* table_rep.items |
                         ('REPRESENTATION_SCHEMA.MAPPED_ITEM' IN
                          TYPEOF(item))
                                   AND
                         ('PRESENTATION_DEFINITION_SCHEMA.'+
                          'TABLE_RECORD_REPRESENTATION' IN
                           TYPEOF(item\mapped_item.mapping_source.
                                      mapped_representation ))
                       );

    REPEAT i := 1 TO HIINDEX(mapped_item_set);
      table_record_rep_set := table_record_rep_set +
             mapped_item_set[i].mapping_source.mapped_representation;
    END_REPEAT;

    symbol_rep_rel_set := bag_to_set (USEDIN(table_rep,
                                 'REPRESENTATION_SCHEMA.'+
                                 'REPRESENTATION_RELATIONSHIP.REP_1'));

    REPEAT i := 1 TO HIINDEX(symbol_rep_rel_set);
       table_record_rep_set := table_record_rep_set +
                symbol_rep_rel_set[i]\representation_relationship.rep_2;
    END_REPEAT;

    IF SIZEOF(QUERY( table_record_rep <* table_record_rep_set |
                (SIZEOF(QUERY( rep_rel <* USEDIN(table_record_rep,
                              'REPRESENTATION_SCHEMA.'+
                              'REPRESENTATION_RELATIONSHIP.REP_1') |
                         ('PRESENTATION_DEFINITION_SCHEMA.' +
                         'SYMBOL_REPRESENTATION_RELATIONSHIP' IN TYPEOF(rep_rel)) AND
                         (rep_rel.rep_2 :=: field)
                         )) > 0)
                         OR
                (SIZEOF(QUERY(item <* table_record_rep.items |
                          ('REPRESENTATION_SCHEMA.MAPPED_ITEM' IN
                           TYPEOF(item))
                                   AND
                          (field :=: item\mapped_item.mapping_source.
                                      mapped_representation )
                           )) > 0)
               )) = 0 THEN
      RETURN(FALSE);
    END_IF;

    RETURN(TRUE);
END_FUNCTION;
(*

Argument definitions:

field: the table record field which shall be in the table. This is input to the function.

table: the annotation table which shall contain the field. This is input to the function.



*)
END_SCHEMA;  -- presentation_definition_schema
(*


© ISO 2021 — All rights reserved