Integrated generic resource: Visual presentation | ISO 10303-46:2021(E) © ISO |
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.
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.
EXPRESS specification:
*)
TYPE
annotation_symbol_occurrence_item
=
SELECT
(annotation_symbol,
defined_symbol);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
annotation_table_occurrence_item
=
SELECT
(annotation_table,
defined_table);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
annotation_text_occurrence_item
=
SELECT
(text_literal,
annotation_text,
annotation_text_character,
defined_character_glyph,
composite_text);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
curve_or_curve_set
=
SELECT
(curve,
geometric_curve_set);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
defined_glyph_select
=
SELECT
(pre_defined_character_glyph,
externally_defined_character_glyph);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
defined_symbol_select
=
SELECT
(pre_defined_symbol,
externally_defined_symbol);
END_TYPE;
(*
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.
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.
EXPRESS specification:
*)
TYPE
text_alignment
=
label;
END_TYPE;
(*
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.
EXPRESS specification:
*)
TYPE
text_delineation
=
label;
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
text_or_character
=
SELECT
(annotation_text,
annotation_text_character,
defined_character_glyph,
composite_text,
text_literal);
END_TYPE;
(*
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.
EXPRESS specification:
*)
TYPE
text_string_representation_item
=
SELECT
(text_literal,
annotation_text,
annotation_text_character,
defined_character_glyph,
composite_text,
axis2_placement);
END_TYPE;
(*
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.
NOTE 1 see figure 15 a).
NOTE 2 see figure 15 b).
NOTE 3 see figure 15 c).
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.
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.
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.
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.
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.
NOTE Figure 16 shows 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
EXPRESS specification:
*)
ENTITY defined_table
SUBTYPE OF (defined_symbol);
END_ENTITY;
(*
EXPRESS specification:
*)
ENTITY externally_defined_character_glyph
SUBTYPE OF (externally_defined_item);
END_ENTITY;
(*
EXPRESS specification:
*)
ENTITY externally_defined_symbol
SUBTYPE OF (externally_defined_item);
END_ENTITY;
(*
EXPRESS specification:
*)
ENTITY pre_defined_character_glyph
SUBTYPE OF (pre_defined_item);
END_ENTITY;
(*
EXPRESS specification:
*)
ENTITY pre_defined_symbol
SUBTYPE OF (pre_defined_item);
END_ENTITY;
(*
EXPRESS specification:
*)
ENTITY symbol_representation
SUBTYPE OF (representation);
END_ENTITY;
(*
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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;
(*
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.
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.
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.
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