CEN CWA 15556-2

WORKSHOP June 2006

AGREEMENT

ICS 35.240.50

English version

Product Description and Classification - Part 2: Product Classes with sets of properties

This CEN Workshop Agreement has been drafted and approved by a Workshop of representatives of interested parties, the constitution of which is indicated in the foreword of this Workshop Agreement.

The formal process followed by the Workshop in the development of this Workshop Agreement has been endorsed by the National Members of CEN but neither the National Members of CEN nor the CEN Management Centre can be held accountable for the technical content of this CEN Workshop Agreement or possible conflicts with standards or legislation.

This CEN Workshop Agreement can in no way be held as being an official standard developed by CEN and its Members.

This CEN Workshop Agreement is publicly available as a reference document from the CEN Members National Standard Bodies.

CEN members are the national standards bodies of Austria, Belgium, Cyprus, Czech Republic, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Iceland, Ireland, Italy, Latvia, Lithuania, Luxembourg, Malta, Netherlands, Norway, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden, Switzerland and United Kingdom.

EUROPEAN COMMITTEE FOR STANDARDIZATION COMITÉ EUROPÉEN DE NORMALISATION EUROPÄISCHES KOMITEE FÜR NORMUNG

Management Centre: rue de Stassart, 36 B-1050 Brussels

© 2006 CEN All rights of exploitation in any form and by any means reserved worldwide for CEN national Members.

Ref. No.:CWA 15556-2:2006 E CWA 15556-2:2006 (E)

Contents Page

Introduction...... 13 Terms and definitions from ISO 10303-1...... 18 Terms and definitions from ISO 13584-1...... 18 Terms and definitions from ISO 13584-10...... 19 Other terms and definitions...... 19 Simultaneous description of families of parts and parts properties ...... 21 Applicable and visible properties...... 21 Purpose of the standardised identification hierarchy ...... 22 Use of the standardised identification hierarchy ...... 22 Class valued property...... 22 Extensions of the common dictionary schema addressing IEC 61360 needs ...... 22 Extension of the common dictionary schema addressing ISO 13584 needs...... 22 Compatibility between IEC 61360 and ISO 13584 ...... 23 Choice of family hierarchy...... 24 Field of application ...... 24 Upper section of the hierarchy ...... 24 Lower section of the hierarchy ...... 24 Simple family of parts...... 24 Multiple perspectives on the hierarchy...... 25 Association of properties...... 25 Properties to be considered ...... 25 Semantic identification of properties ...... 25 Factoring rule ...... 26 Mapping of properties onto the common dictionary schema ...... 26 Attributes ...... 27 Code...... 28 Definition Class ...... 28 Data Type...... 28 Preferred Name ...... 29 Short Name...... 29 Preferred Letter Symbol...... 29 Synonymous Letter Symbol ...... 29 Synonymous Name...... 30 Property Type Classification ...... 30 Definition ...... 30 Source Document of Definition ...... 31 Note...... 31 Remark ...... 31 Unit...... 31 Condition ...... 32 Formula...... 32 Value Format ...... 32 Date of Original Definition ...... 34 Date of Current Version ...... 34 Date of Current Revision...... 34 Version Number ...... 34 Revision Number ...... 35 Rules for defining new versions and/or revision of properties...... 35 Changes in the attribute of properties...... 35 Propagated changes in property version numbers ...... 36 Mapping of families onto the common dictionary schema ...... 37

2 CWA 15556-2:2006 (E)

Attributes ...... 37 Code...... 38 Superclass ...... 38 Preferred Name ...... 39 Short Name...... 39 Synonymous name ...... 39 Visible Types...... 40 Applicable Types...... 40 Sub-class Selection Properties ...... 40 Visible Properties ...... 41 Applicable Properties ...... 41 Class Value Assignement ...... 41 Definition ...... 42 Source Document of Definition ...... 42 Note...... 42 Remark ...... 42 Simplified Drawing ...... 43 Date of Original Definition ...... 43 Date of Current Version ...... 43 Date of Current Revision...... 43 Version Number ...... 44 Revision Number ...... 44 Rules for defining new version or revision of classes ...... 44 Change in the attribute of class ...... 44 Propagated changes in family version numbers ...... 45

Annex A (normative) Survey of type classification codes of non-quantitative data element types...... 48

(main class A) ...... 48

Annex B (normative) Short names of entities...... 49

Annex C (normative) Information object registration...... 51

C.1 Document identification ...... 51

C.2 Schema identification...... 51 C.2.1 ISO13584_IEC61360_dictionary_schema ...... 51 C.2.2 ISO13584_IEC61360_language_resource_schema...... 51

Annex D (informative) Common IEC/ISO dictionary schema ...... 52

D.1 General...... 52 D.1.1 Scope and object of the common dictionary schema...... 52 D.1.2 Interoperability of ISO 13584 and IEC 61360...... 52

D.2 Overview of the dictionary schema...... 53

D.3 ISO13584_IEC61360_dictionary_schema...... 54 D.3.1 References to other schemata ...... 54 D.3.2 Constant definitions ...... 55 D.3.3 Basic Semantic Units: defining and using the dictionary...... 55 D.3.3.1 Requirements for exchange ...... 55 D.3.3.2 Three levels architecture of the dictionary data...... 56 D.3.3.2.1 Basic_semantic_unit ...... 57 D.3.3.2.2 Dictionary_element...... 58 D.3.3.2.3 Content_item ...... 59 D.3.3.3 Overview of basic semantic units and dictionary elements ...... 59 D.3.3.4 Identification of dictionary elements: three levels structure...... 60 D.3.3.5 Extension possibilities for other types of data ...... 60 D.3.3.5.1 Supplier_related_BSU...... 60 D.3.3.5.2 Class_related_BSU...... 61

3 CWA 15556-2:2006 (E)

D.3.3.5.3 Supplier_BSU_relationship ...... 61 D.3.3.5.4 Class_BSU_relationship...... 61 D.3.4 Supplier Data...... 62 D.3.4.1 Supplier_BSU ...... 62 D.3.4.2 Supplier_element...... 63 D.3.5 Class Data ...... 63 D.3.5.1 General...... 63 D.3.5.1.1 Class_BSU...... 64 D.3.5.1.2 Class_and_property_elements...... 66 D.3.5.1.3 Class ...... 66 D.3.5.2 Item_class ...... 68 D.3.5.3 Component_class...... 70 D.3.5.4 Material_class...... 70 D.3.6 Data Element Type / properties data...... 70 D.3.6.1 Property_BSU...... 70 D.3.6.2 Property_DET...... 71 D.3.6.3 Condition, dependent and non-dependent Data Element Types...... 72 D.3.6.3.1 Condition_DET ...... 73 D.3.6.3.2 Dependent_P_DET ...... 73 D.3.6.3.3 Non_dependent_P_DET ...... 73 D.3.6.4 Class-valued properties...... 74 D.3.7 Domain data: the type system ...... 75 D.3.7.1 General...... 75 D.3.7.1.1 Data_type_BSU...... 75 D.3.7.1.2 Data_type_element ...... 76 D.3.7.2 The type system ...... 77 D.3.7.2.1 Data_type ...... 77 D.3.7.2.2 Simple_type...... 77 D.3.7.2.3 Number_type...... 78 D.3.7.2.4 Int_type...... 78 D.3.7.2.5 Int_measure_type...... 78 D.3.7.2.6 Int_currency_type...... 78 D.3.7.2.7 Non_quantitative_int_type...... 79 D.3.7.2.8 Real_type ...... 79 D.3.7.2.9 Real_measure_type ...... 80 D.3.7.2.10 Real_currency_type...... 80 D.3.7.2.11 Boolean_type...... 80 D.3.7.2.12 String_type ...... 80 D.3.7.2.13 Non_quantitative_code_type...... 81 D.3.7.2.14 Complex_type ...... 81 D.3.7.2.15 Level_type ...... 81 D.3.7.2.16 Level...... 82 D.3.7.2.17 Class_instance_type ...... 82 D.3.7.2.18 Entity_instance_type ...... 83 D.3.7.2.19 Placement_type...... 83 D.3.7.2.20 Axis1_placement_type ...... 83 D.3.7.2.21 Axis2_placement_2d_type ...... 84 D.3.7.2.22 Axis2_placement_3d_type ...... 84 D.3.7.2.23 Named_type ...... 85 D.3.7.3 Values...... 85 D.3.7.3.1 Value_domain ...... 85 D.3.7.3.2 Value_type...... 86 D.3.7.3.3 Dic_value...... 86 D.3.7.4 Extension to ISO 10303-41 unit definitions ...... 87 D.3.7.4.1 Non_si_unit ...... 87 D.3.7.4.2 Assert_ONEOF rule ...... 87 D.3.7.4.3 Dic_unit ...... 88 D.3.8 Basic type and entity definitions ...... 88 D.3.8.1 Basic type definitions...... 89 D.3.8.1.1 Class_code_type...... 89 D.3.8.1.2 Code_type ...... 89

4 CWA 15556-2:2006 (E)

D.3.8.1.3 Currency_code ...... 89 D.3.8.1.4 Data_type_code_type...... 90 D.3.8.1.5 Date_type ...... 90 D.3.8.1.6 Definition_type...... 90 D.3.8.1.7 DET_classification_type...... 91 D.3.8.1.8 Note_type ...... 91 D.3.8.1.9 Pref_name_type...... 91 D.3.8.1.10 Property_code_type ...... 91 D.3.8.1.11 Remark_type...... 92 D.3.8.1.12 Revision_type...... 92 D.3.8.1.13 Short_name_type ...... 92 D.3.8.1.14 Supplier_code_type...... 93 D.3.8.1.15 Syn_name_type...... 93 D.3.8.1.16 Value_code_type...... 93 D.3.8.1.17 Value_format_type ...... 94 D.3.8.1.18 Version_type ...... 94 D.3.8.1.19 Source_doc_type ...... 94 D.3.8.2 Basic entity definitions ...... 95 D.3.8.2.1 Dates...... 95 D.3.8.2.2 Document...... 95 D.3.8.2.3 Graphics...... 95 D.3.8.2.4 Identified_document...... 96 D.3.8.2.5 Item_names ...... 96 D.3.8.2.6 Label_with_language ...... 97 D.3.8.2.7 Mathematical_string ...... 98 D.3.9 Function definitions...... 98 D.3.9.1 Acyclic_superclass_relationship function ...... 98 D.3.9.2 Check_syn_length function ...... 99 D.3.9.3 Codes_are_unique function ...... 99 D.3.9.4 Definition_available_implies function...... 100 D.3.9.5 Is_subclass function ...... 100 D.3.9.6 String_for_derived_unit function...... 101 D.3.9.7 String_for_named_unit function ...... 103 D.3.9.8 String_for_SI_unit function ...... 103 D.3.9.9 String_for_unit function ...... 105 D.3.9.10 All_class_descriptions_reachable function...... 105 D.3.9.11 Compute_known_visible_properties function...... 106 D.3.9.12 Compute_known_visible_data_types function ...... 106 D.3.9.13 Compute_known_applicable_properties function...... 107 D.3.9.14 Compute_known_applicable_data_types function ...... 108 D.3.9.15 List_to_set ...... 109 D.3.9.16 Check_properties_applicability...... 109 D.3.9.17 Check_datatypes_applicability ...... 110

D.4 ISO13584_IEC61360_language_resource_schema ...... 110 D.4.1 ISO13584_IEC61360_language_resource_schema type and entity definitions ...... 111 D.4.1.1 Language_code...... 111 D.4.1.2 Global_language_assignment...... 112 D.4.1.3 Present_translations...... 112 D.4.1.4 Translatable_label ...... 112 D.4.1.5 Translated_label...... 113 D.4.1.6 Translatable_text...... 113 D.4.1.7 Translated_text...... 113 D.4.2 ISO13584_IEC61360_language_resource_schema function definitions ...... 114 D.4.2.1 Check_label_length function ...... 114 D.4.2.2 Check_text_length function ...... 114 D.4.3 ISO13584_IEC61360_language_resource_schema rule definition ...... 115

D.5 Example physical file ...... 115 D.5.1 Some example data...... 115 D.5.1.1 Supplier data ...... 116

5 CWA 15556-2:2006 (E)

D.5.1.2 Root class data...... 116 D.5.1.3 Material data...... 116 D.5.1.4 Component data...... 117 D.5.1.5 Electric / Electronic component data ...... 118 D.5.2 Templates derived from the EXPRESS code...... 120 D.5.2.1 Templates for supplier data...... 120 D.5.2.2 Templates for class data ...... 120 D.5.2.3 Templates for property_DET data...... 121 D.5.2.4 Templates for data type data...... 122

Annex DA (informative) Extended dictionary schema (from ISO 13584 Part 24) ...... 123

Introduction...... 123

DA-1 ISO13584_extended_dictionary_schema...... 123

DA-2 Introduction to the ISO13584_extended_dictionary_schema ...... 125

DA-3 Fundamental concepts and assumptions for the ISO13584_extended_dictionary_schema126 DA-3.1 Dictionary structure...... 126 DA-3.2 Class related elements ...... 127 DA-3.3 Supplier related elements...... 127 DA-3.4 Three-fold description of dictionary elements...... 127 DA-3.5 Unique identification of dictionary elements ...... 127 DA-3.6 Applicable elements ...... 128 DA-3.7 Visibility rule...... 128 DA-3.8 Semantic relationships between classes...... 128 DA-3.9 A priori semantic relationships and importation rule...... 129 DA-3.10 Type checking for the tables referenced in the dictionary ...... 129

DA-4 ISO13584_extended_dictionary_schema constant definitions ...... 130 DA-4.1 Element_code_len...... 130 DA-4.2 Dictionary_code_len ...... 130

DA-5 ISO13584_extended_dictionary_schema type definitions ...... 130 DA-5.1 Document_code_type...... 130 DA-5.2 Program_library_code_type...... 131 DA-5.3 Table_code_type ...... 131 DA-5.4 Absolute_URL_type...... 131 DA-5.5 Dictionary_code_type ...... 132

DA-6 ISO13584_extended_dictionary_schema identification of a dictionary...... 132

DA-7 ISO13584_extended_dictionary_schema overall architecture of a dictionary ...... 133

DA-8 Dictionary_in_standard_format...... 138

DA-9 Data_exchange_specification_identification...... 139

DA-10 Library_iim_identification ...... 140

DA-11 View_exchange_protocol_identification...... 140

DA-12 ISO13584_extended_dictionary_schema entity definitions: additional entity instance types141 DA-12.1 Representation_type...... 141 DA-12.2 Geometric_representation_context_type...... 142 DA-12.3 Representation_reference_type ...... 142 DA-12.4 Program_reference_type...... 143

DA-13 ISO13584_extended_dictionary_schema entity definitions: additional basic semantic units143 DA-13.1 Program_library_BSU...... 143 DA-13.2 Table_BSU ...... 144 DA-13.3 Document_BSU...... 146 6 CWA 15556-2:2006 (E)

DA-14 ISO13584_extended_dictionary_schema entity definitions: supplier BSU relationship...... 147 DA-14.1 Supplier_program_library_relationship...... 147

DA-15 ISO13584_extended_dictionary_schema entity definitions: class BSU relationships ...... 147 DA-15.1 Class_table_relationship...... 147 DA-15.2 Class_document_relationship ...... 148

DA-16 ISO13584_extended_dictionary_schema entity definitions: properties of functional models and functional views ...... 148 DA-16.1 Representation_P_DET...... 148

DA-17 ISO13584_extended_dictionary_schema entity definitions: specific dictionary elements ... 149 DA-17.1 Supplier_related_dictionary_element ...... 149 DA-17.2 Class_related_dictionary_element...... 150 DA-17.3 Program_library_element ...... 150

DA-18 ISO13584_extended_dictionary_schema entity definitions: class related elements ...... 151 DA-18.1 Table_element...... 151 DA-18.2 RDB_table_element ...... 152 DA-18.3 Document_element ...... 152 DA-18.4 Document_element_with_http_access...... 153 DA-18.5 Document_element_with_translated_http_access...... 153 DA-18.6 Referenced_document ...... 154 DA-18.7 Referenced_graphics ...... 155

DA-19 ISO13584_extended_dictionary_schema entity definitions: feature class...... 155

DA-20 ISO13584_extended_dictionary_schema entity definitions: a priori semantic relationship . 156

DA-21 ISO13584_extended_dictionary_schema entity definitions: functional model class...... 157 DA-21.1 Abstract_functional_model_class...... 158 DA-21.2 Functional_model_class ...... 161 DA-21.3 Fm_class_view_of ...... 161

DA-22 ISO13584_extended_dictionary_schema entity definitions: functional view class ...... 163 DA-22.1 Functional_view_class...... 164 DA-22.2 Non_instantiable_functional_view_class ...... 165 DA-22.3 Specification of the range of a view control variable ...... 166

DA-23 ISO13584_extended_dictionary_schema entity definitions: item class a priori case of ...... 167 DA-23.1 Item_class_case_of...... 167 DA-23.2 Component_class_case_of ...... 168 DA-23.3 Material_class_case_of ...... 168 DA-23.4 Feature_class_case_of ...... 169

DA-24 ISO13584_extended_dictionary_schema entity definitions: a posteriori semantic relationships ...... 169 DA-24.1 A_posteriori_semantic_relationship...... 169 DA-24.2 A_posteriori_case_of...... 170 DA-24.3 A_posteriori_view_of ...... 171

DA-25 ISO13584_extended_dictionary_schema entity definitions: table contents...... 172 DA-25.1 Table_content...... 172 DA-25.2 RDB_table_content...... 173

DA-26 ISO13584_extended_dictionary_schema: RULE definitions ...... 174 DA-26.1 Representation_properties_for_model_and_view_rule rule ...... 174 DA-26.2 Allowed_named_type_usage_rule rule...... 175 DA-26.3 Assert_oneof_for_table_rule rule ...... 175 DA-26.4 Assert_oneof_for_class_rule rule...... 176 DA-26.5 No_forward_reference_from_table_rule rule...... 177 DA-26.6 Imported_properties_are_visible_or_applicable_rule rule...... 177

7 CWA 15556-2:2006 (E)

DA-26.7 Imported_data_types_are_visible_or_applicable_rule rule ...... 178 DA-26.8 Imported_tables_are_visible_or_applicable_rule rule ...... 178 DA-26.9 Imported_documents_are_visible_or_applicable_rule rule ...... 179

DA-27 ISO13584_extended_dictionary_schema: function definitions ...... 180 DA-27.1 Visible_properties function ...... 180 DA-27.2 Visible_types function ...... 180 DA-27.3 Visible_tables function...... 181 DA-27.4 Visible_documents function...... 182 DA-27.5 Applicable_properties function ...... 183 DA-27.6 Applicable_types function ...... 184 DA-27.7 Applicable_tables function...... 185 DA-27.8 Retrieve_tables function ...... 186 DA-27.9 Applicable_documents function...... 187 DA-27.10 Retrieve_documents function...... 188 DA-27.11 Makes_reference_outside function ...... 188 DA-27.12 Prefix_ordered_class_list function...... 190 DA-27.13 Functional_view_v_c_v function...... 193 DA-27.14 Retrieve_functional_view_v_c_v function...... 194 DA-27.15 Data_type_named_type function ...... 195 DA-27.16 Data_type_typeof function ...... 196 DA-27.17 Data_type_class_of function ...... 197 DA-27.18 Data_type_type_name function ...... 198 DA-27.19 Data_type_level_spec function...... 199 DA-27.20 Data_type_level_value_typeof function ...... 200 DA-27.21 Simple_type_data_type function...... 202 Complex_type_data_type function...... 202 DA-27.22 Compatible_subclass function...... 203 DA-27.23 Compatible_types function ...... 204 DA-27.24 Ordered_index_value function...... 207 DA-27.25 Makes_sub_list...... 207 DA-27.26 Sub_list_until ...... 208 DA-27.27 Get_property_BSU_from_property_semantics function...... 208 DA-27.28 Compatible_list_library_types_and_columns function...... 209 DA-27.29 Data_type_non_quantitative_int_type function...... 213 DA-27.30 Data_type_non_quantitative_code_type function...... 214 DA-27.31 Applicable_properties_for_applicable_tables function ...... 215 DA-27.32 Superclass_of_item_is_item function...... 216 DA-27.33 Compatible_content_and_specification function ...... 216 DA-27.34 Check_view_of_instance_datatype function ...... 217 DA-27.35 View_control_variables_attributes_belong_to_domain function...... 217 Created_view_is_functional_view function ...... 218 DA-27.36 Check_is_case_of_referenced_classes_definition function...... 218

Annex DB (informative) External File Schema (from ISO13584 Part 24) ...... 221

DB-1 Introduction ...... 221

DB-2 Introduction to the ISO13584_external_file_schema...... 222

DB-3 Fundamental concepts and assumptions for the ISO13584_external_file_schema ...... 225 DB-3.1 Representations of items...... 225 DB-3.2 Explicit and implicit description of item representations ...... 225 DB-3.3 Support of user dialogue ...... 225 DB-3.4 Http files storage...... 225 Http_file storage rule...... 226 DB-3.5 Hyper-text link usage...... 226 DB-3.6 Escape mechanism from document navigation to data retrieval and selection ...... 226 DB-3.7 Common Gateway Interface access ...... 227 Common Gateway Interface access rule 1...... 227 Common Gateway Interface access rule 2...... 227

8 CWA 15556-2:2006 (E)

Common Gateway Interface access rule 3...... 228 DB-3.8 Common Gateway Interface implementation rule ...... 229

DB-4 ISO13584_external_file_schema constant definitions...... 229 DB-4.1 Compiler_version_length...... 229 DB-4.2 External_file_address_length ...... 230 DB-4.3 External_item_code_length ...... 230 DB-4.4 Http_file_name_length...... 230 DB-4.5 Http_directory_name_length...... 230

DB-5 ISO13584_external_file_schema type definitions...... 231 DB-5.1 External_file_address ...... 231 DB-5.2 External_item_code_type ...... 231 DB-5.3 Http_file_name_type...... 231 DB-5.4 Http_directory_name_type...... 232 DB-5.5 MIME_type...... 232 DB-5.6 MIME_subtype...... 233 DB-5.7 IAB_RFC...... 233 DB-5.8 Character_set_type ...... 234 DB-5.9 Content_encoding_type...... 234 DB-5.10 Program_status ...... 234 DB-5.11 Program_reference_name_type...... 235 DB-5.12 Compiler_version_type...... 235 DB-5.13 Illustration_type...... 235

DB-6 ISO13584_external_file_schema entity definitions: external_file_protocols...... 236 DB-6.1 External_file_protocol ...... 236 DB-6.2 Standard_protocol ...... 237 DB-6.3 Non_standard_protocol ...... 238 DB-6.4 Data_protocol ...... 238 DB-6.5 Program_protocol...... 239 DB-6.6 Simple_program_protocol ...... 239 DB-6.7 Standard_simple_program_protocol ...... 240 DB-6.8 Non_standard_simple_program_protocol ...... 240 DB-6.9 Linked_interface_program_protocol...... 241 DB-6.10 Standard_data_protocol ...... 241 DB-6.11 Non_standard_data_protocol ...... 242 DB-6.12 Http_protocol ...... 242

DB-7 ISO13584_external_file_schema entity definitions: dictionary external items ...... 243 DB-7.1 External_item...... 243 DB-7.2 Dictionary_external_item ...... 243 DB-7.3 Supplier_BSU_related_content ...... 244 DB-7.4 Program_library_content ...... 244 DB-7.5 Class_BSU_related_content ...... 245 DB-7.6 Document_content ...... 245

DB-8 ISO13584_external_file_schema entity definition: class extension external items...... 246 DB-8.1 Class_extension_external_item...... 247 DB-8.2 Representation_reference ...... 248 DB-8.3 Program_reference...... 248 DB-8.4 Dialogue_resource ...... 249 DB-8.5 Message ...... 249 DB-8.6 Illustration ...... 250 DB-8.7 A6_illustration ...... 250 DB-8.8 A9_illustration ...... 251

DB-9 ISO13584_external_file_schema entity definition: property_value_external_item ...... 251

DB-10 ISO13584_external_file_schema rule definition ...... 252 DB-10.1 Unique_http_file_name_per_supplier_element_rule rule...... 252 DB-10.2 Unique_http_directory_name_per_supplier_rule rule...... 252 9 CWA 15556-2:2006 (E)

DB-10.3 No_http_directory_for_supplier_related_file_rule rule...... 253 DB-10.4 Http_directory_refers_to_bsu_related_class_rule rule ...... 254 DB-10.5 Http_directory_refers_to_class_extension_rule rule ...... 254 DB-10.6 Illustration_is_not_a_referenced_graphics_rule rule...... 255

DB-11 ISO13584_external_file_schema entity definitions: external content ...... 255 DB-11.1 External_content...... 256 DB-11.2 Translated_external_content ...... 256 DB-11.3 Not_translated_external_content...... 257 DB-11.4 Not_translatable_external_content...... 257 DB-11.5 Language_specific_content...... 258 DB-11.6 External_file_unit ...... 259 DB-11.7 Http_file...... 260 DB-11.8 Http_class_directory ...... 261

DB-12 ISO13584_external_file_schema function definitions...... 262 DB-12.1 Supplier_associated_http_files...... 262 DB-12.2 Control_compiler_version_format ...... 263

Annex DC (informative) ISO13584_IEC61360_dictionary_aggregate_extension_schema (from ISO13584 Part 25) ...... 265

DC-1 Introduction ...... 265

DC-2 Introduction to the ISO13584_IEC61360_dictionary_aggregate_extension_schema ...... 265

DC-3 ISO13584_IEC61360_dictionary_aggregate_extension_schema entity definitions ...... 266 DC-3.1 Aggregate_entity_instance_type...... 266 DC-3.2 Aggregate_type ...... 266 DC-3.3 List_type ...... 267 DC-3.4 Set_type...... 267 DC-3.5 Bag_type...... 268 DC-3.6 Array_type...... 268 DC-3.7 Set_with_subset_constraint_type ...... 269

Annex DD (informative) Conformance Classes (from ISO13584 Part 25)...... 271

DD-1 Introduction ...... 271

DD-2 Library integrated model ...... 271 DD-2.1 Conformance class 1: minimal dictionaries...... 272 DD-2.2 Conformance class 2: dictionaries of items classes...... 272 DD-2.3 Conformance class 3: complete dictionaries...... 272 DD-2.4 Conformance class 4: complete dictionaries with limited nested aggregate values.. 272

DD-3 ISO13584_25_IEC61360_5_liim_schema short listing ...... 273

DD-4 Conformance class requirements...... 279 DD-4.1 Conformance class 1: minimal dictionaries...... 279 DD-4.2 Conformance class 2: dictionaries of items classes...... 281 DD-4.3 Conformance class 3: complete dictionaries...... 283 Conformance class 4: complete dictionaries with limited nested aggregate values ...... 284

Annex E (informative) Survey of main classes and categories of properties...... 285

Annex F (informative) Survey of type classification codes of quantitative data element types ...... 286 C Physical chemistry and molecular physics (ISO 31 part 8)...... 287 E Quantities of electricity and Magnetism (ISO 31 part 5) ...... 287 F Quantities of periodic and related phenomena (ISO 31 part 2) ...... 288 G Quantities of acoustics (ISO 31 part 7)...... 288 H Quantities of heat (ISO 31 part 4)...... 289 J Quantities of information...... 289

10 CWA 15556-2:2006 (E)

K Quantities of mechanics (ISO 31 part 3) ...... 289 K Quantities of mechanics, continued (ISO 31 part 3)...... 290 L Quantities of light and related electromagnetic radiations (ISO 31 part 6) ...... 290 L Quantities of light and related electromagnetic radiations, continued (ISO 31 part 6) ... 291 M Amounts...... 291 P Prices, tariffs...... 291 Q Dimensionless business quantities and counts ...... 291 R Business ratios and percentages...... 291 T Quantities of space and time (ISO 31 part 1) ...... 292 U Quantities of atomic and nuclear physics (ISO 31 part 9) ...... 292 V Quantities of nuclear reactions and ionizing radiations (ISO 31 part 10)...... 292 V Quantities of nuclear reactions and ionizing radiations, continued (ISO 31 part 10)...... 293 W Quantities of solid state physics ...... 293

Annex G (informative) EXPRESS-G diagrams ...... 294

Index...... 314

11 CWA 15556-2:2006 (E)

Figures

Figure D.1 — Overview of the dictionary schema...... 54 Figure D.2 — Pieces of data with relationships...... 56 Figure D.3 — Implementation of "inter-piece" relationships using basic semantic units ...... 57 Figure D.4 — Relationship between basic semantic unit and dictionary element...... 59 Figure D.5 — Current BSUs and dictionary elements...... 60 Figure D.6 — Overview of supplier data and relationships ...... 62 Figure D.7 — Overview of class data and relationships...... 64 Figure D.8 — Overview of property data element type data and relationships ...... 72 Figure D.9 — Kinds of data element types...... 73 Figure D.10 — Entity hierarchy for the type system ...... 75 Figure D.11 — Overview of non-quantitative data element Types...... 85 Figure D.12 — ISO13584_IEC61360_language_resource_schema and support_resource_schema111 Figure 1 – External_item planning model...... 223 Figure 2 — Class_extension_external_items planning model ...... 247 Figure 3 — External_content planning model ...... 256 Figure G.1 — ISO13584_IEC61360_dictionary_schema - Basic semantic units - EXPRESS-G diagram 1 of 6 ...... 295 Figure G. 2 — ISO13584_IEC61360_dictionary_schema - Dictionary elements - EXPRESS-G diagram 2 of 6 ...... 296 Figure G. 3 — ISO13584_IEC61360_dictionary_schema - EXPRESS-G diagram 3 of 6 ...... 297 Figure G. 4 — ISO13584_IEC61360_dictionary_schema - The type system - EXPRESS-G diagram 4 of 6 ...... 298 Figure G. 5 — ISO13584_IEC61360_dictionary_schema - EXPRESS-G diagram 5 of 6 ...... 299 Figure G. 6 — ISO13584_IEC61360_dictionary_schema - EXPRESS-G diagram 6 of 6 ...... 300 Figure G. 7 - ISO13584_IEC61360_language_resource_schema - EXPRESS-G diagram 1 of 1..... 301 Figure G.8 — ISO13584_extended_dictionary_schema diagram 1 of 7...... 302 Figure G.9 — ISO13584_extended_dictionary_schema diagram 2 of 7...... 303 Figure G.10 — ISO13584_extended_dictionary_schema diagram 3 of 7...... 304 Figure G.11 — ISO13584_extended_dictionary_schema diagram 4 of 7...... 306 Figure G.12 — ISO13584_extended_dictionary_schema diagram 5 of 7...... 307 Figure G.13 — ISO13584_extended_dictionary_schema diagram 6 of 7...... 308 Figure G.14 — ISO13584_extended_dictionary_schema diagram 7 of 7...... 309 Figure G.15 — ISO13584_external_file_schema diagram 1 of 3 ...... 310 Figure G.16 — ISO13584_external_file_schema diagram 2 of 3 ...... 311 Figure G.17 — ISO13584_external_file_schema diagram 3 of 3 ...... 312 Figure G.18 — ISO13584_IEC61630_dictionary_aggregate_extension_schema diagram 1 of 1...... 313

Tables

Table 1 — Overview of versioning in property updating operations...... 36 Table 2 — Propagated changes in version numbers of properties...... 37 Table 3 — Overview of versioning in class updating operations...... 45 Table 4 - Conformance options of library integrated information model 25 ...... 275 Table B.1 — Short names of entities ...... 49

12 CWA 15556-2:2006 (E)

Foreword

The production of this draft CWA “Product Classes with sets of properties” was agreed at the Workshop eCAT plenary meeting on 16 March 2005, as part of deliverables of the Gen -ePDC project.

Workshop eCAT «Multilingual ecataloguing and eclassification in ebusiness» combined two different projects – one on eCataloguing – which ran in 2003 and 2004 - and another on product classification (ePDC) – which ran from March 2004 to February 2006. Only catalogues and product classification schemas used in eBusiness were taken into consideration.

The ePDC project was divided into two parts. In the first part a modern architecture for a global, interoperable classification schema was designed. Two CWAs were published:

CWA 15294:2005 "Dictionary of Terminology for Product Classification and Description"

CWA 15295:2005 “Description of References and Data Models for Classification"

The second part – called Gen-ePDC –aimed at discussing with different organizations the possibility for their convergence towards a common base. The role of properties and attributes, the link between classification schemes and electronic catalogues were further explored.

Three CWAs summarise the findings of Gen-ePDC:

CWA «New properties library»

CWA «Product classes with sets of properties»

CWA «Results of development in harmonization of product classification and in multilingual electronic catalogues and their respective data modelling»

The public comment period ran from 31 January 2006 to 31 March 2006.

The draft CWA was submitted as input to the ISO TC184/ SC4 SG2 meeting in March 2006.

Acknowledgements

Helmut Beckmann

Eric Sardet

Wolfang Wilkes

Raymond Betz

This CEN Workshop Agreement is publicly available as a reference document from the National Members of CEN: AENOR, AFNOR, ASRO, BSI, CSNI, CYS, DIN, DS, ELOT, EVS, IBN, IPQ, IST, LVS, LST, MSA, MSZT, NEN, NSAI, ON, PKN, SEE, SIS, SIST, SFS, SN, SNV, SUTN and UNI.

13 CWA 15556-2:2006 (E)

Introduction

ISO 13584 is an International Standard for the computer-interpretable representation and exchange of part library and catalogue data. ISO 13584 distinguishes two basic levels for data exchange:

• The level of parts libraries, where information about products is exchanged. Here basically property values and relationships to classes of products are described.

• The level of data dictionaries (nowadays also called ontologies), where the meaning of property values and property classes is defined. This includes definitions of properties, definition of datatypes and units, relationships with other classes (components), etc.

The standard ISO13584 is currently used quite heavily for the development of data dictionaries in various domains. Therefore, it is important to develop implementations of the standard to provide data dictionary developers with the appropriate tools.

Unfortunately, the definitions of elements which are relevant for the dictionary definition in ISO 13584 is spread across three parts: Part 42 which is the core of the dictionary model, with extensions in Part 24 which itself is mainly describing the library part, and with complex data types defined in Part 25 where also the integrated EXPRESS schema with its various conformance classes is defined.

The reason for this structure is mainly the attempt to keep Part 42 in line with the model of IEC 61360 Part 2. In fact, the standards use the same data model, and it is one of the basic goals of the further developments from both sides to develop the data models in a common way. Due to different life cycles of the standards, different parts needed to be separated out and the complex structure evolved.

This has been proven as a disadvantage for the usage of the standard. Therefore from various sides the requirement was formulated to gather all the information about data dictionaries in a comprehensive document.

This attempt is made by this CWA. It collects all (EXPRESS) schemas of ISO 13548 Parts 24 and 25 and puts them together with the whole Part 42 into a single document. Thus, the following schemas have been collected:

ISO13584_IEC61360_dictionary_schema IEC 61360-2:1998 (which is duplicated for convenience in informative Annex D of ISO 13584-42:1998), ISO13584_IEC61360_language_resource_schema IEC 61360-2:1998 (which is duplicated for convenience in informative Annex D of ISO 13584-42:1998), ISO13584_extended_dictionary_schema ISO 13584-24:2003, ISO13584_external_file_schema ISO 13584-24:2003, ISO13584_IEC61360_dictionary_aggregate_extension_schema This part of ISO 13584

How will this document be used furtheron?

After an acceptance of the document in ISO TC184 SC4 WG2 as a technical paper, it is proposed to further keep this document in line with the developments of the three parts (and others, if necessary). For instance, for the first version, the currently available IS versions have been used, but there is a project underway (having already reached the DIS level) to modify Part 42 with consequences for Part 24 and Part 25. Of course, the goal would be to have a Part which gathers all information to the data dictionary part of ISO 13584 into a single Part of the standard, but this will may be difficult to achieve.

To make updating of the dictionary document as easy as possible, the following recommendations for the editorial process result from this effort to bring the different parts together:

• Make the description of the schemas as self contained as possible and do not distribute the description of schemas across several chapters.

14 CWA 15556-2:2006 (E)

• If a Part of ISO 13584 covers both the dictionaries and the libraries, use different chapters for these descriptions.

• Develop a reference schema within ISO 13584 standards which is Part spanning, so that the reference can be used also in the collected document.

This version is a draft version where definitely still a number of incorrect references exist. It is also subject of review with respect to the content in terms of schemas and elements of elements. The structure of Part 42, the core of the data dictionary model, was taken and the schemas from other Parts have been added as annexes – in the same way as the actual model in Part 42 is an appendix because it reproduces the Part 2 of IEC 61360. This helps to easily adapt the document to changes of the underlying standards.

15 CWA 15556-2:2006 (E)

Industrial automation systems and integration – Parts Library – Part 42: Methodology for structuring part families

Scope

This part of ISO 13584 specifies the principles that shall be used for defining families of parts and properties of parts to fully characterize parts and associated properties.

The rules and guidelines provided in this part of ISO 13584 are mandatory for the standardisation committees responsible for creating standardised identification hierarchies.

The use of these rules by suppliers and users is recommended as a methodology for building their own hierarchies.

The following are within the scope of this part of ISO 13584:

— the rule to group parts into generic families of parts and simple families of parts;

— the rules for the choice of the appropriate properties that shall be associated with the families of parts;

— the attributes that shall be provided by library data suppliers to describe the families and properties of parts.

— the specifications of those attributes in the EXPRESS information model that provide for the exchange of such dictionary data.

NOTE 1 The EXPRESS information model for the exchange of dictionary data is defined in IEC 61360-2.

NOTE 2 The content of this EXPRESS information model is in the informative Annex D of this part of ISO 13584 that duplicates the normative content of IEC 61360-3.

The following are outside the scope of this part of ISO 13584:

— libraries of assembled parts with aggregate structure (Level 3 libraries);

— the description of the parts themselves;

— the descriptions of the functional models that may refer to some family of parts;

— the description of tables, program libraries and documents that may refer to some family of parts;

— the description of the systems intended to manage parts libraries; and

— the EXPRESS resource constructs for references between libraries.

NOTE The EXPRESS resource constructs for tables, programs libraries, documents and for references between libraries are defined in ISO 13584-24.

16 CWA 15556-2:2006 (E)

The structure of the information and the methodology defined in this part of ISO 13584 enable the following:

— integration in the same data repository of different parts libraries originating from different library data suppliers with an uniform access mechanism provided by a dictionary;

— integration in the same data repository of different definitions of materials originating from different suppliers with an uniform access mechanism provided by a dictionary;

— referencing another supplier library assumed to be available on the receiving system;

— referencing a standardised identification hierarchy when such a hierarchy exists;

— definition by an end-user of a local classification or search hierarchy, and the mapping of these hierarchies onto the supplier libraries available on its system.

Normative references

The following normative documents contain provisions which, through reference in this text, constitute provisions of this part of ISO 13584. For dated references, subsequent amendments to, or revisions of, any of these publications do not apply. However, parties to agreements based on this part of ISO 13584 are encouraged to investigate the possibility of applying the most recent editions of the normative documents indicated below. For undated references the latest edition of the publication referred to applies. Members of IEC and ISO maintain registers of currently valid International Standards.

ISO 31-0: 1992, Quantities and Units — Part 0: General principles.

ISO 639:1988 Code for the representation of names of languages.

ISO 4217, Codes for the representation of names of currencies and funds.

ISO 6093:1985, Information Processing — Representation of numerical values in character strings for information interchange.

ISO 8601:1988, Date elements and interchange formats — Information interchange — Representations of dates and times.

ISO/IEC 8824-11: —, Information technology — Open System Interconnection — Abstract Syntax Notation One (ASN.1) — Part 1: Specification of Basic Notation.

ISO 8879-1:1987, Information processing — 8-bit single byte coded graphics character sets — Part 1: No. 1.

ISO 8879:1986, Information processing — Text and office systems — Standard Generalised Mark-up Language (SGML).

ISO 9735:1988, Electronic Data Interchange for Administration — Commerce and Transport (EDIFACT) — Application Level Syntax Rules.

ISO 10303-1: 1994, Industrial automation systems and integration — Product data representation and exchange — Part 1: Overview and fundamental principles. ISO 10303-11:1994, Industrial automation systems and integration — Product data representation and exchange — Part 11: Description Methods: The EXPRESS language reference manual.

1 To be published 17 CWA 15556-2:2006 (E)

ISO 10303-21:1994, Industrial automation systems and integration — Product data representation and exchange — Part 21: Implementation methods: Clear Text Encoding of the Exchange Structure (Physical File).

ISO 10303-41:1994, Industrial automation systems and integration — Product data representation and exchange — Part 41: Integrated generic resources: Fundamentals of product description and support.

ISO 10303-42:1994, Industrial automation systems and integration — Product data representation and exchange — Part 42: Integrated generic resources: Geometric and topological representation.

ISO 12083:1992, Information and Documentation — Electronic Manuscript Preparation and Markup.

I S O / I E C 11179- 3 : 1994, Information technology — Specification and standardisation of data elements — Basic attributes of data elements.

ISO/IEC: 1993, International Classification of Standard (ICS).

IEC 61360-1:1995, Standard data element types with associated classification scheme for electric components — Part 1: Definitions, principles and methods.

IEC 61360-22 : —, Standard data element types with associated classification scheme for electric components — Part 2: EXPRESS Dictionary Schema.

IEC 61360-32: —, Standard data element types with associated classification scheme for electric components — Part 3: Maintenance and validation procedures.

IEC 61360-42: —, Standard data element types with associated classification scheme for electric components — Part 4: IEC reference collection of standard data element types, component classes and terms.

Terms and definitions

For the purpose of this part of ISO 13584, the following terms and definitions apply.

Terms and definitions from ISO 10303-1

For the purpose of this part of ISO 13584, the following terms and definitions given in ISO 10303-1:1994 (which are repeated below for convenience) apply.

information facts, concepts or instructions

information model a formal model of a bounded set of facts, concepts or instructions to meet a specified requirement

Terms and definitions from ISO 13584-1

For the purpose of this part of ISO 13584, the definitions given in ISO 13584-13 for the following terms apply.

— Library data supplier;

2 To be published 3 To be published 18 CWA 15556-2:2006 (E)

— Part;

— Parts library;

— Resource construct;

— Supplier library.

NOTE These definitions are duplicated in the informative Annex H of this part of ISO 13584.

Terms and definitions from ISO 13584-10

For the purpose of this part of ISO 13584, the definitions given in ISO 13584-103 for the following terms apply.

— Applicable property;

— Characteristic of a part (part characteristic);

— Context dependent characteristic;

— Context parameter;

— Family of parts;

— Generic family of parts;

— Property;

— Simple family of parts;

— Visible property.

NOTE These definitions are duplicated in the informative Annex I of this part of ISO 13584.

Other terms and definitions

For the purpose of this part of ISO 13584, the following apply.

basic semantic unit the entity that provides an absolute and universally unique identification of a certain object of the application domain (e.g. classes, data element types)

class valued property a property that has one single value for a whole family of parts. Its value is not defined individually for every single part of that family, but for the family itself

NOTE Class valued properties may be used to capture some commonality between different families when such a commonality is not captured by the hierarchy structure (see example of RULE 5b).

common dictionary schema the information model for a dictionary, using the information modelling language EXPRESS, resulting from a joint effort between ISO TC 184/SC4/WG2 and IEC SC3D

19 CWA 15556-2:2006 (E)

NOTE The common dictionary schema is specified in IEC 61360-2, and its content is provided in the informative annex D of this part of ISO 13584.

data element type unit of data for which the identification, description and value representation have been specified

data type the specification of the type of a property that specifies the allowed set of values of that property

dictionary data the set of data that describes hierarchies of families of parts and properties of these parts

NOTE The dictionary data should be exchanged using the common dictionary schema.

dictionary element the set of attributes that constitutes the dictionary description of certain objects of the application domain (e.g. classes, data element types)

item a thing that can be captured by a class structure and a set of properties

quantitative data element type data element type with a numerical value representing a physical quantity, a quantity of information or a count of objects

non-quantitative data element type data element type that identifies or describes an object by means of codes, abbreviations, names, references or descriptions

property an information that may be represented by a data element type

standardized identification hierarchy dictionary data that is defined by a standardisation organisation

Abbreviated terms

For the purpose of this part of ISO 13584 the following abbreviated terms apply.

— BSU : Basic Semantic Unit;

20 CWA 15556-2:2006 (E)

— DET: Data Element Type;

— ICS: International Classification of Standards;

— SI: Système International d'Unités (International System of Units).

Description of a hierarchy of families of parts

Simultaneous description of families of parts and parts properties

The hierarchy shall be organised as a tree-structure with single inheritance. At each level of the hierar- chy, the sub-families of a generic family of parts shall be mutually exclusive. The hierarchy shall include two sections:

— The upper section classifies technical fields and so defines the first levels of generic families of parts. These generic families of parts are used for classification purposes. They are not intended to be instanciated.

— The lower section splits these families into generic sub-families to obtain simple families of parts. In choosing these families the instanciation rule (RULE 3) is important. These families are intended to be instanciated.

Both the standardised identification hierarchy and the supplier hierarchies shall simultaneously define the following:

— (hierarchical) families of parts;

— (non hierarchical) properties.

The meaning of each family of parts and of each property shall be such that a human observer shall be able to determine, for a given part:

— those families of parts to which it belongs and those to which it does not belong;

— that characteristic of the part to which every applicable property corresponds.

The simultaneous definition of families of parts and of properties related to every family of parts improves their definition. The composition of a family of parts becomes clearer through the properties that are related; the meaning of a property is explained by the family of parts defining its field of application.

By defining families of parts through a hierarchy with inheritance, the definition of each property can be factored to the highest family level for which this property is meaningful and may be applicable in some sub-families.

Applicable and visible properties

The properties defined at each (generic) family level are divided into two categories:

— the applicable properties corresponding to a characteristic property that every part (belonging to the generic or simple family of parts) shall possess;

— the visible properties corresponding to a characteristic property that the parts (belonging to the generic or simple family of parts) may or may not possess according to the sub-families they belong to.

Only those properties that are specified as visible for some family (possibly through inheritance) may be also specified as applicable.

21 CWA 15556-2:2006 (E)

Purpose of the standardised identification hierarchy

Due to the diversity of the real world, the families of parts and the properties forming the standardised identification hierarchy are not intended to exhaustively characterise and describe every part. It is only aimed at identifying and progressively characterising the common properties to provide:

— multi-supplier search;

— partial multi-supplier characterisation;

— some interchangeability between different parts.

Use of the standardised identification hierarchy

When describing his own parts a supplier may choose:

— to make reference to standardised families of parts and properties, when they are defined by the standardised identification hierarchy;

— to add his own families of parts and properties following guidance of the rules stated in this standard.

Thus every supplier can connect his families of parts to the level(s) of the standardised identification hierarchy that seem to be the most suitable and may complete the standardised identification hierarchy with his own hierarchy. The higher the level of the connection, the less the suppliers will be able to take advantage of the standardised identification hierarchy and the corresponding properties.

Class valued property

Due to the diversity of the perspectives that may be adopted for a set of objects of the real world, different structures for a generic family of parts may emerge (see example in section 6.1.5).

In this case, the structure that permits the maximum applicability of the factored properties shall be selected for the standardised identification hierarchy. Each other perspective considered relevant is represented as a property that is assigned one single value to each simple family of the subtree and is valid for the whole family. The assignment of the property to a family may be defined at any level of the subtree. The value assigned this way is inherited by all the subfamilies.

The data type of such a property is represented as a set of unique codes. Each code is associated with different human readable and translatable representations.

Extensions of the common dictionary schema addressing IEC 61360 needs

The common dictionary schema combines the requirements of IEC 61360 and ISO 13584. Therefore it contains resources to accommodate the specific requirements of both International Standards. These resources are provided either as an optional capability or as subtypes of the types defined to fulfil the common requirements. The IEC 61360 specific extensions shall not be used for the definition of the standardised identification hierarchy conforming to this part of ISO 13584. These extensions are as follows: a) In the item_class entity the optional value_code attribute; b) In the value_domain entity the optional terms attribute.

Extension of the common dictionary schema addressing ISO 13584 needs

This part of ISO 13584 addresses two requirements:

— the definition of a methodology for defining standardised identification hierarchies or supplier hierarchies of parts and the properties associated with these parts;

22 CWA 15556-2:2006 (E)

— the specification of an information model that provides for the exchange of dictionary data that describes hierarchies of families of parts and properties of these parts.

Some resources in the common dictionary schema are intended to be used when modelling and exchanging other types of data (e.g., library content) as specified by other parts of ISO 13584. These resources are provided either as optional capabilities or as subtypes of the types defined to fulfil the requirements of this part of ISO 13584.

These extensions shall not be used when defining the standardised identification hierarchy or supplier hierarchies. These resources are as follows (the specification of these resources is defined in the informative Annex D) : a) content_item; b) supplier_related_BSU; c) class_related_BSU; d) supplier_BSU_relationship; e) class_BSU_relationship.

Compatibility between IEC 61360 and ISO 13584

The scope of IEC 61360 is to specify standard data element types with associated classification schema for electric components. This is done through the specification of the principles in IEC 61360- 1, the common dictionary schema in IEC 61360-2, the set of data elements and an initial hierarchy for electronic components in IEC 61360-3, and through the specification of a Maintenance and Validation Agency intended to up-date this set of data elements and its hierarchy, to be published as IEC 61360-4.

The scope of ISO 13584 is twofold:

— to specify and to exchange identification hierarchies of parts of any kind;

— to specify and to exchange libraries of parts that may contain both dictionary data and class extensions (i.e., the set of allowed parts within a family of parts).

The exchange context of identification hierarchies is specified, for both Standards, by the common dictionary schema. Therefore exchange contexts of identification hierarchies are completely compatible. The only restriction is that ISO 13584 conforming hierarchies shall not use the two optional resources specified in 5.6 and that the date of original definition, date of current version and date of current revision that are defined as OPTIONAL in the common dictionary schema are mandatory for ISO 13584 conforming hierarchies. Moreover, the use of the ISO/IEC ICS hierarchy as a root hierarchy in the user system (see: 5.1.2) enables the integration of the IEC 61360-44 hierarchy5 and of the various standardised identification hierarchies intended to be developed by the ISO Standardisation Committees.

For the exchange of electric component libraries referring to the IEC 61360-4 dictionary data, the electric component suppliers can use the exchange format specified in ISO 13584-246. This exchange format enables, through the component_class_case_of entity, to refer to any standardised identification hierarchy conforming to the common dictionary schema.

4 To be published 5 The IEC 1360-4 hierarchy covering several subclasses of the ISO/IEC ICS hierarchy, the former shall be connected directly to the root of the latter 6 To be published

23 CWA 15556-2:2006 (E)

Rules for creating hierarchies of families of parts

To simplify the analysis when creating a standardised identification hierarchy and supplier hierarchies, the following rules, that allow the splitting of the analysis into two phases, shall be applied. The first set of rules refers to the choice of the family hierarchy. The second set of rules refers to the association of properties with families of parts.

Choice of family hierarchy

Field of application

RULE 1 – Field covered by the hierarchy.

The standardised identification hierarchy shall be able to cover all the parts dealt with in ISO or IEC standards.

A part supplier hierarchy shall be able to cover all the parts supplied by this supplier.

Upper section of the hierarchy

RULE 2 – Classification.

The upper section of the standardised identification hierarchy shall be based upon the International Classification of Standards (ICS).

Properties can be related to the upper section according to the factoring rule (RULE 8).

NOTE 1 The ICS provides a common high level classification that shall be used or referred to by the standardisation committees through at least the root of the classification that corresponds to their scope. For those standardisation committees whose scope cannot be mapped onto one class of the ICS classification, new classes shall be created as subclasses of an existing class that encompasses their scope.

NOTE 2 When the scope of a standardisation committee encompasses a whole subtree of the ICS classification, this committee may redefine the classification subtree for its own purpose provided that it refers to the root of that subtree.

NOTE3 The role of the standardised identification hierarchy is to improve the definition of properties. It is not intended to specify a selection mechanism.

Lower section of the hierarchy

RULE 3 – Instanciation rule.

Below the upper section of the hierarchy, a generic family of parts shall be created only when it is possible and advisable to associate a functional model (e.g. geometrical model, schematic model) to such a family of parts, i.e. when an user could reasonably choose a generic part of such a family to represent a significant state (phase) of his design process.

EXAMPLE To group screws for metal, wood and sheet metal within one family "screws", is contradictory to the rule of instanciation. During a design process a designer would never select a screw without knowing if this screw shall be a machine screw or a wood screw. Therefore, it is necessary to define below the upper section "bolts/screws/studs" different generic families of parts for the different types of screws.

Simple family of parts

In paper documents, standards or catalogues, sets of parts are sometimes grouped even if the sets of properties applicable to each part of the group are not exactly the same. This shall be prohibited for a simple family of parts.

RULE 4 – Homogeneity of simple family of parts.

Every property applicable to a simple family of parts shall be applicable for every part within this family.

24 CWA 15556-2:2006 (E)

Multiple perspectives on the hierarchy

It may appear that at some point in the hierarchy several properties of a family of parts can be used to define a substructure for that hierarchy.

RULE 5a – Maximum applicability

When the application of the instanciation rule (RULE 3) leads to different possible structures of some generic families depending upon a point of view, the structure that enables the maximum applicability of the factored properties shall be selected.

RULE 5b – Class valued properties

The other points of views considered essential for selection purposes – not selected however for the structure according to the maximum applicability rule (RULE 5a) – shall be represented by means of class valued properties (cf. paragraph 5.5). Those are intended to be queried by the user to select a set of families that correspond to the other points of view.

RULE 5c – Class valued assignment level

A class valued property shall be assigned at the level of a family where that property applies for every simple family of the corresponding subtree and does not apply for the immediate parent family.

EXAMPLE The family of circular bearings may split up into ball, needle and conical bearings or into sealed bearings and non-sealed bearings. The first perspective shall be selected for structuring purposes (RULE 5a). A class valued property, named "is_sealed", that is intended to take a constant BOOLEAN value in all the lower simple families shall be visible at the circular bearing family level (RULE 5b). That property shall be assigned at the circular bearing family level if the "is_sealed" property does not apply to bearings that are non-circular bearings. That property shall be assigned at least at the bearings level if the "is_sealed" property applies to any kind of bearings (RULE 5c).

Association of properties

Properties to be considered

RULE 6 – Choice of properties.

As a minimum, those properties that characterise a generic family of parts and can be used when searching parts for every sub-family of this generic family of parts, shall be associated with the standardised identification hierarchy.

Those properties that are not used (or rarely used) for searching purposes can be added as appropriate.

Semantic identification of properties

The following rule gives two criteria for deciding when two properties have the same semantics.

RULE 7 – Semantic identification

Two characteristic properties of two different parts shall be factored to a higher level of the hierarchy, if and only if, they are considered to have the same semantic meaning. Such a decision shall be justified by satisfying one of the two following criteria:

— interchangeability criterion: the two parts can, in some circumstances, be interchangeable and when interchanged the two characteristic properties shall have identical values;

— criterion of homogeneity in processing: the two properties play an identical role with respect to some process, automatic or non automatic, that might be performed over a set of parts.

25 CWA 15556-2:2006 (E)

Otherwise, two different properties shall be defined.

EXAMPLE 1 The properties thread diameter of hexagon head screws and cylindrical head screws fit the interchangeability criterion.

EXAMPLE 2 The properties mass (calculation of the mass of a part or its inertia), designation (for part lists), diameter of conical attachment of tools for automatic tool exchange or the outside diameter of cylindrical electronic components for automatic placement fit the criterion of homogeneity in automatic processing.

EXAMPLE 3 A thread diameter of a screw for wood or of a screw for metal are characteristic properties which shall not be the same property.

Factoring rule

It is not possible in every case to define a hierarchy in which:

— every property having the same semantics in several sub-families is factored (i.e. defined only once and inherited) as an unique property at the level of the ascendant family;

— any property defined at the level of a generic family of parts applies actually (i.e. has a value) to every part in every sub-family.

To create an intermediate family in order to factorise a property may be prevented by the instanciation rule (RULE 3) that is used for defining the family hierarchy.

The following rule provides guidelines for systematically factoring of properties having the same semantics while maintaining the instanciation rule.

RULE 8 – Applicability of inherited properties.

Two properties having the same semantics (RULE 7) in two families shall be factored as an unique property defined at the level of the common ascendant family. If this property does not apply to some sub-families, it shall be defined as a visible property. This property may be specified as applicable in the various sub-families where it is visible. The definition of this property shall be such that for any sub-family there is no doubt about its applicability, and when it applies, there is no doubt about the characteristic property to which it corresponds.

EXAMPLE 1 The property "material", the definition of which would be "material from which the part is made" cannot be factored; we do not know for example to which property it corresponds for a turning tool with carbide brazed tip.

EXAMPLE 2 The property "single material", whose definition would be "property only applicable to parts made from one single material; the value of this property is the code of the single material", corresponds with the semantic identification rule (RULE 7).

Dictionary elements that describe properties of parts

Following the conceptual model defined in ISO 13584-10, the properties of a part are classified into:

— part characteristics

— context dependent characteristics

— context parameters

Mapping of properties onto the common dictionary schema

A property is mapped in the common dictionary schema onto a property_BSU that carries its identification and a property_DET that provides its description. A part characteristic is mapped onto the non_dependent_P_DET subtype (of property_DET), a context dependent characteristic is

26 CWA 15556-2:2006 (E) mapped onto the dependent_P_DET subtype (of property_DET) and a context parameter is mapped onto the condition_DET subtype (of property_DET).NOTE Context parameters and context dependent characteristic shall be represented at least when they prove useful for selection purposes.

The family that defines the visibility of a property is mapped onto the property_BSU.name_scope attribute. The applicability of a property is defined by the class(es) to which it is applicable through the class.described_by attribute.

In this section, only the attributes linked directly to a property are described.

Attributes

Each part property is described by a dictionary element that contains the following attributes:

Code

Definition Class

Data Type

Preferred Name

Short Name

Preferred Letter Symbol

Synonymous Letter Symbols

Synonymous Name

Property Type Classification

Definition

Source Document of Definition

Note

Remark

Unit

Condition

Formula

Value Format

Date of Original Definition

Date of current version

Date of current revision

Version Number

Revision Number

The entry for each attribute is structured in the following way (entries may be omitted if not applicable):

— Name of the attribute

27 CWA 15556-2:2006 (E)

— Obj: Objective.

— Descr: Description.

— Oblig: Obligation.

— Trans: Need for translation.

— For: Representation format or maximal number and type of characters if it is a string.

— Mapp: Mapping onto the attributes used in the common dictionary schema.

— Expl: Example.

NOTE For internal purposes within a company, other attributes and/or other codes for some attributes can be defined but they cannot be used for exchange purposes.

Code

Obj: To identify a property within a family of parts and to allow an absolute identification within the data dictionary when it is associated with the code of the family of parts where the property is defined, and with the library data supplier code.

Descr: A basic semantic unit associated with the property.

Oblig: Mandatory.

Trans: No translation.

Mapp: property_DET\dictionary_element.identified_by\basic_semantic_unit.code

Definition Class

Obj: To specify for which family the property is defined.

Descr: The code of the family that is the root of the tree where this property is visible.

Oblig: Mandatory.

Trans: No translation.

Mapp: property_DET\dictionary_element.identified_by\property_BSU.name_scope

Data Type

Obj: To specify the data type of the property. The data type describes the set of values that may be assigned to a property.

Descr: A type conforming to the type system specified in the common dictionary schema that specifies the data type of the property.

Oblig: Mandatory.

Trans: No translation.

Mapp: property_DET.domain

NOTE property_DET.domain refers to data_type which again will be subtyped for the various possible data types. Thus, the data type is directly attached to the property. However, an identification mechanism using a named_type and a data_type_BSU is also available for the cases where the same data type is intended to be used for different properties. When a data_type is intended to be used by different properties, the definition of this data_type as a named_type provides for separate up-dating of the data-type and of the properties that refer to it. 28 CWA 15556-2:2006 (E)

Preferred Name

Obj: To give a name of the property (in full length where possible). It is used for communication and understanding.

Descr: The preferred name is identical to the name that is used in International Standards if available. If the preferred name in the International Standard is longer than the maximum length allowed for this attribute it shall be meaningfully abbreviated.

Oblig: Mandatory.

Trans: To be translated.

For: 30, alphanumeric.

Mapp: property_DET\class_and_property_elements.names\item_names.preferred_name

Expl: Threaded diameter

Short Name

Obj: To give a name of the property for representation in limited space.

Descr: It is a meaningful abbreviation of the preferred name. If standardised abbreviations exist they should be used. It can be identical to the preferred name or letter symbol.

Oblig: Mandatory.

Trans: To be translated, in the case that the short name is identical to the letter symbol, it shall be the same in all languages.

For: 15, alphanumeric.

Mapp: property_DET\class_and_property_elements.names\item_names.short_name

Expl: thread_diam.

Preferred Letter Symbol

Obj: To allow a shorter name of the property. When it exists, it is used in place of the short name for representation in tables, formula, drawings etc...

Descr: The letter symbol is unique within a simple family of parts. It shall be derived from International Standards (e. g. ISO 31, IEC 27, IEC 148 and product standards). The preferred letter symbol is always provided in a text representation. It may also be provided in an SGML ISO 8879 representation.

Oblig: Optional.

Trans: No translation.

For: Alphanumeric and SGML format (if provided).

Mapp: property_DET.preferred_symbol

Synonymous Letter Symbol

Obj: To allow further shorter name of the property. It is used for representation in tables, formula, drawings etc…

Descr: The letter symbol is unique within a simple family of parts. It shall be derived from International Standards (e.g. ISO 31, IEC 27, IEC 148 and product standards). None, one 29 CWA 15556-2:2006 (E)

or more synonym letter symbols are allowed. The synonym letter symbol is always provided in a text representation. It may also be provided in an SGML representation.

Oblig: Optional.

Trans: No translation.

For: Alphanumeric and SGML format (if provided).

Mapp: property_DET.synonymous_symbols

Synonymous Name

Obj: Synonyms to the preferred name may be provided to facilitate transition from names used for local or historical reasons.

Descr: Alternative designation that differs from the given preferred name but represents the same concept. None, one or more synonymous names are allowed.

Oblig: Optional.

Trans: To be translated.

For: 30, alphanumeric.

Mapp: property_DET\class_and_property_elements.names\item_names

.synonymous_names

Property Type Classification

Obj: To classify the different properties defined in order to make large collections of property definitions more manageable.

Descr: The whole set of properties are divided into subsets according to the categories defined in ISO 31. The property type classification attribute is the reference to the ISO 31 category that is relevant for the property.

Oblig: Optional.

Trans: No translation.

For: One capital letter and two digits.

Mapp: property_DET.DET_Classification

NOTE 1 A survey of the main classes and categories of properties in ISO 31 is given in annex E. The ISO 31 classification of quantitative measure is given in Annex F. The ISO 31 classification of non quantitative properties, also called identifications and indicators, is given in Annex A.

Definition

Obj: To describe the meaning of the property.

Descr: Statement that describes the meaning of the property and permits its differentiation from all other properties. It shall be a definition in the sense that it shall be complete and unambiguous. All significant words are free from homonym and synonymy.

Oblig: Mandatory.

Trans: To be translated.

30 CWA 15556-2:2006 (E)

For: Unlimited alphanumeric string.

Mapp: property_DET\class_and_property_elements.definition

Source Document of Definition

Obj: A reference to the source document from which the property definition was derived.

Descr: As a minimum the reference shall be given with the document number and date of issue of the document.

Oblig: Optional.

Trans: No translation.

For: Alphanumeric. An identifier of the document.

Mapp: property_DET\class_and_property_elements.source_doc_of_definition\ identified_document.document_identifier

NOTE In an exchange conforming to ISO CD 13584 part 24, the document itself may be exchanged.

Note

Obj: To provide further information on any part of the terminological record, that is essential to the understanding of that record.

Descr: It shall be copied from the definition in the source document into the definition of the property.

Oblig: Optional.

Trans: To be translated.

For: Unlimited alphanumeric string.

Mapp: property_DET\class_and_property_elements.note

Remark

Obj: Explanatory text to further clarify the meaning of the usage of the property.

Descr: Free text remarks. It shall not influence the meaning.

Oblig: Optional.

Trans: To be translated.

For: Unlimited alphanumeric string.

Mapp: property_DET\class_and_property_elements.remark

Unit

Obj: Prescription of the unit in which the value of a quantitative property is expressed.

Descr: Only the symbols of basic SI units shall be used.

Oblig: Mandatory (for quantitative data).

Trans: No translation.

31 CWA 15556-2:2006 (E)

For: The unit is represented as specified in ISO 10303-41 using, if required, the extensions specified in the common dictionary schema. A mathematical string may be provided. A mathematical string is always provided in a text representation. It may also be provided in an SGML representation.

Mapp: property_DET.domain\int_measure_type.unit.structured_representation or property_DET.domain\real_measure_type.unit.structured_representation

NOTE In IEC 61360, the term unit_of_measure is used to denote this attribute.

Condition

Obj: To formally identify the context parameter on which a context dependent characteristic depends.

Descr: To give the code(s) of the adequate context parameter(s).

Oblig: Mandatory for context dependent characteristics.

Trans: No translation.

For: A reference to a set of basic semantic units.

Mapp: property_DET\dependent_P_DET.depends_on

Formula

Obj: Rule or statement in mathematical form expressing semantics of a quantitative property. A formula shall not change any essential information of the meaning of that definition.

Descr: It is a mathematical expression of the property definition.

Oblig: Optional.

Trans: No translation.

For: A mathematical string (a mathematical string is always provided in a text representation; it may also be provided in an SGML representation).

Mapp: property_DET.formula

Value Format

Obj: Specification of the type and length of the representation of the value of a property. It is intended as a maximum value format for communication and database storage.

Descr: The value format shall be defined according to the definition below:

a. Non-quantitative data value format types [ISO 9735: 1988]:

A = alphabetic characters, letters only

M = mixed, all characters allowed

N = numeric characters, digits only

X = alphanumeric characters, letters or digits only.

b. Quantitative data value format types [ISO 6093: 1985]:

NR1 = integers,

32 CWA 15556-2:2006 (E)

NR2 = rational numbers with decimal-mark (real),

NR3 = rational numbers with decimal-mark and exponent-mark (floating point),

S7 = signed (positive or negative),

. = decimal-mark,

E = exponent-mark, base 10: (A)E(B) represents the value Ax10B

c. Field length

The field length of a non-quantitative data value shall be indicated by a number (e.g. 17).

The following preferred standard formats -derived from ISO 9735 and ISO 6093 have been defined:

A..3 N..3 X..3 M..3

A..8 N..8 X..8 M..8

A..17 N..17 X..17 M..17

A..35 N..35 X..35 M..35

A..(nx35) N..(nx35) X..(nx35) M..(nx35)

In these formats no special characters shall be allowed. A variable field length shall start with two dots. A fixed field length shall start with one space (examples: A 3 - N 8 - X 17 - M 35 etc.).

The field length of a quantitative data value shall be indicated by a combination of digits and characters (e.g. 3.3ES2). The following preferred standard formats -derived from ISO 9735 and ISO 6093- have been defined:

NR1..4 positive integers

NR1 S..4 positive or negative integers

NR2..3.3 positive reals

NR2 S..3.3 positive or negative reals

NR3..3.3ES2 floating point, positive

NR3 S..3.3ES2 floating point, positive or negative

In these formats no special characters shall be allowed. A variable field length shall start with two dots. A fixed field length shall start with one space (examples: NR1 4 - NR1 S 4 etc.).

Oblig: Mandatory.

Trans: No translation.

For: 15, alphanumeric.

7 In addition to ISO 6093 the sign ' S ' is used as a marker for ' signed ' (should read ' Sign '). 33 CWA 15556-2:2006 (E)

Mapp: property_DET.domain\simple_type.value_format

NOTE In case of named types the mapping may be done through a chain of named_types.

Date of Original Definition

Obj: To show when the property was defined by the library data supplier and thus when it was declared as valid by this supplier. This date will never be changed and can be used for verification purpose.

Descr: The entry shall be in accordance with ISO 8601.

Oblig: Mandatory.

Trans: No translation.

For: 10, alphanumeric.

Mapp: property_DET\dictionary_element.time_stamps\dates.date_of_original_definition

Expl: 1967-08-20.

Date of Current Version

Obj: To show the date when the current version was defined.

Descr: The entry shall be in accordance with ISO 8601.

Oblig: Mandatory.

Trans: No translation.

For: 10, alphanumeric.

Mapp: property_DET\dictionary_element.time_stamps\dates.date_of_current_version

Date of Current Revision

Obj: To show the date of the last revision number change.

Descr: The entry shall be in accordance with ISO 8601.

Oblig: Mandatory.

Trans: No translation.

For: 10, alphanumeric.

Mapp: property_DET\dictionary_element.time_stamps\dates.date_of_current_revision

Version Number

Obj: To characterise each version of a property. A new version number of a property shall be created whenever a change in some attribute that describes this property influences its use.

NOTE 1 No change is allowed that affects the meaning of a property.

NOTE 2 The changes in a property that affect its version number are defined in 7.3.1, Table 1.

34 CWA 15556-2:2006 (E)

Descr: A string that contains a natural number to indicate the different versions of a property during the life cycle. Version numbers shall be issued in ascending order. A new version of the property shall be generated according to the definitions given in Table 1 (see 7.3).

Oblig: Mandatory.

For: 3, numerical.

Trans: No translation.

Mapp: property_DET\dictionary_element.identified_by\basic_semantic_unit.version

Revision Number

Obj: To characterise each revision of the same version of a property. A new revision number of a property shall be created when a change in some attribute that describes this property influence neither its meaning nor its use.

NOTE 1 No change is allowed that affects the meaning of a property.

NOTE 2 The changes in a property that affect its revision number are defined in 7.3.1, table 1.

Descr: A string that contains a natural number used for administrative control of a property. Consecutive revision numbers shall be issued in ascending order for each value of the version of a property. Per property, unique by its identifier, only one revision number is current at any time. A new revision number of the property shall be generated according to the definitions given in table 1 (see 7.3).

Oblig: Mandatory.

For: 3, numerical.

Trans: No translation.

Mapp: property_DET\dictionary_element.revision

Rules for defining new versions and/or revision of properties

Changes in the attribute of properties

Two concepts are provided to mark updating operations for properties. The concept of version number is a tag for identifying data (it is related to a BSU) whereas the concept of revision number is one for description data of properties (it is related to a Dictionary Element).

The following table (see table 1) gives an overview of how updating operations (add, modify, delete of each attribute of a property) have effects on the version number (V) or the revision number (R) concept for the given property. There are cases where the denoted operation is meaningless on the conceptual level, and syntactically constrained in the common dictionary schema (–), or forbidden at all (X). The table does not reflect the creation of a property. To modify means to modify the value of the attribute.

35 CWA 15556-2:2006 (E)

Table 1 — Overview of versioning in property updating operations

Attribute Add Modify Delete

Code – X X Definition Class X X X Data type – V8 X Preferred Name – R X Short Name – R X Preferred Letter Symbol R R X Synonymous Letter Symbol R R R Synonymous Name R R R Property Type Classification – R9 X Definition – R/V10 X Source Document of Definition R11 R8 R Note R8 R8 R Remark R8 R9 R Unit – X X Condition X X/R12 X Formula R8 R8 R8 Format – V X Date of Original Definition – X X Date of current version – V X Date of Current Revision – R / V X Version Number – V X Revision Number – R X

Propagated changes in property version numbers

The following table (see table 2) specifies which changes in a property attribute shall lead to new version of this property.

8 The SUBTYPE of the data_type entity that defines the domain can not be changed (X). The only allowed changes consist of 1 - Adding new allowed values in an enumerated type, modelled either as a non_quantitative_code_type entity or a non_quantitative_int_type entity; or 2 - Changing the version of the class that constitutes the domain of the property (is_part_of relationship for assemby modelling). 3 - Changing the version of the data_type_BSU that identifies the domain of the property These three changes modify the version (V) of the property. 9 Only allowed in case of revision of ISO 31 or of this part of the ISO 13584 series. 10 The changes in definition shall not affect the abstract property referred to by the definition. Nevertheless it may change the specification of the measure process to be used to evaluate the value of this property. If the changes in the definition affect this measure process it leads to a new version, else it leads to a new revision. 11 This change shall not affect the abstract property referred to by the property attributes. 12 The context parameters (modelled as condition_DET) on which a context dependant characteristic modelled as dependent_P_DET depend shall not be changed. Nevertheless, change in the version of some of these condition_DETs leads to change of version of the dependent_P_DET. 36 CWA 15556-2:2006 (E)

Table 2 — Propagated changes in version numbers of properties

Attribute Changed item

Data type property_DET.domain\non_quantitative_code_type.domain.its_values13 property_DET.domain\non_quantitative_int_type.domain.its_values13

property_DET.domain\Class_Instance_Type.domain.version

property_DET.domain\Named_Type.referred_type.version

Condition property_DET\dependent_P_DET.depends_on[.].version14

Dictionary elements that describe families of parts

Mapping of families onto the common dictionary schema

A family is mapped in the common dictionary schema onto a class_BSU that carries its identification and a component_class that provides its description.

In this section, only the attributes linked directly to a class are described.

Attributes

Each family of parts is described by a dictionary element that contains the following attributes:

Code

Superclass

Preferred Name

Short Name

Synonymous Name

Visible Types

Applicable Types

Sub-class Selection Properties

Visible Properties

Applicable Properties

Class Value Assignment

Definition,

Source Document of Definition

13 Values shall only be added 14 Version change of any property in the set 37 CWA 15556-2:2006 (E)

Note

Remark

Simplified Drawing

Date of Original Definition

Date of Current Version

Date of Current Revision

Version Number

Revision Number

The entry for each attribute is structured in the following way (entries may be omitted if not applicable):

— Name of the attribute;

— Obj: Objective;

— Descr: Description;

— Oblig: Obligation;

— Trans: Need for translation;

— For: Representation format or maximal number and type of characters if it is a string;

— Mapp: Mapping onto the resource constructs used in the common dictionary schema;

— Expl: Example.

Code

Obj: To identify a family of parts and to allow an absolute identification within the data dictionary when associated with the library data supplier code.

Descr: A basic semantic unit associated with the family of parts.

Oblig: Mandatory.

Trans: No translation.

Mapp: component_class\dictionary_element.identified_by\basic_semantic_unit.code

Superclass

Obj: To reference the immediate (unique) parent family of a family.

Descr: A basic semantic unit of the immediate parent family of the current family.

Oblig: Optional (if it does not exist, the class has no superclass).

Trans: No translation.

For: A Class basic semantic unit.

Mapp: component_class\class.its_superclass

38 CWA 15556-2:2006 (E)

NOTE 1 When defining a standardised identification hierarchy, all the defined classes shall have a superclass. The root of such a tree shall be either one class of the ISO/IEC International Classification for Standards (ICS) predefined tree, or a class already defined by another standardised identification hierarchy.

NOTE 2 The code of the class that correspond to each node of the tree defined in the ISO/IEC ICS shall be equal to the code defined in ICS: 1993, where dots are replaced by underscores. The code of the ICS: 1993 root shall be 'OO'.

NOTE 3 The version of the class that corresponds to each node of the tree defined in the ISO/IEC ICS shall be equal to '001', unless other versions be specified by an ISO/IEC standard that integrates, in its normative references, both ISO 13584-42 and IEC 61360-2.

NOTE 4 The class_BSUs that carry the identity of the classes that correspond to the node of the tree defined in the ISO/IEC ICS shall refer in their defined_by attribute, to the special code defined in ISO 13584-26 for ISO/IEC ICS.

Preferred Name

Obj: To give a meaningful description of the family of parts (in full length where possible). It is used for communication and understanding.

Descr: The preferred name is identical to the name that is used in International Standards if available. If the preferred name in the International Standards is longer than the max. length allowed for this attribute it shall be meaningfully abbreviated.

Oblig: Mandatory.

Trans: To be translated.

For: 30, alphanumeric.

Mapp: component_class\class_and_property_elements.names\item_names .preferred_name

Expl: Screw threads.

Short Name

Obj: To give a name to the family of parts for representation in limited space.

Descr: It is a meaningful abbreviation of the preferred name. If standardised abbreviations exist they should be used. It can be identical to the preferred name.

Oblig: Mandatory.

Trans: To be translated, in the case that the short name is identical to the letter symbol, it will be the same in all languages.

For: 15, alphanumeric.

Mapp: component_class\class_and_property_elements.names\item_names.short_name

Synonymous name

Obj: Synonyms to the preferred name may be provided to facilitate transition from names used for local or historical reasons.

Descr: Alternative designation that defers given preferred name but represents the same concept. None, one or more synonymous names are allowed.

Oblig: Optional.

Trans: To be translated.

39 CWA 15556-2:2006 (E)

For: 30, alphanumeric.

Mapp: component_class\class_and_property_elements.names\ item_names.synonymous_names

Visible Types

Obj: To define the new named types that may be referred to, as their data type, by the visible properties of this family, or of any of its subfamilies (visible type).

Descr: Different properties may have the same data type of values (e.g., a set of codes that identify materials). Such data types may be defined as named types, independently of any property. They may be, later on, referred to as their data type by different properties. The definition of named type shall contain the code of the named type, the version number of the named type, and the data type of the named type specified by using the resource constructs of the common dictionary schema. For the non_quantitative_code_type and non_quantitative_int_type the data type shall be specified as a set of dic_values each one consisting of an unique code and a set of names (possibly translated).

Oblig: Optional.

Trans: In case of non_quantitative_code_type and non_quantitative_int_type value names are to be translated

For: data_type_BSUs and data_type_elements

Mapp: component_class\dictionary_element.identified_by\ class_BSU.added_visible_data_types

NOTE 1 Visible types are inherited.

NOTE 2 Visible types that are not also applicable types may only be referenced to define the data type of the visible properties of the family (or of any of its subfamilies).

EXAMPLE A named_type "material" may be defined at the level of some family as a non_quantitative_code_type. The set of values of this named type consists of a set of codes associated with different (translated) names. This named type may be referenced in some (sub-) family to define the data type of the property that corresponds to the material the parts of the family consist of. It may be referenced in some other (sub-) family to define the data type of the property that corresponds to the coating of the parts of the family.

Applicable Types

Obj: To define which visible types are allowed as data type for the properties applicable to the family (or any of its sub-families).

Descr: The list of the code of the defined or inherited visible types of the family that become applicable types for the family (and any of its sub-families).

Oblig: Optional.

Trans: No translation.

For: A list of data_type_BSUs.

Mapp: component_class\class.defined_types.

Sub-class Selection Properties

Obj: To define which (new) class valued properties shall be assigned a value in any simple part family that is a sub-family of the current family.

40 CWA 15556-2:2006 (E)

Descr: A class valued property enables representation of different perspectives on the set of parts that belongs to the current family. When a class valued property is defined at the level of some family, the dictionary user may query all the simple sub-families of this family for which this class valued property is assigned some value.

Oblig: Optional.

Trans: No translation.

For: A list of property_BSUs.

Mapp: component_class\item_class.sub_class_properties

NOTE 1 Sub-class selection properties are inherited. They shall not appear in the sub-class selection properties list of any sub-family.

NOTE 2 In each simple family of parts, each class valued property defined as sub-class selection properties in any upper family shall be assigned a value.

Visible Properties

Obj: To specify the new properties that are defined at the level of this family and may be thus specified as applicable to the family or any of its sub-families (visible properties).

Descr: The new properties (with respect to inheritance) that the parts belonging to the generic or simple family of parts may or may not possess according to the subfamilies they belong to.

For: A set of property_BSUs.

Oblig: Mandatory (possibly empty).

Mapp: component_class\dictionary_element.identified_by\ class_BSU.added_visible_properties

Applicable Properties

Obj: To specify the new properties that are specified as applicable for that family and for any of its sub-families.

Descr: The new properties (with respect to inheritance) that the parts belonging to the generic or simple family of parts shall possess. The properties of this list shall be visible for the family, i.e., they shall be defined as visible either by this family or by a family higher in the hierarchy. The LIST order shall correspond to the default presentation order of the properties in any case where such an order shall be defined (e.g., to display the properties of some classes on a screen).

For: List of property_BSUs.

Oblig: Mandatory (possibly empty).

Mapp: component_class\class.described_by

Class Value Assignement

Obj: To define the values assigned to some class valued properties specified as Sub-Class Selection Properties in the familly or any family higher in the hierarchy.

Descr: Class valued properties are intended to be queried by the user to select a set of families for which such a property has a given value. Once a value is assigned to a class valued property, this value is inherited and shall not be redefined.

41 CWA 15556-2:2006 (E)

For: A set of Class_Value_Assignments.

Oblig: Optional.

Mapp: component_class\item_class.class_constant_values

Definition

Obj: To clarify the meaning of the family by giving its intention textually.

Descr: Statement that describes the meaning of the family and permits its differentiation from all other families. It shall be a definition in the sense that it shall be complete and unambiguous. All significant words are free from homonymy (homonym) and synonymy.

Oblig: Mandatory.

Trans: To be translated.

For: Unlimited alphanumeric string.

Mapp: component_class\class_and_property_elements.definition

Source Document of Definition

Obj: A reference to the source document from which the family definition was derived.

Descr: As a minimum the reference shall be given with the document number and date of issue of the document.

Oblig: Optional.

Trans: No translation.

For: Alphanumeric. An identifier of the document.

Mapp: component_class\class_and_property_elements. source_doc_of_definition\identified_document.document_identifier

NOTE In an exchange conforming to ISO CD 13584 part 24, the document itself may be exchanged.

Note

Obj: To provide further information on any part of the terminological record, that is essential to the understanding of that record.

Descr: It shall be copied from the definition in the source document into the definition of the family of parts.

Oblig: Optional.

Trans: To be translated.

For: Unlimited alphanumeric string.

Mapp: component_class\class_and_property_elements.note

Remark

Obj: Explanatory text to further clarify the meaning of the usage of the family of parts.

Descr: Free text remarks. It shall not influence the meaning.

42 CWA 15556-2:2006 (E)

Oblig: Optional.

Trans: To be translated.

For: Unlimited alphanumeric string.

Mapp: component_class\class_and_property_elements.remark

Simplified Drawing

Obj: To provide a visualisation, on request of the user, that shows an image of the class of parts.

Descr: A drawing including at least the reference coordinate system of the part (that is to be used for all the representations of this part), and the letter symbols of the main applicable properties.

Oblig: Mandatory for all the families that may be instanciated.

Trans: No translation.

For: An ABSTRACT SUPERTYPE.

Mapp: component_class\item_class.simplified_drawing

NOTE ISO CD 13584 part 24 provides an exchange format for such drawings.

Date of Original Definition

Obj: To show when the family of parts was defined by the library data supplier and thus when it was declared as valid by this supplier. This date will never be changed and can be used for verification purpose.

Descr: The entry shall be in accordance with ISO 8601.

Oblig: Mandatory.

Trans: No translation.

For: 10, alphanumeric.

Mapp: component_class\dictionary_element.time_stamps.date_of_original_definition

Expl: 1967-08-20

Date of Current Version

Obj: To show the date when the current version was defined.

Descr: The entry shall be in accordance with ISO 8601.

Oblig: Mandatory.

Trans: No translation.

For: 10, alphanumeric.

Mapp: component_class\dictionary_element.time_stamps.date_of_current_version

Date of Current Revision

Obj: To show the date of the last revision number change.

43 CWA 15556-2:2006 (E)

Descr: The entry shall be in accordance with ISO 8601.

Oblig: Mandatory.

Trans: No translation.

For: 10, alphanumeric.

Mapp: component_class\dictionary_element.time_stamps. date_of_current_revision

Version Number

Obj: To characterise each version of a class. A new version number of a class shall be defined when ever a change in the attributes that describes this class influences its use.

NOTE 1 No change is allowed that affects the meaning of a class.

NOTE 2 The changes in a class that affect its version number are defined in 8.3.1, table 3.

Descr: A string that contains a natural number to indicate the different versions of a family during the life cycle. Version numbers shall be issued in ascending order. A new version number of a family shall be generated according to the definitions given in table 3 (see 8.3).

Oblig: Mandatory.

For: 3, numeric.

Trans: No translation.

Mapp: component_class\dictionary_element.identified_by\basic_semantic_unit.version

Revision Number

Obj: To characterise each revision of a version of a class. A new revision number of a class shall be defined when ever a change in the attributes that describes this class influences neither its meaning nor its use.

NOTE 1 No change is allowed that affects the meaning of a class.

NOTE 2 The changes in a class that affect its revision number are defined in 8.3.1, table 3.

Descr: A string that contains a natural number used for administrative control of a class. Consecutive revision numbers shall be issued in ascending order for each value of the version number of a class. Per class, unique by its identifier, only one revision number is current at any time. A new revision number of the class shall be generated according to the definitions given in table 3 (see 8.3).

For: 3, numeric.

Trans: No translation.

Mapp: component_class\dictionary_element.revision

Rules for defining new version or revision of classes

Change in the attribute of class

Two concepts are provided to mark updating operations for families of parts. The concept of version number is a tag for identifying data (it is related to a BSU) whereas the concept of revision number is one for description data of families of parts (it is related to a Dictionary element).

44 CWA 15556-2:2006 (E)

The following table gives an overview of how updating operations (add, modify, delete of some attributes of a class) have effects on the version number (V) or the revision number (R) concept for the given class. There are cases, where the denoted operation is meaningless , and syntactically constrained in the common dictionary schema (–), or forbidden at all (X). The tables do not reflect the creation of a family. To modify means to modify the value of the attribute.

Table 3 — Overview of versioning in class updating operations

Attribute Add Modify Delete

Code – X X Superclass V15 V15 V15 Preferred Name – R X Short Name – R X Visible Types V V16 X Applicable Types V V16 X Sub-Class Selection Properties V V16 X Synonymous name R R R Visible Properties V V16 X Applicable Properties V V16 X Class Value Assignment V V16 X Definition – R17 X Source Document of Definition R R R Note R R R Remark R R R Simplified Drawing – R R Date of Original Definition – X X Date of current version – V X Date of Current Revision – R / V X Version number – V X Revision number – R X

Propagated changes in family version numbers

Any change of version number of a family leads to a change of version number of its sub-family (see table 3: Modify Superclass), and of the sub-families of this family, and so on. Therefore, all the changes that change the version number of the inherited properties or types of a family change the version number of this family.

When a part family, intentionally defined by a set of dictionary data, belongs to a parts library, the class that constitutes the information model of this part family may also reference other basic semantic units (tables and documents), and it may be associated with a content_item that defines the extension of this class.

15 Modification of superclass shall not remove any inherited visible or applicable property or type. It may consist either in changing the version of the referenced superclass, that defines a new version of the sublass, or, e.g., in adding an intermediate class in between one class and its previous superclass. 16 Modification shall consist only in addition of new items or in change in version of referenced items. No other modification shall take place. No item shall be removed. 17 This change shall not affect the abstract population referred to by the class data element type. 45 CWA 15556-2:2006 (E)

NOTE 1 The concept of extension of a class is defined in in ISO 13584-2418.

NOTE 2 The information model of a family of parts in a parts library in defined in ISO 13584-2418.

Any change in the content_version that characterises the extension of a family of parts in a parts library, and any change in the version number of the tables that are referenced from the class that constitutes the information model of the family of parts or in the version number of the tables that reference this class through their name_scope attribute shall lead to a new version number of the family.

18 To be published

46 CWA 15556-2:2006 (E)

Bibliography

1) ISO 639: 1988, Language Codes.

2) ISO 843: 1990, Documentation - International system for the transliteration of Greek characters into Latin characters.

47 CWA 15556-2:2006 (E)

Annex A (normative) Survey of type classification codes of non-quantitative data element types (main class A)

Type classification code Description

A11 Geographical unit (greater than a place) A12 Geographical location (place or smaller) A13 Geographical route and network A21 Organization A22 Functionary A31 Date and time period A32 Time of day A41 Private person A51 Product A52 Product class A53 Product batch and package (type) A54 Transport mode, means and unit A55 Manufacturing process and technology A56 Product function and application A57 Material A58 Product geometry, shape, and size A59 Product quality, performance, and test A61 document and message A62 Information element and information group A63 Data medium and transmission unit A71 Measuring unit A79 Type of measurement A81 Account A82 Project, project activity A83 Procedure A91 Abstract identification such as language, colour, etc. A93 Clause

48 CWA 15556-2:2006 (E)

Annex B (normative) Short names of entities

Table B.1 provides the short names of entities specified in this part of ISO 13584. Requirements on the use of short names are found in the implementation methods included in ISO 10303

Table B.1 - Short names of entities

Long name Short name AXIS1_PLACEMENT_TYPE AXPLTY AXIS2_PLACEMENT_2D_TYPE AP2T AXIS2_PLACEMENT_3D_TYPE AP3T BASIC_SEMANTIC_UNIT BSSMUN BOOLEAN_TYPE BLNTYP CLASS CLASS CLASS_AND_PROPERTY_ELEMENTS CAPE CLASS_BSU CLSBS CLASS_BSU_RELATIONSHIP CLBSRL CLASS_INSTANCE_TYPE CLINTY CLASS_RELATED_BSU CLRLBS CLASS_VALUE_ASSIGNMENT CLVLAS COMPLEX_TYPE CMPTYP COMPONENT_CLASS CMPCLS CONDITION_DET CNDDT CONTENT_ITEM CNTITM DATA_TYPE DTTYP DATA_TYPE_BSU DTTYBS DATA_TYPE_ELEMENT DTTYEL DATES DATES DEPENDENT_P_DET DPPDT DICTIONARY_ELEMENT DCTELM DIC_UNIT DCUNT DIC_VALUE DCVL DOCUMENT DCMNT ENTITY_INSTANCE_TYPE ENINTY GLOBAL_LANGUAGE_ASSIGNMENT GLLNAS

49 CWA 15556-2:2006 (E)

Table B.1 (concluded)

Long name Short name GRAPHICS GRPHCS IDENTIFIED_DOCUMENT IDNDCM INT_CURRENCY_TYPE INCRTY INT_MEASURE_TYPE INMSTY INT_TYPE INTTYP ITEM_CLASS ITMCLS ITEM_NAMES ITMNMS LABEL_WITH_LANGUAGE LBWTLN LEVEL_TYPE LVLTYP MATERIAL_CLASS MTRCLS MATHEMATICAL_STRING MTHSTR NAMED_TYPE NMDTYP NON_DEPENDENT_P_DET NDPD NON_QUANTITATIVE_CODE_TYPE NQCT NON_QUANTITATIVE_INT_TYPE NQIT NON_SI_UNIT NNSUN NUMBER_TYPE NMBTYP PLACEMENT_TYPE PLCTYP PRESENT_TRANSLATIONS PRSTRN PROPERTY_BSU PRPBS PROPERTY_DET PRPDT REAL_CURRENCY_TYPE RLCRTY REAL_MEASURE_TYPE RLMSTY REAL_TYPE RLTYP SIMPLE_TYPE SMPTYP STRING_TYPE STRTYP SUPPLIER_BSU SPPBS SUPPLIER_BSU_RELATIONSHIP SPBSRL SUPPLIER_ELEMENT SPPELM SUPPLIER_RELATED_BSU SPRLBS TRANSLATED_LABEL TRNLBL TRANSLATED_TEXT TRNTXT VALUE_DOMAIN VLDMN

50 CWA 15556-2:2006 (E)

Annex C (normative) Information object registration

C.1 Document identification

In order to provide for unambiguous identification of an information object in an open system, the object identifier

{ iso standard 13584 part (42) version(1) } is assigned to this part of ISO 13584. The meaning of this value is defined in ISO 8824-1.

C.2 Schema identification

C.2.1 ISO13584_IEC61360_dictionary_schema

The ISO13584_IEC61360_dictonary_schema is assigned the object identifier

{ iso standard 13584 part (42) version(1) object(1) ISO13584-IEC61360-dictionary-schema(1) }

C.2.2 ISO13584_IEC61360_language_resource_schema

The ISO13584_IEC61360_language_resource_schema is assigned the object identifier

{ iso standard 13584 part (42) version(1) object(1) ISO13584-IEC61360-language-resource- schema(2)}

51 CWA 15556-2:2006 (E)

Annex D (informative) Common IEC/ISO dictionary schema

This annex provides the common information model of ISO 13584-42 and IEC 61360. The normative version is published in IEC 61360-2. This informative annex duplicates the normative content of IEC 61360-2 and provides, by means of NOTEs, some additional explanations referring to this part of ISO 13584.

In this annex references to clauses within ISO 13584-42 are shown in the form "6.2.1" while references to paragraphs in Annex D are prefixed with the capital letter D, thus "D.3.3.3".

D.1 General

D.1.1 Scope and object of the common dictionary schema

The scope the common ISO/IEC dictionary schema based is defined by the intersection of the scopes of the two base standards:

— IEC 61360-1, " Standard data element types with associated classification scheme for electric components - Part 1: Definitions - Principles and methods", generated by IEC TC3 SC3D and

— ISO 13584-42, " Methodology for structuring part families" generated by ISO/TC184/SC4/WG2.

The presented EXPRESS model represents a common formal model for the two documents and facilitates a harmonization of both.

Relevant parts of their scope clauses are cited below.

From IEC 61360-1: "This part of IEC 61360 specifies the principles that shall be used for defining technical data element types with associated classification schemes needed to describe electric components, including electronic and electromechanical components and materials used in electro- technical equipment and systems."

From ISO 13584-42: "This part of ISO 13584 specifies:

— the attributes that shall be provided by library data suppliers to describe the families and properties of parts.

— the specifications of those attributes in the EXPRESS information model that provides for the exchange of such dictionary data".

The object of this EXPRESS schema is to provide a formal model for data according to the scopes as given above, and thus to provide a means for the computer-sensible representation and exchange of such data.

The intention is to provide a common information model for the work of both committees, thus allowing for the implementation of dictionary systems dealing with data delivered according to either of the standards elaborated by both committees.

D.1.2 Interoperability of ISO 13584 and IEC 61360

In the ISO 13584 Standard series, the common dictionary schema is used in ISO 13584-2419 to define the requirements that should be fulfilled by an ISO 13584-compliant implementation.

19 To be published

52 CWA 15556-2:2006 (E)

ISO 13584-24 provides for a number of options that may be supported by an implementation. These options have been grouped into conformance classes. Conformance to a particular conformance class requires that all entities, types, and associated constraints defined as part of that class shall be supported. Support for a particular conformance class requires support of all the options specified in this class.

Conformance class 0 of the view exchange protocol 24-1, documented in ISO 13584-24, corresponds to the common ISO and IEC requirements defined in the ISO13584_IEC61360_dictionary_schema. An ISO 13584 compliant implementation conform to that conformance class shall therefore support all the entities, types and associated constraints defined in the common dictionary schema. All the other conformance classes of the view exchange protocol 24-1 including the requirements of conformance class 0, the same capability shall be provided by any ISO 13584-compliant implementation supporting the view exchange protocol 24-1.

In IEC 61360-2, two schemata are provided, these two schemata defining two options that may be selected by an IEC 61360-compliant implementation. Each of these options is referred to as a conformance class.

— The ISO13584_IEC61360_dictionary_schema provides for modelling and exchanging technical data element types with associated classification scheme but without modelling the definitions of the terms used in the data element type definitions. It constitutes conformance class 1 of IEC 61360-2;

— The IEC61360_extended_dictionary_schema provides for modelling and exchanging technical data element types with associated classification scheme together with modelling definitions of and references to the terms used in the data element type definitions. It constitutes conformance class 2 of IEC 61360-2.

When used together with ISO 10303-21, each schema defines one single exchange format.

The exchange format defined by conformance class 1 of IEC 61360-2 is fully compatible with conformance class 0 of the view exchange protocol 24-1 defined in ISO 13584-24.

Conformance class 2 of IEC 61360-2 including the requirement of its conformance class 1, any ISO 13584-compliant or IEC 61360-compliant implementation shall support all the entities, types and associated constraints defined in the common dictionary schema.

Both committees agreed NOT to change and/or modify the presented EXPRESS model independent of each other in order to guarantee the harmonization and the reusability of the work from both committees. Requests for amendments should therefore be sent to both committees. These requests should be adopted by both committees before modifying the EXPRESS information model.

D.2 Overview of the dictionary schema

This section explains the main resource constructs provided by the common dictionary schema.

— dictionary_element is any element defined in the dictionary;

— supplier_element captures the data of suppliers of dictionary elements (classes, properties, datatypes);

— class models the dictionary element of classes (families) that are described by properties;

— property_DET is the dictionary element of a property;

— data_type specifies the type of a property.

These parts of the dictionary schema are presented in more detail in the following clause D.3 "ISO13584_IEC61360_dictionary_schema".

53 CWA 15556-2:2006 (E)

In the presentation of the common dictionary schema, some overview diagrams are provided as planning models (figure D.1 to figure D.11). These planning models use the EXPRESS-G graphical notation for the EXPRESS language.

For clarification of the diagrams, some of the relationships that are defined in the EXPRESS model are omitted. The figure D.1 below outlines as a planning model the main structure of the common dictionary schema.

(ABS) dictionary_element

1

(ABS) supplier_element (ABS) (ABS) data_type defined_by class property_DET domain described_by L[0:?]

Figure D.1 — Overview of the dictionary schema

Most of these figures contain overview models (or planning models) but show only that level of detail that is appropriate at a certain place.

D.3 ISO13584_IEC61360_dictionary_schema

This clause, that constitutes the main part of the common information model of ISO 13584-42 and IEC 61360, contains the full EXPRESS listing of the dictionary schema, annotated with comments and explanatory text. The order of text in this clause is determined primarily by the order imposed by the EXPRESS language, secondarily by importance.

EXPRESS specification:

*) SCHEMA ISO13584_IEC61360_dictionary_schema; (*

D.3.1 References to other schemata

This subclause contains references to other EXPRESS schemata that are used in the dictionary schema. Their source is indicated in the respective comment.

EXPRESS specification:

*) REFERENCE FROM support_resource_schema(identifier, label, text); (* from ISO 10303-41: STEP Part 41: "Fundamentals of Product Description and Support" *) REFERENCE FROM person_organization_schema(organization, address); (* from ISO 10303-41: STEP Part 41: "Fundamentals of Product Description and Support" *) REFERENCE FROM measure_schema; (* from ISO 10303-41: STEP Part 41: "Fundamentals of Product Description and Support" *) REFERENCE FROM ISO13584_IEC61360_language_resource_schema; 54 CWA 15556-2:2006 (E)

(* see clause D.4 "ISO13584_IEC61360_language_resource_schema" *) (*

D.3.2 Constant definitions

This subclause contains constant definitions used later in type definitions (see D.3.8 "Basic Type and Entity Definitions").

EXPRESS specification:

*) CONSTANT property_code_len: INTEGER := 14; class_code_len: INTEGER := 14; data_type_code_len:INTEGER := 14; supplier_code_len: INTEGER := 70; version_len: INTEGER := 9; revision_len: INTEGER := 3; value_code_len: INTEGER :=18; pref_name_len: INTEGER := 70; short_name_len: INTEGER := 30; syn_name_len: INTEGER := pref_name_len; DET_classification_len: INTEGER := 3; source_doc_len: INTEGER := 80; value_format_len: INTEGER := 80; sep_cv: STRING := '-'; sep_id: STRING := '.'; END_CONSTANT; (*

D.3.3 Basic Semantic Units: defining and using the dictionary

D.3.3.1 Requirements for exchange

In the exchange of dictionary and part library data it is customary to partition the data. For example, a dictionary could be updated with some classes that specify their superclass by a reference to a pre- existing class, or when the content of a library is exchanged, dictionary elements are only referenced and not included every time. It must be possible to refer unambiguously and consistently to the dictionary data.

Thus, it is a clear requirement first, to be able to exchange pieces of data, and second, to have relationships between these pieces. This is depicted in figure D.2.

55 CWA 15556-2:2006 (E)

Figure D.2 — Pieces of data with relationships

Every one of these pieces corresponds to a physical file (according to ISO 10303-21). EXPRESS (ISO 10303-11) attributes can only contain references to data within the same physical file. Thus it is impossible to use EXPRESS attributes directly to implement inter-piece references.

D.3.3.2 Three levels architecture of the dictionary data

In this clause the concept of basic_semantic_unit (BSU) is introduced as a means to implement these inter-piece references. A BSU provides an universally unique identification for dictionary descriptions. This is depicted in figure D.3.

Assume some piece of content (content_item) wants to refer a certain dictionary description, e.g. to convey the value of a property of a component. It does this by referring to a basic semantic unit through the attribute dictionary_definition.

A dictionary description (dictionary_element) refers to a basic semantic unit through the attribute identified_by. From the correspondence of the absolute identifiers of the basic semantic units this indirect relation is established.

Note that:

— both dictionary element and content item can be present in the same physical file, but need not be;

— the dictionary element does not need to be present for the exchange of some content item referring to it. In this case it is assumed to be present in the dictionary of the target system already. Conversely, dictionary data can be exchanged without any content data;

— the basic semantic unit can be one single instance in the case where both dictionary element and content item instances are in the same physical file;

— the same mechanism applies also to references between various dictionary elements (e.g. between a component class and the associated property_DETs).

56 CWA 15556-2:2006 (E)

Figure D.3 — Implementation of "inter-piece" relationships using basic semantic units

A BSU provides a reference to a dictionary description in any place where this is needed, e. g. dictio- nary delivery, update delivery, library delivery, component data exchange. The data associated with a property e.g. could be exchanged as a couple (property_BSU, ).

Figure D.3 outlines the implementation of this general mechanism.

D.3.3.2.1 Basic_semantic_unit

A basic_semantic_unit is an unique identification of a dictionary_element. BSU is the abbreviation of basic semantic unit.

EXPRESS specification:

*) ENTITY basic_semantic_unit ABSTRACT SUPERTYPE OF(ONEOF( supplier_BSU, class_BSU, property_BSU, data_type_BSU, supplier_related_BSU, class_related_BSU));

code: code_type; version: version_type; DERIVE dic_identifier: identifier := code + sep_cv + version; INVERSE

57 CWA 15556-2:2006 (E)

definition: SET [0:1] OF dictionary_element FOR identified_by; referenced_by: SET [0:1] OF content_item FOR dictionary_definition; END_ENTITY; -- basic_semantic_unit (*

Attribute definitions:

code: the code assigned to identify a certain dictionary element.

version: the version number of a certain dictionary element.

dic_identifier: the full identification, consisting of concatenation of code and version.

definition : a reference to the dictionary element identified by this BSU. If not present in some exchange context, it is assumed to be present in the dictionary of the target system already.

referenced_by: items making use of the dictionary element associated with this BSU.

D.3.3.2.2 Dictionary_element

A dictionary_element is a full definition of the data required to be captured in the semantic dictionary for some concept. For every concept, a separate subtype is to be used. The dictionary_element is associated with a basic_semantic_unit (BSU), that serves to uniquely identify this definition in the dictionary.

By including the version attribute in the basic_semantic_unit entity, it forms part of the identification of a dictionary element (in contrast to the revision and time_stamps attributes).

EXPRESS specification:

*) ENTITY dictionary_element ABSTRACT SUPERTYPE OF(ONEOF( supplier_element, class_and_property_elements, data_type_element));

identified_by: basic_semantic_unit; time_stamps: OPTIONAL dates; revision: revision_type; END_ENTITY; -- dictionary_element (*

Attribute definitions:

identified_by: the BSU identifying this dictionary element.

time_stamps: the optional dates of creation and update of this dictionary element.

revision: the revision number of this dictionary element.

NOTE 1 The type of the identified_by attribute will be redeclared later to property_BSU and class_BSU and will then be used to encode together with the code attribute of the BSUs the "Code" attribute for properties (see 6.2) and classes (see 7.2) respectively. It will also be used to encode the "Version Number" attribute for properties and classes respectively.

58 CWA 15556-2:2006 (E)

NOTE 2 The time_stamps attribute will be used as a starting point to encode in the dates entity the property and class attributes "Date of Original Definition", "Date of Current Version" and "Date of Current Revision" (see 6.2, 7.2 and D.3.8.2).

NOTE 3 The revision attribute will be used to encode the property and class attribute "Revision Number" (see 6.2 and 7.2).

Figure D.4 presents a planning model of the relationship between basic semantic unit and the dictionary element.

(ABS) dictionary_element

(INV) identified_by definition S[0:1]

code STRING

(ABS) version basic_semantic_unit STRING

(DER) dic_identifier STRING

(INV) referenced_by S[0:1] dictionary_definition

(ABS) content_item

Figure D.4 — Relationship between basic semantic unit and dictionary element

D.3.3.2.3 Content_item

A content_item is a piece of data referring to its description in the dictionary. It shall be subtyped.

EXPRESS specification:

*) ENTITY content_item ABSTRACT SUPERTYPE; dictionary_definition: basic_semantic_unit; END_ENTITY; -- content_item (*

Attribute definitions:

dictionary_definition: the basic semantic unit to be used for referring to the definition in the dictionary.

D.3.3.3 Overview of basic semantic units and dictionary elements

For every kind of dictionary data a pair of basic_semantic_unit and dictionary_element subtypes must be defined. Figure D.5 outlines, as a planning model, the basic semantic units (BSU) and Dictionary Elements defined later. Note that the relationship between BSU and Dictionary Elements is redefined for each type of data, so that only corresponding pairs can be related. This is not graphically depicted here, however.

Every kind of dictionary data is treated in one of the following subclauses:

59 CWA 15556-2:2006 (E)

— for suppliers see D.3.4 "Supplier data";

— for classes see D.3.5 "Class data";

— for properties / data element types see D.3.6 "Data element type / properties data";

— for data types see D.3.7 "Domain data: the type System".

identified_by (ABS) basic_semantic_unit (ABS) dictionary_element (INV) definition S[0:1]

1 1

(ABS) supplier_BSU property_BSU supplier_element property_DET

(ABS) class_BSU data_type_BSU data_type_element class

Figure D.5 — Current BSUs and dictionary elements

D.3.3.4 Identification of dictionary elements: three levels structure

The absolute identification of basic semantic units is based on the following three levels structure:

— supplier (of dictionary data);

— class;

— class-related dictionary elements (any dictionary element defined in the context of a class; in this document class-related dictionary elements are property_DET and data_type_element, but there are provisions to extend this mechanism to other items).

An absolute identification can be achieved by concatenation of the applicable code for each level.

This identification scheme is appropriate within a multi-supplier context. If in a certain application area, only data of one single (data-) supplier are relevant, the corresponding parts of the identification, that are then constant, can be eliminated. For the purpose of exchange, however, all the levels must be present, to avoid clashes of identifiers.

This identification scheme is described formally in the..._BSU entities in the D.3.3 through D.3.6, attribute absolute_id.

D.3.3.5 Extension possibilities for other types of data

The BSU - Dictionary Element mechanism is very general and not limited to the four kinds of data used here (see figure D.5). This clause specifies some facilities that allow for extensions for other kinds. Depending on whether the scope of the identifier is given by a class or a supplier, the corresponding ..._related_BSU entity has to be subtyped. It is necessary to redefine the identified_by attribute of the entity dictionary_element (as is done in the D.3.4 through D.3.7 for the current kinds of data).

D.3.3.5.1 Supplier_related_BSU

The supplier_related_BSU provides for the dictionary elements to be associated with suppliers, e.g. for ISO 13584: program libraries.

60 CWA 15556-2:2006 (E)

EXPRESS specification:

*) ENTITY supplier_related_BSU ABSTRACT SUPERTYPE SUBTYPE OF(basic_semantic_unit); END_ENTITY; -- supplier_related_BSU (*

D.3.3.5.2 Class_related_BSU

The class_related_BSU provides for the dictionary elements to be associated with classes, e.g. for ISO 13584 tables, documents, etc ...

EXPRESS specification:

*) ENTITY class_related_BSU ABSTRACT SUPERTYPE SUBTYPE OF(basic_semantic_unit); END_ENTITY; -- class_related_BSU (*

D.3.3.5.3 Supplier_BSU_relationship

The supplier_BSU_relationship is a provision for association of BSUs with suppliers.

EXPRESS specification:

*) ENTITY supplier_BSU_relationship ABSTRACT SUPERTYPE; relating_supplier: supplier_element; related_tokens: SET [1:?] OF supplier_related_BSU; END_ENTITY; -- supplier_BSU_relationship (*

Attribute definitions:

relating_supplier: the supplier_element that identifies the data supplier.

related_tokens: the set of dictionary elements associated to the supplier identified by the relating_supplier attribute.

D.3.3.5.4 Class_BSU_relationship

The class_BSU_relationship entity is a provision for association of BSUs with classes.

EXPRESS specification:

*) ENTITY class_BSU_relationship ABSTRACT SUPERTYPE; relating_class: class; related_tokens: SET [1:?] OF class_related_BSU;

61 CWA 15556-2:2006 (E)

END_ENTITY; -- class_BSU_relationship (*

Attribute definitions:

relating_class: the class that identifies the dictionary element.

related_tokens: the set of dictionary elements associated to the class identified by the relating_class attribute.

D.3.4 Supplier Data

This clause contains definitions for the representation of data about a supplier itself. In a multi-supplier environment it is necessary to be able to identify the source of a certain dictionary element. Figure D.6 presents a planning model of the data associated with suppliers, followed by the EXPRESS definition.

identified_by defined_by supplier_BSU class_BSU

supplier_element org person_organization_schema.organization

addr person_organization_schema.address

Figure D.6 — Overview of supplier data and relationships

D.3.4.1 Supplier_BSU

The supplier_BSU entity provides for unique identification of suppliers of dictionary data.

EXPRESS specification:

*) ENTITY supplier_BSU SUBTYPE OF(basic_semantic_unit); SELF\basic_semantic_unit.code: supplier_code_type; DERIVE SELF\basic_semantic_unit.version: version_type := '1'; absolute_id: identifier := SELF\basic_semantic_unit.code; UNIQUE UR1: absolute_id; END_ENTITY; -- supplier_BSU (*

Attribute definitions:

code: the supplier's code assigned according to ISO 13584-26.

version: the version number of a supplier code shall be equal to '001'.

absolute_id: the absolute identification of the supplier.

Formal propositions:

62 CWA 15556-2:2006 (E)

UR1: the supplier identifier defined by the absolute_id attribute is unique.

D.3.4.2 Supplier_element

The supplier_element entity gives the dictionary description of suppliers.

EXPRESS specification:

*) ENTITY supplier_element SUBTYPE OF(dictionary_element); SELF\dictionary_element.identified_by: supplier_BSU; org: organization; addr: address; INVERSE associated_items: SET [0:?] OF supplier_BSU_relationship FOR relating_supplier; END_ENTITY; -- supplier_element (*

Attribute definitions:

identified_by: the supplier_BSU used to identify this supplier_element.

org: the organizational data of this supplier.

addr: the address of this supplier.

associated_items: allows access to other kinds of data via the BSU mechanism (e.g. program library in ISO 13584).

D.3.5 Class Data

This clause contains definitions for the representation of dictionary data of classes.

D.3.5.1 General

Figure D.7 outlines, as a planning model, the data associated with Classes and their relationship to other Dictionary Elements.

As indicated in the figure with the its_superclass attribute, classes form an inheritance tree. It is important to note that throughout this document the terms "inheritance" and "to inherit" stand for this relationship between classes (defined in the dictionary), although EXPRESS has an inheritance concept, too. These must be clearly distinguished to avoid misunderstandings.

63 CWA 15556-2:2006 (E)

defined_by identified_by described_by L[0:?] supplier_BSU class_BSU property_BSU

(DER) subclasses SET[0:?] (DER) known_applicable_properties SET[0:?]

definition defined_types S[0:?] STRING data_type_BSU (ABS) note STRING class (DER) known_applicable_data_types SET[0:?] remark STRING its_superclass

source_doc_of_definition revision (ABS) document STRING time_stamps dates names preferred_name synonymous_names S[0:?] STRING STRING item_names short_name icon STRING (ABS) graphics Figure D.7 — Overview of class data and relationships

The dictionary data for component classes (as shown in Figure D.7 - Overview of class data and relationships) is spread over four inheritance levels:

— class_and_property_elements defines data common to both classes and property_DETs;

— class allows for other kinds of classes to be specified later (e.g. in ISO13584-24);

— item_class is the entity to hold data of different classes of application domain objects (e. g., components, materials,...);

— component_class is the entity that models family of parts and material_class is the entity that models class of materials.

D.3.5.1.1 Class_BSU

The class_BSU entity provides for the identification of classes.

EXPRESS specification:

*) ENTITY class_BSU SUBTYPE OF(basic_semantic_unit); SELF\basic_semantic_unit.code: class_code_type; defined_by: supplier_BSU; DERIVE absolute_id: identifier := defined_by.absolute_id + sep_id + dic_identifier; known_visible_properties : SET [0:?]OF property_BSU :=compute_known_visible_properties(SELF); known_visible_data_types: SET [0:?]OF data_type_BSU :=compute_known_visible_data_types(SELF); INVERSE subclasses: SET [0:?] OF class FOR its_superclass; added_visible_properties:SET [0:?] OF property_BSU FOR name_scope;

64 CWA 15556-2:2006 (E)

added_visible_data_types:SET [0:?] OF data_type_BSU FOR name_scope; UNIQUE UR1: absolute_id; END_ENTITY; -- class_BSU (*

Attribute definitions: code: the code assigned to this class by its supplier. defined_by: the supplier defining this class and its dictionary element absolute_id: the unique identification of this class. known_visible_properties: the set of property_BSUs that refer to the class as their name_scope attribute or to any known super-class of this class and that are therefore visible for the class (and any of its sub-class).

NOTE 1 When some class dictionary_definition is not present in the same exchange context (a PLib exchange context is never assumed to be complete), the super-class of a class may not be known. Therefore the properties defined as visible by this super-class do not belong to the known_visible_properties attribute. Only on the receiving system all the dictionary_definitions of the BSUs are required to be available. Therefore, on the receiving sytem, the kown_visible_properties attribute contains all properties visible for the class. known_visible_data_types: the set of data_type_BSUs that refer to the class as their name_scope attribute or to any known super-class of this class and that are therefore visible for the class (and any of its sub-class).

NOTE 2 When some class dictionary_definition is not present in the same exchange context (a PLib exchange context is never assumed to be complete), the super-class of a class may not be known. Therefore the data_types defined as visible by this super-class do not belong to the known_visible_data_types attribute. Only on the receiving sytem all the dictionary_definitions of the BSUs are required to be available. Therefore, on the receiving sytem, the kown_visible_data_types attribute contains all data_types visible for the class. subclasses: the set of classes specifying this class as their superclass. added_visible_properties: the set of property_BSUs that refer to the class as their name_scope and that are therefore visible for the class (and any of its sub-class).

NOTE 3 Only the property_BSUs that belongs to the same exchange context are referenced by this inverse attribute. On the receiving system they may already exit other property_BSUs that refer to this class (a PLib exchange context is never assumed to be complete).

NOTE 4 The added_visible_properties attribute will be used to encode the class attribute "Visible Properties" (see 7.2). added_visible_data_types: the set of data_type_BSUs that refer to the class as their name_scope and that are therefore visible for the class (and any of its sub-class).

NOTE 5 Only the data_type_BSUs that belongs to the same exchange context are referenced by this inverse attribute. On the receiving system they may already exit other data_type_BSUs that refer to this class (a PLib exchange context is never assumed to be complete).

NOTE 6 The added_visible_data_types attribute will be used to encode the class attribute "Visible Types" (see 7.2).

Formal propositions:

UR1: the concatenation of supplier code and class code is unique.

65 CWA 15556-2:2006 (E)

D.3.5.1.2 Class_and_property_elements

The class_and_property_elements entity captures the attributes that are common to both classes and property_DETs.

EXPRESS specification:

*) ENTITY class_and_property_elements ABSTRACT SUPERTYPE OF(ONEOF( property_DET, class)) SUBTYPE OF(dictionary_element); names: item_names; definition: definition_type; source_doc_of_definition: OPTIONAL document; note: OPTIONAL note_type; remark: OPTIONAL remark_type; END_ENTITY; -- class_and_property_elements (*

Attribute definitions:

names: the names describing this dictionary element.

definition: the text describing this dictionary element.

source_doc_of_definition: the source document of this textual description.

note: further information on any part of the dictionary element, which is essential to the understanding.

remark: explanatory text further clarifying the meaning of this dictionary element.

NOTE 1 The names attribute will be used as a starting point to encode in the item_names entity the property and class attributes "Preferred Name", "Short Name" and "Synonymous Name" (see 6.2, 7.2 and D.3.8.2).

NOTE 2 The definition attribute will be used to encode the property attribute "Definition" (see 6.2) and the class attribute "Definition," (see 7.2).

NOTE 3 The source_of_doc_definition attribute will be used to encode the property attribute "Source Document of Definition" (see 6.2) and the class attribute "Source Document of Definition," (see 7.2).

NOTE 4 The note attribute will be used to encode the property and class attribute "Note" (see 6.2 and 7.2).

NOTE 5 The remark attribute will be used to encode the property and class attribute "Remark" (see 6.2 and 7.2).

D.3.5.1.3 Class

The class entity is an abstract resource for all kinds of classes.

EXPRESS specification:

*) ENTITY class ABSTRACT SUPERTYPE OF(item_class) SUBTYPE OF(class_and_property_elements);

66 CWA 15556-2:2006 (E)

SELF\dictionary_element.identified_by: class_BSU; its_superclass: OPTIONAL class_BSU; described_by: LIST [0:?] OF UNIQUE property_BSU; defined_types: SET [0:?] OF data_type_BSU; DERIVE subclasses: SET [0:?] OF class := identified_by.subclasses; known_applicable_properties: SET [0:?] OF property_BSU := compute_known_applicable_properties( SELF\dictionary_element.identified_by); known_applicable_data_types: SET [0:?] OF data_type_BSU := compute_known_applicable_data_types( SELF\dictionary_element.identified_by); INVERSE associated_items: SET [0:?] of class_BSU_relationship FOR relating_class; WHERE WR1: acyclic_superclass_relationship(SELF.identified_by, []); WR2: NOT all_class_descriptions_reachable( SELF\dictionary_element.identified_by) OR (list_to_set(SELF.described_by) <= SELF\dictionary_element.identified_by \class_BSU.known_visible_properties); WR3: NOT all_class_descriptions_reachable( SELF\dictionary_element.identified_by) OR (SELF.defined_types <= SELF\dictionary_element.identified_by \class_BSU.known_visible_data_types); WR4: check_properties_applicability(SELF); WR5: check_datatypes_applicability(SELF); END_ENTITY; -- class (*

Attribute definitions:

identified_by: the class_BSU identifying this class.

its_superclass: reference to the class the current one is a subclass of.

described_by: the list of references to the additional properties available for use in the description of the parts within the class, and any of its subclasses

NOTE 1 In ISO 13584-24, a property may also be applicable to a class when this property is imported from another class through the is-case-of or is-view-of semantics relationships. Therefore the properties referenced by the described_by attribute do not define all the applicable properties for an ISO 13584-defined class

defined_types: the set of references to the types that can be used for various property_DETs throughout the inheritance tree descending from this class.

NOTE 2 In ISO 13584-24, a data_type may also be applicable to a class when this data_type is imported from another class through the is-case-of or is-view-of semantics relationships. Therefore the properties referenced by the defined_types attribute do not define all the applicable data types for an ISO 13584-defined class

subclasses: the set of classes specifying this class as their superclass.

67 CWA 15556-2:2006 (E) known_applicable_properties : the property_BSUs that are referenced by the class or any of its known super-class by their described_by attribute and that are therefore applicable to this class (and to any of its sub-class).

NOTE 3 When some class dictionary_definition is not present in the same exchange context (a PLib exchange context is never assumed to be complete), the super-class of a class may not be known. Therefore the properties defined as applicable by this super-class do not belong to the known_applicable_properties attribute. Only on the receiving sytem all the dictionary_definitions of the BSUs are required to be available. Therefore, on the receiving sytem, the known_applicable_properties attribute contains all the properties that are applicable to a class by virtue of being referenced by a described_by attribute known_applicable_data_types: the data_type_BSUs that are referenced by the class or any of its known super-class by their defined_types attribute and that are therefore applicable to this class (and to any of its sub-class).

NOTE 4 When some class dictionary_definition is not present in the same exchange context (a PLib exchange context is never assumed to be complete), the super-class of a class may not be known. Therefore the data_types defined as applicable by this super-class do not belong to the known_applicable_data_types attribute. Only on the receiving sytem all the dictionary_definitions of the BSUs are required to be available. Therefore, on the receiving sytem, the known_applicable_data_types attribute contains all the data_types that are applicable to a class by virtue of being referenced by a defined_types attribute associated_items: allows to access other kinds of data using the BSU mechanism.

Formal propositions:

WR1: the inheritance structure defined by the class hierarchy does not contain cycles.

WR2: only those properties that are visible for a class may become applicable to this class by virtue of being referenced by the described_by attribute.

WR3: only those data types that are visible for a class may become applicable to this class by virtue of being referenced by the defined_types attribute.

WR4: only those properties that are not applicable for a class by inheritance may become applicable to this class by virtue of being referenced by the described_by attribute.

WR5: only those data types that are not applicable for a class by inheritance may become applicable to this class by virtue of being referenced by the defined_types attribute.

NOTE 5 The its_superclass attribute will be used to encode the class attribute "Superclass" (see 7.2).

NOTE 6 The described_by attribute provides the encoding for the "Applicable Properties" of a class (see 7.2).

NOTE 7 The defined_types attribute is used to encode the "Applicable Types" attribute of a class (see 7.2).

D.3.5.2 Item_class

The entity item_class enables the modelling of any type of entity of the application domain that corresponds to an autonomous and stand-alone abstraction as a class. It is a supertype intended to be sub-typed to define the nature of the objects. Nevertheless, it is not defined as ABSTRACT to enable its instanciation to model the classes that are super-classes of two classes corresponding to two different kinds of objects (e.g., components and materials).

EXAMPLE 1 A material is an autonomous and stand-alone abstraction of an object of the parts library application domain. It is represented as a specific sub-class of item_class.

EXAMPLE 2 A feature is an autonomous and stand-alone abstraction of an object of the parts library application domain. It might be represented as a specific sub-class of item_class.

68 CWA 15556-2:2006 (E)

EXAMPLE 3 A product representation is not an autonomous and stand-alone abstraction of an object of the parts library application domain: it may only exist with a relation to a product. In ISO 13584-24, part representations are represented as specific sub-class of class.

EXPRESS specification:

*) ENTITY item_class SUPERTYPE OF(ONEOF(component_class, material_class)) SUBTYPE OF(class); simplified_drawing: OPTIONAL graphics; sub_class_properties: SET [0:?] OF property_BSU; class_constant_values: SET [0:?] OF class_value_assignment; coded_name: OPTIONAL value_code_type; WHERE WR1: QUERY(p <* sub_class_properties | NOT(p IN SELF.described_by)) = []; WR2: NOT all_class_descriptions_reachable(SELF.identified_by) OR (QUERY(va <* class_constant_values | SIZEOF(QUERY(c <* va.super_class_defined_property.describes_classes | is_subclass(SELF, c) AND (va.super_class_defined_property IN c\item_class.sub_class_properties))) <> 1) = []); END_ENTITY; -- item_class (*

Attribute definitions:

simplified_drawing: optional drawings (graphics) that can be associated to the described class.

sub_class_properties: declares properties as class-valued, i.e. in subclasses one single value will be assigned per class. See D.3.6.4 "Class-Valued Properties ".

class_constant_values: assignments in the current class for class-valued properties declared in superclasses. See D.3.6.4 "Class-Valued Properties ".

coded_name: to be used in the value domain of the Classifying DET of the superclass.

NOTE 1 This is only used in IEC 61360.

Formal propositions:

WR1: the class_valued_properties shall belong to the described_by list.

WR2: the properties referenced in class_constant_values were declared as class-valued in some superclass of the current class.

NOTE 2 The simplified_drawing attribute of the item_class entity is used to encode the "Simplified Drawing" attribute for classes (see 7.2).

NOTE 3 The sub_class_properties attribute of the item_class entity is used to encode the "Sub-class Selection Properties" attribute for classes (see 7.2).

NOTE 4 The class_constant_values attribute of the item_class entity is used to encode the "Class Value Assignment " for classes (see 7.2).

69 CWA 15556-2:2006 (E)

D.3.5.3 Component_class

The entity component_class captures the dictionary description of a class of items that represent, at some level of abstraction, parts or components. A property of which the data type is defined by a component_class stands for the aggregation relationship.

EXPRESS specification:

*) ENTITY component_class SUBTYPE OF(item_class); END_ENTITY; -- component_class (*

D.3.5.4 Material_class

The entity material_class captures the dictionary description of a class of materials. Materials are used to define properties of parts or components. Materials are associated with an idea of amount, they may not be counted. A property of which the data type is defined by a material_class captures that some (part of a) product is made of, or contains, some material.

EXPRESS specification:

*) ENTITY material_class SUBTYPE OF(item_class); END_ENTITY; -- material_class (*

D.3.6 Data Element Type / properties data

This clause contains definitions for the dictionary data for properties.

D.3.6.1 Property_BSU

The entity property_BSU provides for identification of a property.

EXPRESS specification:

*) ENTITY property_BSU SUBTYPE OF(basic_semantic_unit); SELF\basic_semantic_unit.code: property_code_type; name_scope: class_BSU; DERIVE absolute_id: identifier := name_scope.defined_by.absolute_id + sep_id + name_scope.dic_identifier + sep_id + dic_identifier; INVERSE describes_classes: SET OF class FOR described_by; UNIQUE UR1: absolute_id; WHERE WR1: QUERY(c <* describes_classes | 70 CWA 15556-2:2006 (E)

NOT(is_subclass(c, name_scope.definition[1])))= []; END_ENTITY; -- property_BSU (*

Attribute definitions:

code: to allow for unique identification within the scope indicated by the name_scope attribute. name_scope: the reference to the class at which or below which the property element is available for reference by the described_by attribute. absolute_id: the unique identification of this property. describes_classes: the classes declaring this property as available for use in the description of a part.

Formal propositions:

WR1: any class referenced by the describes_classes attribute of a property_BSU either is the class referenced by its name_scope attribute, or is a subclass of this class.

Formal propositions:

UR1: the property identifier absolute_id is unique.

NOTE The name_scope attribute of the property_BSU entity will be used to encode the "Definition Class" attribute for properties (see 6.2).

D.3.6.2 Property_DET

The property_DET entity captures the dictionary description of properties.

EXPRESS specification:

*) ENTITY property_DET ABSTRACT SUPERTYPE OF(ONEOF( condition_DET, dependent_P_DET, non_dependent_P_DET)) SUBTYPE OF(class_and_property_elements); SELF\dictionary_element.identified_by: property_BSU; preferred_symbol: OPTIONAL mathematical_string; synonymous_symbols: SET [0:?] OF mathematical_string; figure: OPTIONAL graphics; det_classification: OPTIONAL DET_classification_type; domain: data_type; formula: OPTIONAL mathematical_string; DERIVE describes_classes: SET [0:?] OF class := identified_by.describes_classes; END_ENTITY; -- property_DET (*

Attribute definitions:

identified_by: the property_BSU identifying this property.

preferred_symbol: a shorter description of this property.

71 CWA 15556-2:2006 (E)

synonymous_symbols: synonymous for the shorter description of the property. figure: an optional graphics that describes the property. det_classification: the ISO 31 class for this property. domain: the reference to the data_type associated to the property. formula: a mathematical expression for explaining the property. describes_classes: the classes declaring this property as available for use in the description of a part.

NOTE 1 The preferred_symbol attribute is used to encode the "Preferred Letter Symbol" attribute for properties (see 6.2).

NOTE 2 The synonymous_symbols attribute is used to encode the "Synonymous Letter Symbol" attribute for properties (see 6.2).

NOTE 3 The det_classification attribute is used to encode the "Property Type Classification" attribute of a property (see 6.2).

NOTE 4 The domain attribute is used as a starting point for the encoding of the property attribute "Data Type" (see 6.2). The entity data_type will be subtyped for various possible data types.

NOTE 5 The formula attribute is used to encode the "Formula" attribute for properties (see 6.2).

Figure D.8 presents a planning model of the data associated with property_DETs.

(ABS) property_BSU class described_by L[0:?] identified_by domain (ABS) data_type definition STRING formula note STRING preferred_symbol mathematical_string remark (ABS) STRING property_DET synonymous_symbol S[0:2] source_doc_of_definition (ABS) document revision STRING figure (ABS) graphics time_stamps dates det_classification STRING

names

preferred_name synonymous_names S[0:?] STRING STRING

item_names short_name icon STRING (ABS) graphics

Figure D.8 — Overview of property data element type data and relationships

D.3.6.3 Condition, dependent and non-dependent Data Element Types

Figure D.9 depicts the various kinds of Data Element Types in the format of a planning model.

72 CWA 15556-2:2006 (E)

(ABS) property_DET

1

depends_on S[1:?] condition_DET dependent_P_DET non_dependent_P_DET Figure D.9 — Kinds of data element types

Note that this figure (like others) is simplified: the "depends_on" relation essentially is implemented with a BSU reference, but a constraint is specified that the referred-to property_DET must be a condition_DET (see entity dependent_P_DET).

D.3.6.3.1 Condition_DET

A condition_DET is a property on which other properties may depend upon.

EXPRESS specification:

*) ENTITY condition_DET SUBTYPE OF(property_DET); END_ENTITY; -- condition_DET (*

D.3.6.3.2 Dependent_P_DET

A dependent_P_DET is a property whose value depends explicitly on the value(s) of some condition(s), like e.g. ambient temperature.

EXPRESS specification:

*) ENTITY dependent_P_DET SUBTYPE OF(property_DET); depends_on: SET [1:?] OF property_BSU; WHERE WR1: QUERY(p <* depends_on | NOT(definition_available_implies( p, ('ISO13584_IEC61360_DICTIONARY_SCHEMA.CONDITION_DET' IN TYPEOF(p.definition[1]))))) = []; END_ENTITY; -- dependent_P_DET (*

Attribute definitions:

depends_on: the set of basic semantic units identifying the properties on which this property depends on.

Formal propositions:

WR1: only condition_DETs shall be used in the depends_on list.

D.3.6.3.3 Non_dependent_P_DET

A non_dependent_P_DET is a property that does not depend explicitly on certain conditions.

73 CWA 15556-2:2006 (E)

EXPRESS specification:

*) ENTITY non_dependent_P_DET SUBTYPE OF(property_DET); END_ENTITY; -- non_dependent_P_DET (*

NOTE 1 The three subtypes condition_DET, dependent_P_DET and non_dependent_P_DET of the entity property_DET are used to encode the "Category" attribute for properties (see 6.2). condition_DET is used for context parameters, dependent_P_DET is used for context dependent characteristics and the non_dependent_P_DET entity is used for part characteristics.

NOTE 2 The depends_on attribute of the dependent_P_DET entity is used to encode the "Condition" attribute for properties (see 6.2).

D.3.6.4 Class-valued properties

Class-valued properties are those properties to which in each subclass one single value, valid for the whole subclass, is assigned, not for every instance within the class individually. By being included in the list sub_class_properties in entity item_class a property is distinguished as being of that type. In subclasses that inherit this property, values may be assigned using the attribute class_constant_values that contains a set of class_value_assignments.

EXPRESS specification:

*) ENTITY class_value_assignment; super_class_defined_property: property_BSU; assigned_value: value_code_type; WHERE WR1: definition_available_implies(super_class_defined_property, ('ISO13584_IEC61360_DICTIONARY_SCHEMA' +'.NON_QUANTITATIVE_CODE_TYPE' IN TYPEOF( super_class_defined_property. definition[1]\property_DET.domain))); WR2: definition_available_implies(super_class_defined_property, (SIZEOF(QUERY(v <* super_class_defined_property. definition[1]\property_DET.domain \non_quantitative_code_type.domain.its_values | assigned_value = v.value_code)) = 1)); END_ENTITY; -- class_value_assignment (*

Attribute definitions:

super_class_defined_property: the reference to the property (defined in a superclass as being a class_valued_property) to which a certain value is assigned.

assigned_value: the value assigned to the property, valid for the whole class referring this class_value_assignment instance in the class_constant_values list.

Formal propositions:

WR1: the super_class_defined_property must be of type non-quantitative with codes (strings) as values.

74 CWA 15556-2:2006 (E)

WR2: the value assigned to the super_class_defined_property shall be type compatible, i.e., it occurs in the value domain of the super_class_defined_property.

D.3.7 Domain data: the type system

This clause contains definitions for the representation of the data types of a property_DET. Figure D.10 outlines, as a planning model, the entity hierarchy for data types.

property_DET (ABS) data_type domain 1

named_type (ABS) simple_type (ABS) complex_type

1 1

boolean_type number_type string_type (ABS) entity_instance_type level_type

1 class_instance_type non_quantitative int_type real_type _code_type placement_type

1

real_measure_type real_currency_type

1 1

int_measure_type non_quantitative_int_type axis1_placement_type axis2_placement_3d_type

int_currency_type axis2_placement_2d_type

Figure D.10 — Entity hierarchy for the type system

D.3.7.1 General

In contrast to the other dictionary elements (Suppliers, Classes, Properties) an identification with the basic semantic unit concept is not mandatory for data_type, since it will be attached directly to the property_DET in many cases, and thus doesn't need an identification. However, the entities data_type_BSU and data_type_element allow for an unique identification where this is suitable. It provides for re-using the same type definition in another property_DET definition, even outside the current physical file.

D.3.7.1.1 Data_type_BSU

The data_type_BSU entity provides for identification of data_type_elements.

EXPRESS specification:

*) ENTITY data_type_BSU SUBTYPE OF(basic_semantic_unit);

75 CWA 15556-2:2006 (E)

SELF\basic_semantic_unit.code: data_type_code_type; name_scope: class_BSU; DERIVE absolute_id: identifier := name_scope.defined_by.absolute_id (* Supplier*) + sep_id + name_scope.dic_identifier (* Class*) + sep_id + dic_identifier; (* Data_type *) INVERSE defining_class: SET OF class FOR defined_types; UNIQUE absolute_id; WHERE WR1: is_subclass(defining_class[1], name_scope.definition[1]); END_ENTITY; -- data_type_BSU (*

Attribute definitions:

code: to allow for unique identification within the scope indicated by the name_scope attribute. name_scope: the reference to the class at which or below which the data type element is available for reference by the defined_types attribute. absolute_id: the unique identification of this property. defining_class: the classes declaring this data_type as available for use in the description of a part.

Formal propositions:

WR1: the class used in the name_scope attribute is a superclass of the one where this data_type is defined.

NOTE The name_scope attribute is used to encode the reference to a class the related data type belongs to. This itself, beside the data_type_element entity (see below) , is part of the encoding of the class attribute "Visible Types" (see 7.2).

D.3.7.1.2 Data_type_element

The data_type_element entity describes the dictionary element for types. Note that it is not necessary in every case to have BSU and dictionary_element for a certain data_type, because a property_DET can refer to the data_type directly. Usage of the BSU relation is only necessary when a supplier wants to refer to the same type in a different physical file.

EXPRESS specification:

*) ENTITY data_type_element SUBTYPE OF(dictionary_element); SELF\dictionary_element.identified_by: data_type_BSU; names: item_names; type_definition: data_type; END_ENTITY; -- data_type_element (*

76 CWA 15556-2:2006 (E)

Attribute definitions:

identified_by: the BSU that identifies the described data_type_element.

names: the names that allow the description of the defined data_type_element.

type_definition: the description of the type carried by the data_type_element.

NOTE The redeclared attribute identified_by is used to encode the reference to the BSU, this data_type_element is related to. This itself, beside the data_type_BSU entity (see above) is used to encode the class attribute "Visible Types" (see 7.2).

D.3.7.2 The type system

D.3.7.2.1 Data_type

The data_type entity serves as a common supertype for the entities used to indicate the type of the associated DET.

EXPRESS specification:

*) ENTITY data_type ABSTRACT SUPERTYPE OF(ONEOF( simple_type, complex_type, named_type)); END_ENTITY; -- data_type (*

D.3.7.2.2 Simple_type

The simple_type entity serves as a common supertype for the entities used to indicate a simple type of the associated DET.

EXPRESS specification:

*) ENTITY simple_type ABSTRACT SUPERTYPE OF(ONEOF( number_type, boolean_type, string_type)) SUBTYPE OF(data_type); value_format: value_format_type; END_ENTITY; -- simple_type (*

Attribute definitions:

value_format: the encoding of the format of values for properties.

NOTE The value_format attribute of the simple_type entity is used to encode the "Value Format" attribute for properties (see 6.2).

77 CWA 15556-2:2006 (E)

D.3.7.2.3 Number_type

The number_type entity provides for values of DETs that are of type NUMBER.

EXPRESS specification:

*) ENTITY number_type SUPERTYPE OF(ONEOF( int_type, real_type)) SUBTYPE OF(simple_type); END_ENTITY; -- number_type (*

D.3.7.2.4 Int_type

The int_type entity provides for values of DETs that are of type INTEGER.

EXPRESS specification:

*) ENTITY int_type SUPERTYPE OF(ONEOF( int_measure_type, int_currency_type, non_quantitative_int_type)) SUBTYPE OF(number_type); END_ENTITY; -- int_type (*

D.3.7.2.5 Int_measure_type

The int_measure_type entity provides for values of DETs that are measures of type INTEGER.

EXPRESS specification:

*) ENTITY int_measure_type SUBTYPE OF(int_type); unit: dic_unit; END_ENTITY; -- int_measure_type (*

Attribute definitions:

unit: the unit associated to the described measure.

NOTE The attribute unit is used to encode the "Unit" attribute for properties (see 6.2).

D.3.7.2.6 Int_currency_type

The int_currency_type entity provides for values of DETs that are integer currencies.

78 CWA 15556-2:2006 (E)

EXPRESS specification:

*) ENTITY int_currency_type SUBTYPE OF(int_type); currency: OPTIONAL currency_code; END_ENTITY; -- int_currency_type (*

Attribute definitions:

currency: the associated code of the described currency according to ISO 4217. If not present, the currency code has to be exchanged together with the data (values).

D.3.7.2.7 Non_quantitative_int_type

The non_quantitative_int_type entity is an enumeration type where elements of the enumeration are represented with an INTEGER value (see also ENTITY non_quantitative_code_type and figure D.11).

EXPRESS specification:

*) ENTITY non_quantitative_int_type SUBTYPE OF(int_type); domain: value_domain; WHERE WR1: QUERY(v <* domain.its_values | 'ISO13584_IEC61360_DICTIONARY_SCHEMA.VALUE_CODE_TYPE' IN TYPEOF(v.value_code)) = []; END_ENTITY; -- non_quantitative_int_type (*

Attribute definitions:

domain: the set of enumerated values described in the value_domain entity.

Formal propositions:

WR1: the values associated with the domain.its_values list shall not contain a value_code_type.

D.3.7.2.8 Real_type

The real_type entity provides for values of DETs that are of type REAL.

EXPRESS specification:

*) ENTITY real_type SUPERTYPE OF(ONEOF( real_measure_type, real_currency_type)) SUBTYPE OF(number_type); END_ENTITY; -- real_type (*

79 CWA 15556-2:2006 (E)

D.3.7.2.9 Real_measure_type

The real_measure_type entity provides for values of DETs that are measures of type REAL.

EXPRESS specification:

*) ENTITY real_measure_type SUBTYPE OF(real_type); unit: dic_unit; END_ENTITY; -- real_measure_type (*

Attribute definitions:

unit: the unit associated to the described measure.

NOTE The attribute unit is used to encode the "Unit" attribute for properties (see 6.2).

D.3.7.2.10 Real_currency_type

The real_currency_type entity defines real currencies.

EXPRESS specification:

*) ENTITY real_currency_type SUBTYPE OF(real_type); currency: OPTIONAL currency_code; END_ENTITY; -- real_currency_type (*

Attribute definitions:

currency: the associated code of the described currency according to ISO 4217. If not present, the currency code has to be exchanged together with the data (values).

D.3.7.2.11 Boolean_type

The boolean_type entity provides for values of DETs that are of type BOOLEAN.

EXPRESS specification:

*) ENTITY boolean_type SUBTYPE OF(simple_type); END_ENTITY; -- boolean_type (*

D.3.7.2.12 String_type

The string_type provides for values of DETs that are of type STRING.

80 CWA 15556-2:2006 (E)

EXPRESS specification:

*) ENTITY string_type SUBTYPE OF(simple_type); END_ENTITY; -- string_type (*

D.3.7.2.13 Non_quantitative_code_type

The non_quantitative_code_type entity is an enumeration type where elements of the enumeration are represented with a STRING value (see also ENTITY non_quantitative_int_type and figure D.11).

EXPRESS specification:

*) ENTITY non_quantitative_code_type SUBTYPE OF(string_type); domain: value_domain; WHERE WR1: QUERY(v <* domain.its_values | NOT('ISO13584_IEC61360_DICTIONARY_SCHEMA.VALUE_CODE_TYPE' IN TYPEOF(v.value_code))) = []; END_ENTITY; -- non_quantitative_code_type (*

Attribute definitions:

domain: the set of enumerated values described in the value_domain entity.

Formal propositions:

WR1: the values associated with the domain.its_values list shall only contain elements of type value_code_type.

D.3.7.2.14 Complex_type

The complex_type entity provides for the definition of types of which the values are represented as EXPRESS instances.

EXPRESS specification:

*) ENTITY complex_type ABSTRACT SUPERTYPE OF(ONEOF( level_type, class_instance_type, entity_instance_type)) SUBTYPE OF(data_type); END_ENTITY; -- complex_type (*

D.3.7.2.15 Level_type

The level_type entity provides an indicator to qualify the values of a quantitative data element type.

81 CWA 15556-2:2006 (E)

EXPRESS specification:

*) ENTITY level_type SUBTYPE OF(complex_type); levels: LIST [1:4] OF UNIQUE level; value_type: simple_type; WHERE WR1: 'ISO13584_IEC61360_DICTIONARY_SCHEMA.NUMBER_TYPE' IN TYPEOF(value_type); END_ENTITY; -- level_type (*

Attribute definitions:

levels: the list of unique elements that specifies which qualified values shall be associated with the property. value_type: the type of value of the different qualified values.

Formal propositions:

WR1: the SELF.value_type shall be of type number_type

D.3.7.2.16 Level

The level type provides an abbreviated name of the different qualified values that may be associated with a physical quantity, distinguishing it from other possible or allowed values of the same quantity.

EXPRESS specification:

*) TYPE level = ENUMERATION OF( min, (* the minimal value of the physical quantity *) nom, (* the nominal value of the physical quantity *) typ, (* the typical value of the physical quantity *) max); (* the maximal value of the physical quantity *) END_TYPE; -- level (*

D.3.7.2.17 Class_instance_type

The class_instance_type entity provides for values of DETs that are represented as instances of a class. It is used, in particular, for the description of assemblies or to describe the material a (part of a) component consists of.

EXPRESS specification:

*) ENTITY class_instance_type SUBTYPE OF(complex_type); domain: class_BSU; END_ENTITY; -- class_instance_type (*

Attribute definitions: 82 CWA 15556-2:2006 (E)

domain: the class_BSU referring to the class representing the described type.

D.3.7.2.18 Entity_instance_type

The entity_instance_type entity provides for values of DETs that are represented as instances of some EXPRESS entity data types. A type_name attribute enables the specification what are the allowed data types. This attribute, together with the EXPRESS TYPEOF function applied to the value, permits strong type checking and polymorphism. This entity will be subtyped below for some data types that are allowed for use in the dictionary schema.

EXPRESS specification:

*) ENTITY entity_instance_type SUBTYPE OF(complex_type); type_name: SET OF STRING; END_ENTITY; -- entity_instance_type (*

Attribute definitions:

type_name: the set of strings that describe, in the format of the EXPRESS TYPEOF function, the EXPRESS entity data type names that shall belong to the result of the EXPRESS TYPEOF function when it is applied to a value that references the present entity as its data type.

D.3.7.2.19 Placement_type

The placement_type entity provides for values of DETs that are instances of placement entity data type. (See ISO 10303-42 for details).

EXPRESS specification:

*) ENTITY placement_type SUPERTYPE OF(ONEOF( axis1_placement_type, axis2_placement_2d_type, axis2_placement_3d_type)) SUBTYPE OF(entity_instance_type); WHERE WR1: 'GEOMETRY_SCHEMA.PLACEMENT' IN SELF\entity_instance_type.type_name; END_ENTITY; -- placement_type (*

Formal propositions:

WR1: the string 'GEOMETRY_SCHEMA.PLACEMENT' shall be contained in the set defined by the SELF\entity_instance_type.type_name attribute.

D.3.7.2.20 Axis1_placement_type

The axis1_placement_type entity provides for values of DETs that are instances of axis1_placement. entity data type. (See ISO 10303-42 for details).

83 CWA 15556-2:2006 (E)

EXPRESS specification:

*) ENTITY axis1_placement_type SUBTYPE OF(placement_type); WHERE WR1: 'GEOMETRY_SCHEMA.AXIS1_PLACEMENT' IN SELF\entity_instance_type.type_name; END_ENTITY; -- axis1_placement_type (*

Formal propositions:

WR1: the string 'GEOMETRY_SCHEMA.AXIS1_PLACEMENT' shall be contained in the set defined for the SELF\entity_instance_type.type_name attribute.

D.3.7.2.21 Axis2_placement_2d_type

The axis2_placement_2d_type entity provides for values of DETs that are instances of axis2_placement_2d entity data type (See ISO 10303-42 for details).

EXPRESS specification:

*) ENTITY axis2_placement_2d_type SUBTYPE OF(placement_type); WHERE WR1: 'GEOMETRY_SCHEMA.AXIS2_PLACEMENT_2D' IN SELF\entity_instance_type.type_name; END_ENTITY; -- axis2_placement_2d_type (*

Formal propositions:

WR1: the string 'GEOMETRY_SCHEMA.AXIS2_PLACEMENT_2D' shall be contained in the set defined for the SELF\entity_instance_type.type_name attribute.

D.3.7.2.22 Axis2_placement_3d_type

The axis2_placement_3d_type entity provides for values of DETs that are instances of axis2_placement_3d entity data type. (See ISO 10303-42 for details).

EXPRESS specification:

*) ENTITY axis2_placement_3d_type SUBTYPE OF(placement_type); WHERE WR1: 'GEOMETRY_SCHEMA.AXIS2_PLACEMENT_3D' IN SELF\entity_instance_type.type_name; END_ENTITY; -- axis2_placement_3d_type (*

Formal propositions:

84 CWA 15556-2:2006 (E)

WR1: the string 'GEOMETRY_SCHEMA.AXIS2_PLACEMENT_3D' shall be contained in the set defined for the SELF\entity_instance_type.type_name attribute.

D.3.7.2.23 Named_type

The named_type entity provides for referring to other types via the BSU mechanism.

EXPRESS specification:

*) ENTITY named_type SUBTYPE OF(data_type ); referred_type: data_type_BSU; END_ENTITY; -- named_type (*

Attribute definitions:

referred_type: the BSU identifying the data_type the present entity refers to.

D.3.7.3 Values

This clause contains definitions for non-quantitative data element types (see entity non_quantitative_int_type and entity non_quantitative_code_type).

Figure D.11 outlines, as a planning model, the data associated with non-quantitative data element types.

(ABS) data_type support_resource_schema. identifier INTEGER (ABS) document value_code_type integer_type (ABS) source_doc_of_ simple_type value_domain

source_doc_of_ value

domain its_values L[2:?] value_code string_type value_domain dic_value value_type

meaning

non_quantitative_code_type

preferred_name synonymous_names S[0:?] STRING STRING item_names short_name icon STRING (ABS) graphics

Figure D.11 — Overview of non-quantitative data element Types

D.3.7.3.1 Value_domain

The value_domain entity describes the set of allowed values for a non-quantitative data element type.

85 CWA 15556-2:2006 (E)

EXPRESS specification:

*) ENTITY value_domain; its_values: LIST [1:?] OF dic_value; source_doc_of_value_domain: OPTIONAL document; languages: OPTIONAL present_translations; terms: LIST [0:?] OF item_names; WHERE WR1: NOT EXISTS(languages) OR (QUERY(v <* its_values | languages :<>: v.meaning.languages) = []); WR2: codes_are_unique(its_values); WR3: EXISTS(languages) OR (QUERY(v <* its_values | EXISTS(v.meaning.languages)) = []); END_ENTITY; -- value_domain (*

Attribute definitions:

its_values: the enumeration list of values contained in the described domain.

source_doc_of_value_domain: the document describing the domain associated to the described value_domain entity. languages: the optional languages in which the translations are provided. terms: the list of item_names to allow for IEC 61360 the link to the terms dictionary.

Formal propositions:

WR1: if the value meanings are provided in more than one language, then the set of languages used must be the same for the whole set of values.

WR2: value codes must be unique within this data type.

WR3: if no languages is provided, the value meanings shall not be assigned any language.

D.3.7.3.2 Value_type

Each value of a non-quantitative data element is associated with a code, that characterizes the value. A value_type may be either an INTEGER or a value_code_type.

EXPRESS specification:

*) TYPE integer_type = INTEGER; END_TYPE; -- integer_type

TYPE value_type = SELECT(value_code_type, integer_type); END_TYPE; -- value_type (*

D.3.7.3.3 Dic_value

The dic_value entity is one of the values of a value_domain entity.

86 CWA 15556-2:2006 (E)

EXPRESS specification:

*) ENTITY dic_value; value_code: value_type; meaning: item_names; source_doc_of_value: OPTIONAL document; END_ENTITY; -- dic_value (*

Attribute definitions:

value_code: the code associated to the described value. It can be either a value_code_type or an INTEGER. meaning: the meaning associated to this value. It is provided by names. source_doc_of_value: the optional source document in which the value is defined.

D.3.7.4 Extension to ISO 10303-41 unit definitions

This clause defines the resources for description of units in a dictionary. It extends the resources defined in ISO 10303-41.

D.3.7.4.1 Non_si_unit

The non_si_unit entity extends the unit model of ISO 10303-41 to allow for the representation of non- SI-units that are neither context dependent, nor conversion-based (See ISO 10303-41 for details).

EXPRESS specification:

*) ENTITY non_si_unit SUBTYPE OF(named_unit); name: label; END_ENTITY; -- non_si_unit (*

Attribute definitions:

name: the label used to name the described unit.

D.3.7.4.2 Assert_ONEOF rule

The assert_ONEOF rule asserts that ONEOF holds between the following subtypes of named_unit: si_unit, context_dependent_unit, conversion_based_unit, non_si_unit.

EXPRESS specification:

*) RULE assert_ONEOF FOR(named_unit); WHERE QUERY(u <* named_unit | ('ISO13584_IEC61360_DICTIONARY_SCHEMA.NON_SI_UNIT' IN TYPEOF(u)) AND ('MEASURE_SCHEMA.SI_UNIT' IN TYPEOF(u))

87 CWA 15556-2:2006 (E)

OR ('ISO13584_IEC61360_DICTIONARY_SCHEMA.NON_SI_UNIT' IN TYPEOF(u)) AND ('MEASURE_SCHEMA.CONTEXT_DEPENDENT_UNIT' IN TYPEOF(u)) OR ('ISO13584_IEC61360_DICTIONARY_SCHEMA.NON_SI_UNIT' IN TYPEOF(u)) AND ('MEASURE_SCHEMA.CONVERSION_BASED_UNIT' IN TYPEOF(u)) ) = []; END_RULE; -- assert_ONEOF (*

D.3.7.4.3 Dic_unit

The basic representation of units is in structured form according to ISO 10303-41. But since one of the purposes of storing units in the dictionary is for the presentation to the user, a structured representation alone is not sufficient, it must be supplemented by a string representation.

The present definitions allow various possibilities:

— the function string_for_unit (see D.3.9 "Function Definitions") can be used. For a given structured representation of an unit it returns a string representation corresponding to the one used in Annex B of IEC 61360-1;

— a string representation can be supplied in plain text form (entity mathematical_string, attribute text_representation);

— an SGML representation can be supplied to allow for an enhanced presentation of the unit including sub- and superscripts etc... (entity mathematical_string, attribute SGML_representation).

The dic_unit entity describes a unit to be stored in a dictionary.

EXPRESS specification:

*) ENTITY dic_unit; structured_representation: unit; string_representation: OPTIONAL mathematical_string; END_ENTITY; -- dic_unit (*

Attribute definitions:

structured_representation: structured representation, from ISO 10303-41, including extension defined in D.3.7.4 "Extension to ISO 10303-41 definitions".

string_representation: the function string_for_unit can be used to compute a string representation from the structured_representation, for the case where no string_representation is present.

NOTE The structured_representation attribute of the entity dic_unit is used to encode the property attribute "Unit" (see 6.2).

D.3.8 Basic type and entity definitions

This subclause contains the basic type and entity definitions that were used in the main part of the model.

88 CWA 15556-2:2006 (E)

D.3.8.1 Basic type definitions

This subclause contains the basic type and entity definitions, sorted alphabetically.

D.3.8.1.1 Class_code_type

The class_code_type identifies the allowed values for a class code.

EXPRESS specification:

*) TYPE class_code_type = code_type; WHERE WR1: LENGTH(SELF) <= class_code_len; END_TYPE; -- class_code_type (*

Formal propositions:

WR1: the length of values corresponding to class_code_type shall be less or equal to the length of class_code_len (i.e., 14).

D.3.8.1.2 Code_type

The code_type identifies the allowed values for a code type.

EXPRESS specification:

*) TYPE code_type = identifier; WHERE WR1: NOT(SELF LIKE '*.*'); WR2: NOT(SELF LIKE '*-*'); WR3: NOT(SELF LIKE '* *'); WR4: NOT(SELF = ''); END_TYPE; -- code_type (*

Formal propositions:

WR1: the '.' shall not be contained in a code_type value. '.' is used to concatenate identifiers, (see: CONSTANT sep_id).

WR2: the '-' shall not be contained in a code_type value.'-' is used to compute the identifier as the concatenation of code and version, (see: CONSTANT sep_cv).

WR3: spaces are not allowed, to avoid problems with leading and trailing blanks when concatenating codes.

WR4: a code_type shall not be an empty string.

D.3.8.1.3 Currency_code

The currency_code identifies the values allowed for a currency code.

These values are defined according to ISO 4217. Values are e.g., "CHF" for Swiss Francs, "CNY" for Yuan Renminbi (Chinese), "DEM" for German Mark, "FRF" for French Francs, "JPY" for Yen

89 CWA 15556-2:2006 (E)

(Japanese), "SUR" for SU Rouble, "USD" for US Dollars, "XEU" for ECU (European Community Unit) etc ...

EXPRESS specification:

*) TYPE currency_code = identifier; WHERE WR1: LENGTH(SELF) = 3; END_TYPE; -- currency_code (*

Formal propositions:

WR1: the length of a currency_code value shall be equal to 3.

D.3.8.1.4 Data_type_code_type

The data_type_code_type identifies the values allowed for a data type code.

EXPRESS specification: *) TYPE data_type_code_type = code_type; WHERE WR1: LENGTH(SELF) = data_type_code_len; END_TYPE; -- data_type_code_type (*

Formal propositions:

WR1: the length of a data_type_code_type value shall be equal to the value of a data_type_code_len (i.e., 14).

D.3.8.1.5 Date_type

The date_type identifies the values allowed for a date.

These values are defined according to ISO 8601 (e.g. "1994-03-21").

EXPRESS specification:

*) TYPE date_type = STRING(10) FIXED; END_TYPE; -- date_type (*

D.3.8.1.6 Definition_type

The definition_type identifies the values allowed for a definition.

EXPRESS specification:

*) TYPE definition_type = translatable_text; END_TYPE; -- definition_type

90 CWA 15556-2:2006 (E)

(*

D.3.8.1.7 DET_classification_type

The DET_classification_type identifies the values allowed for a the DET classification. These values are used for DET classification according to ISO 31.

EXPRESS specification:

*) TYPE DET_classification_type = identifier; WHERE WR1: LENGTH(SELF) = DET_classification_len; END_TYPE; -- DET_classification_type (*

Formal propositions:

WR1: the length of a DET_classification_type value shall be equal to the value of a DET_classification_len (i.e., 3).

D.3.8.1.8 Note_type

The note_type identifies the values allowed for a note.

EXPRESS specification:

*) TYPE note_type = translatable_text; END_TYPE; -- note_type (*

D.3.8.1.9 Pref_name_type

The pref_name_type identifies the values allowed for a preferred name.

EXPRESS specification:

*) TYPE pref_name_type = translatable_label; WHERE WR1: check_label_length(SELF, pref_name_len); END_TYPE; -- pref_name_type (*

Formal propositions:

WR1: the length of a pref_name_type value shall not exceed the length of pref_name_len (i.e., 70).

D.3.8.1.10 Property_code_type

The property_code_type identifies the values allowed for a property code.

91 CWA 15556-2:2006 (E)

EXPRESS specification:

*) TYPE property_code_type = code_type; WHERE WR1: LENGTH(SELF) <= property_code_len; END_TYPE; -- property_code_type (*

Formal propositions:

WR1: the length of a property_code_type value shall be less or equal to the value of a property_code_len (i.e., 14).

D.3.8.1.11 Remark_type

The remark_type identifies the values allowed for a remark.

EXPRESS specification:

*) TYPE remark_type = translatable_text; END_TYPE; -- remark_type (*

D.3.8.1.12 Revision_type

The revision_type identifies the values allowed for a revision.

EXPRESS specification:

*) TYPE revision_type = code_type; WHERE WR1: LENGTH(SELF) <= revision_len; END_TYPE; -- revision_type (*

Formal propositions:

WR1: the length of a revision_type value shall not exceed the length of revision_len (i.e., 3).

D.3.8.1.13 Short_name_type

The short_name_type identifies the values allowed for a short name.

EXPRESS specification:

*) TYPE short_name_type = translatable_label; WHERE WR1: check_label_length(SELF, short_name_len); END_TYPE; -- short_name_type (*

92 CWA 15556-2:2006 (E)

Formal propositions:

WR1: the length of a short_name_type value shall not exceed the length of short_name_len (i.e., 15).

D.3.8.1.14 Supplier_code_type

The supplier_code_type identifies the values allowed for a supplier code.

EXPRESS specification:

*) TYPE supplier_code_type = code_type; WHERE WR1: LENGTH(SELF) <= supplier_code_len; END_TYPE; -- supplier_code_type (*

Formal propositions:

WR1: the length of a supplier_code_type value shall be less or equal to the value of supplier_code_len (i.e., 70).

D.3.8.1.15 Syn_name_type

The syn_name_type identifies the values allowed for a synonymous name.

EXPRESS specification:

*) TYPE syn_name_type = SELECT(label_with_language, label); WHERE WR1: check_syn_length(SELF, syn_name_len); END_TYPE; -- syn_ name_type (*

Formal propositions:

WR1: the length of a syn_name_type value shall be equal to the value of syn_name_len (i.e., 30).

D.3.8.1.16 Value_code_type

The value_code_type identifies the values allowed for a value code.

EXPRESS specification:

*) TYPE value_code_type = identifier; WHERE WR1: LENGTH(SELF) <= value_code_len; END_TYPE; -- value_code_type (*

Formal propositions:

WR1: the length of a value_code_type value shall not exceed the length of value_code_len (i.e., 18). 93 CWA 15556-2:2006 (E)

D.3.8.1.17 Value_format_type

The value_format_type identifies the values allowed for a value format. These values are defined according to ISO 6093 and ISO 9735.

EXPRESS specification:

*) TYPE value_format_type = identifier; WHERE WR1: LENGTH(SELF) <= value_format_len; END_TYPE; -- value_format_type (*

Formal propositions:

WR1: the length of a value_format_type value shall not exceed the length of value_format_len (i.e., 80).

D.3.8.1.18 Version_type

The version_type identifies the values allowed for a version.

EXPRESS specification:

*) TYPE version_type = code_type; WHERE WR1: LENGTH(SELF) <= version_len; WR2: EXISTS(VALUE(SELF)) AND ('INTEGER' IN TYPEOF(VALUE(SELF))) AND (VALUE(SELF) >= 0); END_TYPE; -- version_type (*

Formal propositions:

WR1: the length of a version_type value shall be lower than the version_len (i.e., 9).

WR2: the version_type shall contain digits only.

D.3.8.1.19 Source_doc_type

The source_doc_type identifies the values allowed for a source document.

EXPRESS specification:

*) TYPE source_doc_type = identifier; WHERE WR1: LENGTH(SELF) <= source_doc_len; END_TYPE; -- source_doc_type (*

Formal propositions:

94 CWA 15556-2:2006 (E)

WR1: the length of a source_doc_type value shall not exceed the length of source_doc_len (i.e., 80).

D.3.8.2 Basic entity definitions

This subclause contains the basic entity definitions, sorted alphabetically.

D.3.8.2.1 Dates

The dates entity describes the three dates associated respectively to the first version, the current version and the current revision for a given description.

EXPRESS specification:

*) ENTITY dates; date_of_original_definition: date_type; date_of_current_version: date_type; date_of_current_revision: OPTIONAL date_type; END_ENTITY; -- dates (*

Attribute definitions:

date_of_original_definition: the date associated to version '1'.

date_of_current_version: the date associated to the present version.

date_of_current_revision: the date associated to the last revision.

D.3.8.2.2 Document

The document entity is an abstract resource that stands for a document. The dictionary schema only provides for exchanging the identification of documents (see below). The document entity may also be subtyped with entities implementing a means for exchanging document data, e.g. by reference to an external file and exact specification of the format of the file.

EXPRESS specification:

*) ENTITY document ABSTRACT SUPERTYPE; END_ENTITY; -- document (*

D.3.8.2.3 Graphics

The graphics entity is to be subtyped with entities implementing a means for exchanging graphical data, e.g. by reference to an external file and exact specification of the format of the file.

EXPRESS specification:

*) ENTITY graphics ABSTRACT SUPERTYPE;

95 CWA 15556-2:2006 (E)

END_ENTITY; -- graphics (*

D.3.8.2.4 Identified_document

The identified_document entity describes a document identified by its code.

EXPRESS specification:

*) ENTITY identified_document SUBTYPE OF(document); document_identifier: source_doc_type; END_ENTITY; -- identified_document (*

Attribute definitions:

document_identifier: the code of the described document.

D.3.8.2.5 Item_names

The item_names entity identifies the names that can be associated to a given description. It states the preferred name, the set of synonymous names, the short name and the languages in which the different names are provided. It may be associated with an icon.

EXPRESS specification:

*) ENTITY item_names; preferred_name: pref_name_type; synonymous_names: SET OF syn_name_type; short_name: OPTIONAL short_name_type; languages: OPTIONAL present_translations; icon : OPTIONAL graphics; WHERE WR1: NOT(EXISTS(languages )) OR ( ('ISO13584_IEC61360_LANGUAGE_RESOURCE_SCHEMA' + '.TRANSLATED_LABEL' IN TYPEOF(preferred_name)) AND (languages :=: preferred_name\translated_label.languages) AND (NOT(EXISTS(short_name)) OR ('ISO13584_IEC61360_LANGUAGE_RESOURCE_SCHEMA' + '.TRANSLATED_LABEL' IN TYPEOF(short_name)) AND (languages :=: short_name\translated_label.languages)) AND (QUERY(s <* synonymous_names | NOT('ISO13584_IEC61360_DICTIONARY_SCHEMA' + '.LABEL_WITH_LANGUAGE' IN TYPEOF(s))) = [])); WR2: NOT EXISTS(languages) OR (QUERY(s <* synonymous_names | EXISTS(s.language) AND NOT(s.language IN QUERY(l <* languages.language_codes | TRUE ))) = []); WR3: EXISTS(languages) OR (('SUPPORT_RESOURCE_SCHEMA.LABEL' IN TYPEOF(preferred_name))

96 CWA 15556-2:2006 (E)

AND (NOT(EXISTS(short_name)) OR ('SUPPORT_RESOURCE_SCHEMA.LABEL' IN TYPEOF(short_name))) AND (QUERY(s <* synonymous_names | 'ISO13584_IEC61360_DICTIONARY_SCHEMA.LABEL_WITH_LANGUAGE' IN TYPEOF(s)) = [])); END_ENTITY; -- item_names (*

Attribute definitions:

preferred_name: the name that is preferred for use.

synonymous_names: the set of synonymous names. short_name: the abbreviation of the preferred name. languages: the optional list of languages in which the different names are provided. icon : an optional icon which graphically represents the description associated with the item_names.

Formal propositions:

WR1: if preferred and short names are provided in more than one language, then all the "languages" attributes of the translated_labels must contain the present_translations instance as in the languages attribute of this item_names instance.

WR2: if synonymous names are provided in more than one language, then only languages indicated in the present_translations instance in the "languages" attribute of this item_names instance can be used.

WR3: if no languages are provided, preferred_name, short_name and synonymous_names shall not be translated.

NOTE 1 The attributes preferred_name, synonymous_names and short_name are used to encode the "Preferred Name", "Synonymous Name" and "Short Name" attributes respectively for properties and classes (see 6.2 and 7.2).

NOTE 2 The attribute languages is used to define the sequence of translations (if requested for attributes).

D.3.8.2.6 Label_with_language

The label_with_language entity provides resources for associating a label to a language.

EXPRESS specification:

*) ENTITY label_with_language; l: label; language: language_code; END_ENTITY; -- label_with_language (*

Attribute definitions:

l: the label associated to a language.

language: the code of the labelled language.

97 CWA 15556-2:2006 (E)

D.3.8.2.7 Mathematical_string

The mathematical_string entity provides resources defining a representation for mathematical strings. It also allows a representation in the SGML format.

EXPRESS specification:

*) ENTITY mathematical_string; text_representation: text; SGML_representation: OPTIONAL text; END_ENTITY; -- mathematical_string (*

Attribute definitions:

text_representation: "linear" form of a mathematical string, using ISO 843-2: "Transliteration of Greek characters into Latin characters", if necessary.

SGML_representation: SGML-Text (ISO 8879), marked up according to the Math DTD (document Type Definition) in ISO 12083: "Electronic Manuscript Preparation and Markup". The SGML text must be processed so that it will be treated as one single string during the exchange (see ISO 10303-21).

D.3.9 Function definitions

This subclause contains functions that are referenced in WHERE clauses to assert data consistency, or that provide resources for application development.

D.3.9.1 Acyclic_superclass_relationship function

The acyclic_superclass_relationship function checks that there is no cycle in the superclass relationship. By the cardinality of the its_superclass attribute in ENTITY class, it is ensured that there is an inheritance tree, no acyclic graph. Thus, this function merely has to check that no class instance refers in the its_superclass attribute to another one that is essentially a subclass.

EXPRESS specification:

*) FUNCTION acyclic_superclass_relationship( current: class_BSU; visited: SET OF class): LOGICAL;

IF SIZEOF(current.definition) = 1 THEN IF current.definition[1] IN visited THEN RETURN(FALSE); (* wrong: current declares a subclass as its superclass *) ELSE IF EXISTS(current.definition[1]\class.its_superclass) THEN RETURN(acyclic_superclass_relationship( current.definition[1]\class.its_superclass, visited + current.definition[1])); ELSE RETURN(TRUE); END_IF; END_IF; ELSE 98 CWA 15556-2:2006 (E)

RETURN(UNKNOWN); END_IF; END_FUNCTION; -- acyclic_superclass_relationship (*

D.3.9.2 Check_syn_length function

The check_syn_length function checks that the length of s doesn't exceed the length indicated by s_length.

EXPRESS specification:

*) FUNCTION check_syn_length(s: syn_name_type; s_length: INTEGER):BOOLEAN;

IF 'ISO13584_IEC61360_DICTIONARY_SCHEMA.LABEL_WITH_LANGUAGE' IN TYPEOF(s) THEN RETURN(LENGTH(s.l) <= s_length); ELSE RETURN(LENGTH(s) <= s_length); END_IF; END_FUNCTION; -- check_syn_length (*

D.3.9.3 Codes_are_unique function

The codes_are_unique function returns TRUE if the value_codes are unique within this list of values.

EXPRESS specification:

*) FUNCTION codes_are_unique(values: LIST OF dic_value): BOOLEAN; LOCAL ls: SET OF STRING := []; li: SET OF INTEGER := []; END_LOCAL;

IF('ISO13584_IEC61360_DICTIONARY_SCHEMA.VALUE_CODE_TYPE' IN TYPEOF(values[1].value_code)) THEN REPEAT i := 1 TO SIZEOF(values); ls := ls + values[i].value_code; END_REPEAT;

RETURN(SIZEOF(values) = SIZEOF(ls)); ELSE IF('ISO13584_IEC61360_DICTIONARY_SCHEMA.INTEGER_TYPE' IN TYPEOF(values[1].value_code)) THEN REPEAT i := 1 TO SIZEOF(values); li := li + values[i].value_code; END_REPEAT;

99 CWA 15556-2:2006 (E)

RETURN(SIZEOF(values) = SIZEOF(li)); ELSE RETURN(?); END_IF; END_IF;

END_FUNCTION; -- codes_are_unique (*

D.3.9.4 Definition_available_implies function

The definition_available_implies function checks whether the definition corresponding to the BSU parameter exists or not. Then, if this definition exists, the expression parameter is returned.

EXPRESS specification:

*) FUNCTION definition_available_implies( BSU: basic_semantic_unit; expression: LOGICAL): LOGICAL;

RETURN(NOT(SIZEOF(BSU.definition) = 1) OR expression);

END_FUNCTION; -- definition_available_implies (*

D.3.9.5 Is_subclass function

The function is_subclass returns TRUE if sub is defined as a subclass of super.

EXPRESS specification:

*) FUNCTION is_subclass(sub, super: class): LOGICAL; IF (NOT EXISTS(sub)) OR (NOT EXISTS(super)) THEN RETURN(UNKNOWN); END_IF;

IF sub = super THEN RETURN(TRUE); END_IF;

IF NOT EXISTS(sub.its_superclass) THEN (* end of chain reached, didn't meet super so far *) RETURN(FALSE); END_IF;

IF SIZEOF(sub.its_superclass.definition) = 1 THEN (* definition available *) IF (sub.its_superclass.definition[1] = super)

100 CWA 15556-2:2006 (E)

THEN RETURN(TRUE); ELSE RETURN(is_subclass(sub.its_superclass.definition[1], super)); END_IF; ELSE RETURN(UNKNOWN); END_IF;

END_FUNCTION; -- is_subclass (*

D.3.9.6 String_for_derived_unit function

The function string_for_derived_unit returns a STRING representation of the derived_unit (according to ISO 10303-41) passed as parameter. First, the elements of the derived unit are separated according to the sign of the exponent. If there are elements of both kinds, the '/' notation is used to separate those with positive from those with negative sign. If there are only negative exponents, the u-e notation is used. A dot '.' (decimal code 46 according to ISO 8859-1, see ISO 10303-21) is used to separate individual elements.

EXPRESS specification:

*) FUNCTION string_for_derived_unit(u: derived_unit): STRING;

FUNCTION string_for_derived_unit_element( u: derived_unit_element; neg_exp: BOOLEAN (* print negative exponents with power -1 *)): STRING; (* returns a STRING representation of the derived_unit_element (according to ISO 10303-41) passed as parameter *)

LOCAL result: STRING; END_LOCAL;

result := string_for_named_unit(u.unit); IF (u.exponent <> 0) THEN IF (u.exponent > 0) OR NOT neg_exp THEN result := result + '**' + FORMAT( ABS(u.exponent), '2I')[2]; ELSE result := result + '**' + FORMAT(u.exponent, '2I')[2]; END_IF; END_IF; RETURN(result); END_FUNCTION; -- string_for_derived_unit_element

LOCAL pos, neg: SET OF derived_unit_element;

101 CWA 15556-2:2006 (E)

us: STRING; END_LOCAL;

(* separate unit elements according to the sign of the exponents: *) pos := QUERY(ue <* u.elements | ue.exponent > 0); neg := QUERY(ue <* u.elements | ue.exponent < 0); us := ''; IF SIZEOF(pos) > 0 THEN (* there are unit elements with positive sign *) REPEAT i := LOINDEX(pos) TO HIINDEX(pos); us := us + string_for_derived_unit_element(pos[i], FALSE); IF i <> HIINDEX(pos) THEN us := us + '.'; END_IF; END_REPEAT;

IF SIZEOF(neg) > 0 THEN (* there are unit elements with negative sign, use '/' notation: *) us := us + '/';

IF SIZEOF(neg) > 1 THEN us := us + '('; END_IF;

REPEAT i := LOINDEX(neg) TO HIINDEX(neg); us := us + string_for_derived_unit_element( neg[i], FALSE); IF i <> HIINDEX(neg) THEN us := us + '.'; END_IF; END_REPEAT;

IF SIZEOF(neg) > 1 THEN us := us + ')'; END_IF; END_IF; ELSE (* only negative signs, use u-e notation *) IF SIZEOF(neg) > 0 THEN REPEAT i := LOINDEX(neg) TO HIINDEX(neg); us := us + string_for_derived_unit_element( neg[i], TRUE); IF i <> HIINDEX(neg) THEN us := us + '.'; END_IF; END_REPEAT; END_IF;

102 CWA 15556-2:2006 (E)

END_IF;

RETURN(us);

END_FUNCTION; -- string_for_derived_unit (*

D.3.9.7 String_for_named_unit function

The string_for_named_unit function returns a STRING representation of the named_unit (according to ISO 10303-41 and the extension in D.3.7.4.1) passed as parameter.

EXPRESS specification:

*) FUNCTION string_for_named_unit(u: named_unit): STRING;

IF 'MEASURE_SCHEMA.SI_UNIT' IN TYPEOF(u) THEN RETURN(string_for_SI_unit(u)); ELSE IF 'MEASURE_SCHEMA.CONTEXT_DEPENDENT_UNIT' IN TYPEOF(u) THEN RETURN(u\context_dependent_unit.name); ELSE IF 'MEASURE_SCHEMA.CONVERSION_BASED_UNIT' IN TYPEOF(u) THEN RETURN(u\conversion_based_unit.name); ELSE IF 'ISO13584_IEC61360_DICTIONARY_SCHEMA' +'.NON_SI_UNIT' IN TYPEOF(u) THEN RETURN(u\non_si_unit.name); ELSE RETURN('name_unknown'); END_IF; END_IF; END_IF; END_IF;

END_FUNCTION; -- string_for_named_unit (*

D.3.9.8 String_for_SI_unit function

The string_for_SI_unit function returns a STRING representation of the si_unit (according to ISO 10303-41) passed as parameter.

EXPRESS specification:

*) FUNCTION string_for_SI_unit(unit: si_unit): STRING;

LOCAL prefix_string, unit_string: STRING;

103 CWA 15556-2:2006 (E)

END_LOCAL;

IF EXISTS(unit.prefix) THEN CASE unit.prefix OF exa : prefix_string := 'E'; peta : prefix_string := 'P'; tera : prefix_string := 'T'; giga : prefix_string := 'G'; mega : prefix_string := 'M'; kilo : prefix_string := 'k'; hecto : prefix_string := 'h'; deca : prefix_string := 'da'; deci : prefix_string := 'd'; centi : prefix_string := 'c'; milli : prefix_string := 'm'; micro : prefix_string := 'u'; nano : prefix_string := 'n'; pico : prefix_string := 'p'; femto : prefix_string := 'f'; atto : prefix_string := 'a'; END_CASE; ELSE prefix_string := ''; END_IF;

CASE unit.name OF metre : unit_string:= 'm'; gram : unit_string := 'g'; second : unit_string := 's'; ampere : unit_string := 'A'; kelvin : unit_string := 'K'; mole : unit_string := 'mol'; candela : unit_string := 'cd'; radian : unit_string := 'rad'; steradian : unit_string := 'sr'; hertz : unit_string := 'Hz'; newton : unit_string := 'N'; pascal : unit_string := 'Pa'; joule : unit_string := 'J'; watt : unit_string := 'W'; coulomb : unit_string := 'C'; volt : unit_string := 'V'; farad : unit_string := 'F'; ohm : unit_string := 'Ohm'; siemens : unit_string := 'S'; weber : unit_string := 'Wb'; tesla : unit_string := 'T'; henry : unit_string := 'H'; degree_Celsius : unit_string := 'Cel'; lumen : unit_string := 'lm'; lux : unit_string := 'lx'; becquerel : unit_string := 'Bq'; gray : unit_string := 'Gy'; sievert : unit_string := 'Sv';

104 CWA 15556-2:2006 (E)

END_CASE;

RETURN(prefix_string + unit_string);

END_FUNCTION; -- string_for_SI_unit (*

D.3.9.9 String_for_unit function

The string_for_unit function returns a STRING representation of the unit (according to ISO 10303-41) passed as parameter.

EXPRESS specification:

*) FUNCTION string_for_unit(u: unit): STRING; IF 'MEASURE_SCHEMA.DERIVED_UNIT' IN TYPEOF(u) THEN RETURN(string_for_derived_unit(u)); ELSE (* 'MEASURE_SCHEMA.NAMED_UNIT' IN TYPEOF(u) holds true *) RETURN(string_for_named_unit(u)); END_IF; END_FUNCTION; -- string_for_unit (*

D.3.9.10 All_class_descriptions_reachable function

The all_class_descriptions_reachable function checks if the dictionary_elements that describe a class, referred by a class_BSU, and all its super-classes, can be computed in the inheritance tree defined by the class hierarchy.

EXPRESS specification:

*) FUNCTION all_class_descriptions_reachable(cl: class_BSU): BOOLEAN;

IF NOT EXISTS(cl) THEN RETURN(?); END_IF;

IF SIZEOF(cl.definition) = 0 THEN RETURN(FALSE); END_IF;

IF NOT(EXISTS(cl.definition[1]\class.its_superclass)) THEN RETURN(TRUE); ELSE RETURN(all_class_descriptions_reachable( cl.definition[1]\class.its_superclass)); END_IF;

105 CWA 15556-2:2006 (E)

END_FUNCTION; -- all_class_descriptions_reachable (*

D.3.9.11 Compute_known_visible_properties function

The compute_known_visible_properties function computes the set of properties that are visible for a given class. When a definition is not available, it returns only the visible properties that may be computed.

NOTE When some class dictionary_definition is not present in the same exchange context (a PLib exchange context is never assumed to be complete), the super-class of a class may not be known. Therefore the properties defined as visible by this super-class cannot be computed by the compute_known_visible_properties function. Only on the receiving sytem all the dictionary_definitions of the BSUs are required to be available. Therefore, on the receiving sytem, the compute_known_visible_properties function computes all the properties that are visible to a class by virtue of referencing it (or any of its superclass) by their name_scope attribute.

EXPRESS specification:

*) FUNCTION compute_known_visible_properties(cl: class_BSU): SET OF property_BSU; LOCAL s: SET OF property_BSU := []; END_LOCAL;

s := s + USEDIN(cl, 'ISO13584_IEC61360_DICTIONARY_SCHEMA' + '.PROPERTY_BSU.NAME_SCOPE'); IF SIZEOF(cl.definition) = 0 THEN RETURN(s); ELSE IF EXISTS(cl.definition[1]\class.its_superclass) THEN s := s + compute_known_visible_properties( cl.definition[1]\class.its_superclass); END_IF;

RETURN(s); END_IF;

END_FUNCTION; -- compute_known_visible_properties (*

D.3.9.12 Compute_known_visible_data_types function

The compute_known_visible_data_types function computes the set of data_types that are visible for a given class. When a definition is not available, it returns only the visible data_types that may be computed.

NOTE When some class dictionary_definition is not present in the same exchange context (a PLib exchange context is never assumed to be complete), the super-class of a class may not be known. Therefore the data_types defined as visible by this super-class cannot be computed by the compute_known_visible_data_types function. Only on the receiving sytem all the dictionary_definitions of the BSUs are required to be available. Therefore, on the receiving sytem, the compute_known_visible_data_types function computes all the data_types that are visible to a class by virtue of referencing it (or any of its superclass) by their name_scope attribute.

106 CWA 15556-2:2006 (E)

EXPRESS specification:

*) FUNCTION compute_known_visible_data_types(cl: class_BSU): SET OF data_type_BSU; LOCAL s: SET OF data_type_BSU :=[ ]; END_LOCAL;

s := s + USEDIN(cl, 'ISO13584_IEC61360_DICTIONARY_SCHEMA' + '.DATA_TYPE_BSU.NAME_SCOPE');

IF SIZEOF(cl.definition) = 0 THEN RETURN(s); ELSE IF EXISTS(cl.definition[1]\class.its_superclass) THEN s := s + compute_known_visible_data_types( cl.definition[1]\class.its_superclass); END_IF;

RETURN(s); END_IF;

END_FUNCTION; -- compute_known_visible_data_types (*

D.3.9.13 Compute_known_applicable_properties function

The compute_known_applicable_properties function computes the set of properties that are applicable for a given class. When a definition is not available, it returns only the applicable properties that may be computed.

NOTE When some class dictionary_definition is not present in the same exchange context (a PLib exchange context is never assumed to be complete), the super-class of a class may not be known. Therefore the properties defined as applicable by this super-class cannot be computed by the compute_known_applicable_properties function. Only on the receiving sytem all the dictionary_definitions of the BSUs are required to be availabe. Therefore, on the receiving sytem, the compute_known_applicable_properties function computes all the properties that are applicable to a class by virtue of being referenced by a described_by attribute.

EXPRESS specification:

*) FUNCTION compute_known_applicable_properties(cl: class_BSU): SET OF property_BSU;

LOCAL s: SET OF property_BSU := []; END_LOCAL;

IF SIZEOF(cl.definition)=0 THEN RETURN(s); ELSE

107 CWA 15556-2:2006 (E)

REPEAT i := 1 TO SIZEOF(cl.definition[1]\class.described_by); s := s + cl.definition[1]\class.described_by[i]; END_REPEAT;

IF EXISTS(cl.definition[1]\class.its_superclass) THEN s := s + compute_known_applicable_properties( cl.definition[1]\class.its_superclass); END_IF;

RETURN(s); END_IF; END_FUNCTION; -- compute_known_applicable_properties (*

D.3.9.14 Compute_known_applicable_data_types function

The compute_known_applicable_data_types function computes the set of data_types that are applicable for a given class. When a definition is not available, it returns only the applicable data_types that may be computed.

NOTE When some class dictionary_definition is not present in the same exchange context (a PLib exchange context is never assumed to be complete), the super-class of a class may not be known. Therefore the data_types defined as applicable by this super-class cannot be computed by the compute_known_applicable_data_types function. Only on the receiving sytem all the dictionary_definitions of the BSUs are required to be available. Therefore, on the receiving sytem, the compute_known_applicable_data_types function computes all the data_types that are applicable to a class by virtue of being referenced by a defined_types attribute.

EXPRESS specification:

*) FUNCTION compute_known_applicable_data_types(cl: class_BSU): SET OF data_type_BSU; LOCAL s: SET OF data_type_BSU := []; END_LOCAL;

IF SIZEOF(cl.definition) = 0 THEN RETURN(s); ELSE REPEAT i := 1 TO SIZEOF(cl.definition[1]\class.defined_types); s := s + cl.definition[1]\class.defined_types[i]; END_REPEAT;

IF EXISTS(cl.definition[1]\class.its_superclass) THEN s := s + compute_known_applicable_data_types( cl.definition[1]\class.its_superclass); END_IF;

RETURN(s); END_IF;

END_FUNCTION; -- compute_known_applicable_data_types

108 CWA 15556-2:2006 (E)

(*

D.3.9.15 List_to_set

The list_to_set function creates a SET from a LIST named l, the type of element for the SET will be the same as that in the original LIST.

EXPRESS specification:

*) FUNCTION list_to_set(l: LIST [0:?] OF GENERIC:type_elem): SET OF GENERIC: type_elem;

LOCAL s: SET OF GENERIC: type_elem := []; END_LOCAL;

REPEAT i := 1 TO SIZEOF(l); s := s + l[i]; END_REPEAT;

RETURN(s); END_FUNCTION; -- list_to_set (*

D.3.9.16 Check_properties_applicability

The check_properties_applicability function checks that only those properties that are not applicable for a class by inheritance may become applicable to this class by virtue of being referenced by the described_by attribute.

EXPRESS specification:

*) FUNCTION check_properties_applicability(cl: class): LOGICAL; LOCAL inter: SET OF property_bsu := []; END_LOCAL;

IF EXISTS(cl.its_superclass) THEN IF (SIZEOF(cl.its_superclass.definition)=1) THEN inter := (list_to_set(cl.described_by) * cl.its_superclass.definition[1]\class. known_applicable_properties); RETURN(inter = []); ELSE RETURN(UNKNOWN); END_IF; ELSE RETURN(TRUE); END_IF;

109 CWA 15556-2:2006 (E)

END_FUNCTION; -- check_properties_applicability (*

D.3.9.17 Check_datatypes_applicability

The check_datatypes_applicability function checks that only those datatypes that are not applicable for a class by inheritance may become applicable to this class by virtue of being referenced by the defined_types attribute.

EXPRESS specification:

*) FUNCTION check_datatypes_applicability(cl: class): LOGICAL; LOCAL inter: SET OF data_type_bsu := []; END_LOCAL;

IF EXISTS(cl.its_superclass) THEN IF (SIZEOF(cl.its_superclass.definition) = 1) THEN inter := cl.defined_types * cl.its_superclass.definition[1]\class. known_applicable_data_types; RETURN(inter = []); ELSE RETURN(UNKNOWN); END_IF; ELSE RETURN(TRUE); END_IF;

END_FUNCTION; -- check_datatypes_applicability

END_SCHEMA; -- ISO13584_IEC61360_dictionary_schema (*

D.4 ISO13584_IEC61360_language_resource_schema

The following schema provides resources for permitting strings in various languages. It has been extracted from the Dictionary schema, since it could be used in other schemata. It is largely based on the support_resource_schema from ISO 10303-41: STEP part 41: "Fundamentals of Product Description and Support", and can be seen as an extension to that. It allows for the usage of one specific language throughout an exchange context (physical file) without the overhead introduced when multiple languages are used. See figure D.12 - EXPRESS-G diagram of ISO13584_IEC61360_language_resource_schema and support_resource_schema, for a graphical depiction.

110 CWA 15556-2:2006 (E)

translatable_label

STRING label

languages translated_label labels L[1:?] present_translations

language_codes *L[1:?] languages language_code STRING translatable_text

language

STRING text global_language_assignment

translated_text texts L[1:?]

Figure D.12 — ISO13584_IEC61360_language_resource_schema and support_resource_schema

EXPRESS specification:

*) SCHEMA ISO13584_IEC61360_language_resource_schema;

REFERENCE FROM support_resource_schema(identifier, label, text); (* from ISO 10303-41: STEP part 41: "Fundamentals of Product Description and Support" *) (*

D.4.1 ISO13584_IEC61360_language_resource_schema type and entity definitions

This subclause contains the EXPRESS type and entity definitions in the ISO13584_IEC61360_language_resource_schema.

D.4.1.1 Language_code

The language_code type enables to identify a langage according to ISO 639. Values are e.g. "EN" for English in general, "FR" for French, "RU" for Russian, "DE" for German, "en GB" for UK English, "en US" for US English etc...

EXPRESS specification:

*) TYPE language_code = identifier; END_TYPE; -- language_code (*

111 CWA 15556-2:2006 (E)

D.4.1.2 Global_language_assignment

The global_language_assignment entity specifies the language for translatable_label and translatable_text, if label and text are selected, respectively (i.e., without explicit language indication as is done in translated_label and translated_text).

EXPRESS specification:

*) ENTITY global_language_assignment; language: language_code; END_ENTITY; -- global_language_assignment (*

Attribute definitions:

language: the code of the assigned language.

D.4.1.3 Present_translations

The present_translations entity serves to indicate the languages used for translated_label and translated_text.

EXPRESS specification:

*) ENTITY present_translations; language_codes: LIST [1:?] OF UNIQUE language_code; UNIQUE UR1: language_codes; END_ENTITY; -- present_translations (*

Attribute definitions:

language_codes: the list of unique language codes corresponding to the language in which a translation is made.

Formal proposition:

UR1: for each list of language_code there shall be a unique instance of present_translations

D.4.1.4 Translatable_label

A translatable_label defines a type of values that can be labels or translated_labels.

EXPRESS specification:

*) TYPE translatable_label = SELECT(label, translated_label); END_TYPE; -- translatable_label (*

112 CWA 15556-2:2006 (E)

D.4.1.5 Translated_label

The translated_label entity defines the labels that are translated and the corresponding languages of translation.

EXPRESS specification:

*) ENTITY translated_label; labels: LIST [1:?] OF label; languages: present_translations; WHERE WR1: SIZEOF(labels) = SIZEOF(languages.language_codes); END_ENTITY; -- translated_label (*

Attribute definitions:

labels: the list of labels that are translated. languages: the list of languages in which each label is translated.

Formal propositions:

WR1: the number of labels contained in the labels list shall be equal to the number of languages provided in the languages.language_codes attribute.

Informal propositions:

The content of labels[i] is in the language identified by languages.language_codes[i].

D.4.1.6 Translatable_text

A translatable_text defines a type of values that can be texts or translated_ texts.

EXPRESS specification:

*) TYPE translatable_text = SELECT(text, translated_text); END_TYPE; -- translatable_text (*

D.4.1.7 Translated_text

The translated_text entity defines the texts that are translated and the corresponding languages of translation.

EXPRESS specification:

*) ENTITY translated_text; texts: LIST [1:?] OF text; languages: present_translations; WHERE WR1: SIZEOF(texts) = SIZEOF(languages.language_codes); END_ENTITY; -- translated_text

113 CWA 15556-2:2006 (E)

(*

Attribute definitions:

texts: the list of texts that are translated. languages: the list of languages in which each text is translated.

Formal propositions:

WR1: the number of texts contained in the texts list shall be equal to the number of languages provided in the languages.language_codes attribute.

Informal propositions:

IP1: the content of texts[i] is in the language identified by languages.language_codes[i].

D.4.2 ISO13584_IEC61360_language_resource_schema function definitions

This subclause contains functions that are referenced in WHERE clauses to assert data consistency.

D.4.2.1 Check_label_length function

The check_label_length function checks that no label in l exceeds the length indicated by l_length.

EXPRESS specification:

*) FUNCTION check_label_length(l: translatable_label; l_length: INTEGER): BOOLEAN;

IF 'ISO13584_IEC61360_LANGUAGE_RESOURCE_SCHEMA.TRANSLATED_LABEL' IN TYPEOF(l) THEN REPEAT i :=1 TO SIZEOF(l.labels); IF LENGTH(l.labels[i]) > l_length THEN RETURN(FALSE); END_IF; END_REPEAT;

RETURN(TRUE);

ELSE (* the argument l is a single string *) RETURN(LENGTH(l) <= l_length); END_IF; END_FUNCTION; -- check_label_length (*

D.4.2.2 Check_text_length function

The check_text_length function checks that no text in t exceeds the length indicated by t_length.

114 CWA 15556-2:2006 (E)

EXPRESS specification:

*) FUNCTION check_text_length(t: translatable_text; t_length: INTEGER): BOOLEAN;

IF 'ISO13584_IEC61360_LANGUAGE_RESOURCE_SCHEMA.TRANSLATED_TEXT' IN TYPEOF(t) THEN REPEAT i :=1 TO SIZEOF(t.texts); IF LENGTH(t.texts[i]) > t_length THEN RETURN(FALSE); END_IF; END_REPEAT;

RETURN(TRUE);

ELSE (* the argument t is a single string *) RETURN(LENGTH(t) <= t_length); END_IF; END_FUNCTION; -- check_text_length (*

D.4.3 ISO13584_IEC61360_language_resource_schema rule definition

The rule single_language_assignment asserts that only one language may be assigned to be used in translatable_label and translatable_text, resp.

EXPRESS specification:

*) RULE single_language_assignment FOR(global_language_assignment); WHERE SIZEOF(global_language_assignment) <= 1; END_RULE; -- single_language_assignment

END_SCHEMA; -- ISO13584_IEC61360_language_resource_schema (*

D.5 Example physical file

D.5.1 Some example data

This chapter gives some fragments of a physical file for exchanging the data of the IEC 61360-4 standard: "International Reference List of Standard Data Element Types for Electric Components". It is intended to show the use of the EXPRESS model in clause D.3 "ISO13584_IEC61360_dictionary_schema" together with ISO 10303-21 to exchange corresponding data.

*/ ISO-10303-21; HEADER;

115 CWA 15556-2:2006 (E)

FILE_DESCRIPTION(('Example physical file'), '2;1'); FILE_NAME('example.spf', '2001-01-29', ('IEC SC3D WG2'), (), 'Version 1', '', ''); FILE_SCHEMA(('example_schema')); ENDSEC; DATA; /*

D.5.1.1 Supplier data

*/ #1=SUPPLIER_BSU('112/2///61360_4_1', *); /*according to ISO 13584-26*/ #2=SUPPLIER_ELEMENT(#1, #3, '01', #4, #5); #3=DATES('1994-09-16', '1994-09-16', $); #4=ORGANIZATION('IEC', 'IEC Maintenance Agency', 'The IEC Maintenance Agency as described in IEC 61360-3: "Maintenance and Validation Procedures"'); #5=ADDRESS('to be determined', $, $, $, $, $, $, $, $, $, $, $); #10=SUPPLIER_BSU('112/3///_00', *); /* ISO/IEC ICS */ /*

D.5.1.2 Root class data

The AAA000 IEC root class provides a name scope corresponding to the whole future IEC 61360-4 standard. It covers two trees, one for materials, one for components, therefore the class is defined as an item_class. It is a subtype of ICS root.

*/ #90=CLASS_BSU('OO', '001', #10); /* ICS root */ #100=CLASS_BSU('AAA000', '001', #1); #101=ITEM_CLASS(#100, #3, '01', #102, TEXT('IEC root class that provides a name scope corresponding to the whole IEC 61360-4 standard. It covers two trees, one for materials, one for components'), $, $, $, #90, (#110), (), $, (#110), (), $); #102=ITEM_NAMES(LABEL('IEC root class'), (), LABEL('IEC root'), $, $); #110=PROPERTY_BSU('AAE000', '001', #100); #111=NON_DEPENDENT_P_DET(#110, #3, '01', #112, TEXT('the type of tree: material or component'), $, $, $, $, (), $, $, #113, $); #112=ITEM_NAMES(LABEL('type of tree'), (), LABEL('tree type'), $, $); #113=NON_QUANTITATIVE_CODE_TYPE('A..8', #114); #114=VALUE_DOMAIN((#120, #122), $, $, ()); #120=DIC_VALUE('MATERIAL', #121, $); #121=ITEM_NAMES(LABEL('material tree'), (), LABEL('mat tree'), $, $); #122=DIC_VALUE('COMPONS', #123, $); #123=ITEM_NAMES(LABEL('component tree'), (), LABEL('comp tree'), $, $); /*

D.5.1.3 Material data

*/

116 CWA 15556-2:2006 (E)

#200=CLASS_BSU('AAA218', '001', #1); #201=MATERIAL_CLASS(#200, #3, '01', #202, TEXT('root class of the materials tree'), $, $, $, #100, (#210, #230), (), $, (#210), (#205), 'MATERIAL'); #202=ITEM_NAMES(LABEL('materials root class'), (), LABEL('materials root'), $, $); #205=CLASS_VALUE_ASSIGNMENT(#110, 'MATERIAL'); #210=PROPERTY_BSU('AAF311', '005', #100); #211=NON_DEPENDENT_P_DET(#210, #3, '01', #212, TEXT('code of the type of material'), $, $, $, $, (), $, 'A57', #213, $); #212=ITEM_NAMES(LABEL('material type'), (), LABEL('material type'), $, $); #213=NON_QUANTITATIVE_CODE_TYPE('M..3', #214); #214=VALUE_DOMAIN((#220, #222, #224, #226), $, $, ()); #220=DIC_VALUE('ACO', #221, $); #221=ITEM_NAMES(LABEL('acoustical'), (), LABEL('acoustical'), $, $); #222=DIC_VALUE('MG', #223, $); #223=ITEM_NAMES(LABEL('magnetic'), (), LABEL('magnetical'), $, $); #224=DIC_VALUE('OP', #225, $); #225=ITEM_NAMES(LABEL('optical'), (), LABEL('optical'), $, $); #226=DIC_VALUE('TH', #227, $); #227=ITEM_NAMES(LABEL('thermal-electric'), (), LABEL('th-electric'), $, $); #230=PROPERTY_BSU('AAF286', '005', #100); #231=NON_DEPENDENT_P_DET(#230, #3, '01', #232, TEXT('The nominal density (in kg/m**3) of a material.'), $, $, $, #233, (), $, 'K02', #234, $); #232=ITEM_NAMES('density', (), 'density', $, $); #233=MATHEMATICAL_STRING('$r_d', 'ρd'); #234=REAL_MEASURE_TYPE('NR3..3.3ES2', #235); #235=DIC_UNIT(#236, $); #236=DERIVED_UNIT((#237, #239)); #237=DERIVED_UNIT_ELEMENT(#238, 1.0); #238=SI_UNIT(*, .KILO., .GRAM.); #239=DERIVED_UNIT_ELEMENT(#240, -3.0); #240=SI_UNIT(*, $, .METRE.); /*

D.5.1.4 Component data

*/ #300=CLASS_BSU('EEE000', '001', #1); #301=COMPONENT_CLASS(#300, #3, '01', #302, TEXT('root class of the components tree'), $, $, $, #100, (#310, #330, #350), (), $, (#310), (#305), 'COMPONS'); #302=ITEM_NAMES(LABEL('components root class'), (), LABEL('components root'), $, $); #305=CLASS_VALUE_ASSIGNMENT(#110, 'COMPONS'); #310=PROPERTY_BSU('AAE001', '005', #100); #311=NON_DEPENDENT_P_DET(#310, #3, '01', #312, TEXT('Code of the main functional class to which a component belongs'), $, $, $, $, (), $, 'A52', #313, $);

117 CWA 15556-2:2006 (E)

#312=ITEM_NAMES(LABEL('main class of component'), (), LABEL('main class'), $, $); #313=NON_QUANTITATIVE_CODE_TYPE('M..3', #314); #314=VALUE_DOMAIN((#320, #322, #324, #326), $, $, ()); #320=DIC_VALUE('EE', #321, $); #321=ITEM_NAMES(LABEL('EE (electric / electronic)'), (), LABEL('EE'), $, $); #322=DIC_VALUE('EM', #323, $); #323=ITEM_NAMES(LABEL('electromechanical'), (), LABEL('electromech'), $, $); #324=DIC_VALUE('ME', #325, $); #325=ITEM_NAMES(LABEL('mechanical'), (), LABEL('mechanical'), $, $); #326=DIC_VALUE('MP', #327, $); #327=ITEM_NAMES(LABEL('magnetic part'), (), LABEL('magnetic'), $, $); #330=PROPERTY_BSU('AAF267', '005', #100); #331=NON_DEPENDENT_P_DET(#330, #3, '01', #332, TEXT('The nominal distance (in m) between the inside of the two tapes used for taped products with axial leads'), $, $, $, #333, (), $, 'T03', #334, $); #332=ITEM_NAMES(LABEL('inner tape spacing'), (), LABEL('inner tape spac'), $, $); #333=MATHEMATICAL_STRING('b_tape', 'btape'); #334=LEVEL_TYPE((.NOM.), #335); #335=REAL_MEASURE_TYPE('NR3..3.3ES2', #336); #336=DIC_UNIT(#337, $); #337=SI_UNIT(*, $, .METRE.); #350=PROPERTY_BSU('AAE022', '005', #100); #351=NON_DEPENDENT_P_DET(#350, #3, '01', #352, TEXT('The value as specified by level (miNoMax) of the outside diameter (in m) of a component with a body of circular cross-section'), $, $, $, #353, (), $, 'T03', #354, $); #352=ITEM_NAMES(LABEL('outside diameter'), (), LABEL('outside diam'), $, $); #353=MATHEMATICAL_STRING('d_out', 'dout'); #354=LEVEL_TYPE((.MIN.,.NOM.,.MAX.), #355); #355=REAL_MEASURE_TYPE('NR3..3.3ES2', #356); #356=DIC_UNIT(#357, #358); #357=SI_UNIT(*, $, .METRE.); #358=MATHEMATICAL_STRING('m','m'); /*

D.5.1.5 Electric / Electronic component data

*/ #400=CLASS_BSU('EEE001', '001', #1); #401=COMPONENT_CLASS(#400, #3, '01', #402, TEXT('electric / electronic components'), $, $, $, #300, (#410, #470), (), $, (#410), (#405), 'EE'); #402=ITEM_NAMES(LABEL('EE components'), (), LABEL('EE components'), $, $); #405=CLASS_VALUE_ASSIGNMENT(#310, 'EE'); #410=PROPERTY_BSU('AAE002', '005', #100);

118 CWA 15556-2:2006 (E)

#411=NON_DEPENDENT_P_DET(#410, #3, '01', #412, TEXT('Code of the category to which an electric/electronic component belongs.'), $, $, $, $, (), $, 'A52', #413, $); #412=ITEM_NAMES(LABEL('category EE component'), (), LABEL('categ EE comp'), $, $); #413=NON_QUANTITATIVE_CODE_TYPE('M..3', #414); #414=VALUE_DOMAIN((#420, #422, #424, #426, #428, #430, #432, #434, #436, #438, #440), $, $, ()); #420=DIC_VALUE('AMP', #421, $); #421=ITEM_NAMES(LABEL('amplifier'), (), LABEL('amplifier'), $, $); #422=DIC_VALUE('ANT', #423, $); #423=ITEM_NAMES(LABEL('antenna (aerial)'), (), LABEL('antenna (aer)'), $, $); #424=DIC_VALUE('BAT', #425, $); #425=ITEM_NAMES(LABEL('battery'), (), LABEL('battery'), $, $); #426=DIC_VALUE('CAP', #427, $); #427=ITEM_NAMES(LABEL('capacitor'), (), LABEL('capacitor'), $, $); #428=DIC_VALUE('CND', #429, $); #429=ITEM_NAMES(LABEL('conductor'), (), LABEL('conductor'), $, $); #430=DIC_VALUE('DEL', #431, $); #431=ITEM_NAMES(LABEL('delay line'), (), LABEL('delay line'), $, $); #432=DIC_VALUE('DID', #433, $); #433=ITEM_NAMES(LABEL('diode device'), (), LABEL('diode device'), $, $); #434=DIC_VALUE('FIL', #435, $); #435=ITEM_NAMES(LABEL('filter'), (), LABEL('filter'), $, $); #436=DIC_VALUE('IC', #437, $); #437=ITEM_NAMES(LABEL('integrated circuit'), (), LABEL('IC'), $, $); #438=DIC_VALUE('IND', #439, $); #439=ITEM_NAMES(LABEL('inductor'), (), LABEL('inductor'), $, $); #440=DIC_VALUE('LAM', #441, $); #441=ITEM_NAMES(LABEL('lamp'), (), LABEL('lamp'), $, $); /* etc. */ #470=PROPERTY_BSU('AAE754', '005', #100); #471=NON_DEPENDENT_P_DET(#470, #3, '01', #472, TEXT('The number of electrical terminals of an electric/electronic or electromechanical component'), $, $, $, #473, (), $, 'Q56', #474, $); #472=ITEM_NAMES(LABEL('number of terminals'), ('number of pins'), LABEL('nr of terminals'), $, $); #473=MATHEMATICAL_STRING('N_term', 'Nterm'); #474=INT_TYPE('NR1..4');

ENDSEC; END-ISO-10303-21; /*

119 CWA 15556-2:2006 (E)

D.5.2 Templates derived from the EXPRESS code

In the following subclauses "templates" are listed which indicate the names and the order of the attributes for a certain instance. They are aimed to facilitate easier reading of the clause above containing the data.

"e_i_n" is an abbreviation for "entity instance name", as defined in ISO 10303-21, 7.3.4.

D.5.2.1 Templates for supplier data e_i_n=SUPPLIER_BSU(code: supplier_code_type, *, * ); e_i_n=SUPPLIER_ELEMENT(identified_by: supplier_BSU, time_stamps: OPTIONAL dates, revision: revision_type, *, org: organization, addr: address); e_i_n=DATES(date_of_original_definition: date_type, date_of_current_version: date_type, date_of_current_revision: OPTIONAL date_type); e_i_n=ORGANIZATION(id: OPTIONAL identifier, name: label, description: text); e_i_n=ADDRESS(internal_location: OPTIONAL label, street_number: OPTIONAL label, street: OPTIONAL label, postal_box: OPTIONAL label, town: OPTIONAL label, region: OPTIONAL label, postal_code: OPTIONAL label, country: OPTIONAL label, facsimile_number: OPTIONAL label, telephone_number: OPTIONAL label, electronic_mail_address: OPTIONAL label, telex_number: OPTIONAL label);

D.5.2.2 Templates for class data e_i_n=CLASS_BSU(code: class_code_type, version: version_type, *, defined_by: supplier_BSU); e_i_n=ITEM_CLASS(identified_by: class_BSU, time_stamps: OPTIONAL dates, revision: revision_type, names: item_names, definition: definition_type, source_doc_of_definition: OPTIONAL document, note: OPTIONAL note_type, remark: OPTIONAL remark_type, *, its_superclass: OPTIONAL class_BSU, described_by: LIST OF property_BSU, defined_types: SET [0:?] OF data_type_BSU, simplified_drawing: OPTIONAL graphics, sub_class_properties: LIST [0:?] OF property_BSU, class_constant_values: SET [0:?] OF class_value_assignment, coded_name: OPTIONAL value_code_type); e_i_n=MATERIAL_CLASS(identified_by: class_BSU, time_stamps: OPTIONAL dates, revision: revision_type, names: item_names, definition: definition_type, source_doc_of_definition: OPTIONAL document, note: OPTIONAL note_type, remark: OPTIONAL remark_type, *, its_superclass: OPTIONAL class_BSU, described_by: LIST OF property_BSU, defined_types: SET [0:?] OF data_type_BSU, simplified_drawing: OPTIONAL graphics, sub_class_properties: LIST [0:?] OF property_BSU, class_constant_values: SET [0:?] OF class_value_assignment, coded_name: OPTIONAL value_code_type); e_i_n=COMPONENT_CLASS(identified_by: class_BSU, time_stamps: OPTIONAL dates, revision: revision_type, names: item_names, definition: definition_type, source_doc_of_definition: OPTIONAL document, note: OPTIONAL note_type, remark: OPTIONAL remark_type, *, its_superclass: OPTIONAL class_BSU, described_by: LIST OF property_BSU, defined_types: SET [0:?] OF data_type_BSU, simplified_drawing: OPTIONAL graphics, sub_class_properties: LIST [0:?] OF

120 CWA 15556-2:2006 (E) property_BSU, class_constant_values: SET [0:?] OF class_value_assignment, coded_name: OPTIONAL value_code_type); e_i_n=DATES(date_of_original_definition: date_type, date_of_current_version: date_type, date_of_current_revision: OPTIONAL date_type); e_i_n=ITEM_NAMES(preferred_name: pref_name_type, synonymous_names: SET OF syn_name_type, short_name: short_name_type, languages: OPTIONAL present_translations); e_i_n=IDENTIFIED_DOCUMENT(document_identifier: source_doc_type); e_i_n=CLASS_VALUE_ASSIGNMENT(super_class_defined_property: property_BSU, assigned_value: value_code_type);

D.5.2.3 Templates for property_DET data e_i_n=PROPERTY_BSU(code: property_code_type, version: version_type, *, name_scope: class_BSU); e_i_n=CONDITION_DET(identified_by: property_BSU, time_stamps: OPTIONAL dates, revision: revision_type, names: item_names, definition: definition_type, source_doc_of_definition: OPTIONAL document, note: OPTIONAL note_type, remark: OPTIONAL remark_type, *, preferred_symbol: OPTIONAL mathematical_string, synonymous_symbols: SET [0:?] OF mathematical_string, figure: OPTIONAL graphics, det_classification: OPTIONAL DET_classification_type, domain: data_type, formula: OPTIONAL mathematical_string); e_i_n=DEPENDENT_P_DET(identified_by: property_BSU, time_stamps: OPTIONAL dates, revision: revision_type, names: item_names, definition: definition_type, source_doc_of_definition: OPTIONAL document, note: OPTIONAL note_type, remark: OPTIONAL remark_type, *, preferred_symbol: OPTIONAL mathematical_string, synonymous_symbols: SET [0:?] OF mathematical_string, figure: OPTIONAL graphics, det_classification: OPTIONAL DET_classification_type, domain: data_type, formula: OPTIONAL mathematical_string, depends_on: SET [1:?] OF property_BSU); e_i_n=NON_DEPENDENT_P_DET(identified_by: property_BSU, time_stamps: OPTIONAL dates, revision: revision_type, names: item_names, definition: definition_type, source_doc_of_definition: OPTIONAL document, note: OPTIONAL note_type, remark: OPTIONAL remark_type, *, preferred_symbol: OPTIONAL mathematical_string, synonymous_symbols: SET [0:?] OF mathematical_string, figure: OPTIONAL graphics, det_classification: OPTIONAL DET_classification_type, domain: data_type, formula: OPTIONAL mathematical_string); e_i_n=DATES(date_of_original_definition: date_type, date_of_current_version: date_type, date_of_current_revision: OPTIONAL date_type); e_i_n=ITEM_NAMES(preferred_name: pref_name_type, synonymous_names: SET OF syn_name_type, short_name: short_name_type, languages: OPTIONAL present_translations); e_i_n=IDENTIFIED_DOCUMENT(document_identifier: source_doc_type); e_i_n=MATHEMATICAL_STRING(text_representation: text, SGML_representation: OPTIONAL text);

121 CWA 15556-2:2006 (E)

D.5.2.4 Templates for data type data e_i_n=DATA_TYPE_BSU(code: data_type_code_type, version: version_type, *, name_scope: class_BSU); e_i_n=DATA_TYPE_ELEMENT(identified_by: data_type_BSU, time_stamps: OPTIONAL dates, revision: revision_type, names: item_names, type_definition: data_type); e_i_n=DATES(date_of_original_definition: date_type, date_of_current_version: date_type, date_of_current_revision: OPTIONAL date_type); e_i_n=ITEM_NAMES(preferred_name: pref_name_type, synonymous_names: SET OF syn_name_type, short_name: short_name_type, languages: OPTIONAL present_translations); e_i_n=REAL_MEASURE_TYPE(value_format: value_format_type, unit: dic_unit); e_i_n=DIC_UNIT(structured_representation: unit, string_representation: OPTIONAL mathematical_string); e_i_n=DERIVED_UNIT(elements: SET [1:?] OF derived_unit_element); e_i_n=DERIVED_UNIT_ELEMENT(unit: named_unit, exponent: REAL); e_i_n=SI_UNIT(*, prefix: OPTIONAL si_prefix, name: si_unit_name); e_i_n=NON_SI_UNIT(dimensions: dimensional_exponent, name: label); e_i_n=NON_QUANTITATIVE_CODE_TYPE(value_format: value_format_type, domain: value_domain); e_i_n=VALUE_DOMAIN(its_values: LIST [2:?] OF dic_value, source_doc_of_value_domain: OPTIONAL document, languages: OPTIONAL present_translations, terms: LIST [0:?] OF item_names); e_i_n=DIC_VALUE(value_code: value_type, meaning: item_names, source_doc_of_value: OPTIONAL document); e_i_n=LEVEL_TYPE(levels: LIST [1:4] OF UNIQUE level, value_type: simple_type);

122 CWA 15556-2:2006 (E)

Annex DA (informative) Extended dictionary schema (from ISO 13584 Part 24)

Introduction

The content of this appendix is mainly from chapter 11 of ISO13584 Part 24. The rest of the introduction is taken from chapter 4.2.1 of ISO13584 Part 24.

The ISO13584_extended_dictionary_schema contains the extensions of the ISO/IEC dictionary schema required for parts library representing and exchange. These extensions include the following:

— representation of classes of features;

— representation of functional model classes and functional view classes;

NOTE Functional model classes and functional view classes are defined in ISO 13584-1020.

— representation of properties of functional model classes and functional view classes; and

— association of tables and documents with classes defined in a supplier library.

DA-1 ISO13584_extended_dictionary_schema

This clause defines the requirement for the ISO13584_extended_dictionary_schema. The following EXPRESS declaration introduces the ISO13584_extended_dictionary_schema block and identifies the necessary external references.

EXPRESS specification:

*) SCHEMA ISO13584_extended_dictionary_schema;

REFERENCE FROM ISO13584_IEC61360_dictionary_schema (all_class_descriptions_reachable, basic_semantic_unit, class, class_BSU, class_BSU_relationship, class_instance_type, class_related_BSU, code_type, component_class, compute_known_visible_data_types, compute_known_visible_properties, content_item, data_type,

20 To be published

123 CWA 15556-2:2006 (E)

data_type_BSU, data_type_element, definition_available_implies, definition_type, dictionary_element, document, entity_instance_type, graphics, item_class, item_names, level, level_type, list_to_set, material_class, named_type, non_quantitative_code_type, non_quantitative_int_type, note_type, property_BSU, property_DET, remark_type, revision_type, sep_cv, sep_id, supplier_BSU, supplier_BSU_relationship, supplier_element, supplier_related_BSU, value_domain, version_type);

REFERENCE FROM ISO13584_IEC61360_language_resource_schema (present_translations);

REFERENCE FROM ISO13584_generic_expressions_schema (variable_semantics);

REFERENCE FROM ISO13584_instance_resource_schema (compatible_level_type_and_instance, property_or_data_type_BSU);

REFERENCE FROM ISO13584_table_resource_schema (class_instance_column, column, entity_instance_column, RDB_table_extension, RDB_table_specification, table_extension, table_identification, table_specification);

REFERENCE FROM ISO13584_variable_semantics_schema (property_semantics, self_property_semantics);

124 CWA 15556-2:2006 (E)

REFERENCE FROM ISO13584_external_file_schema (external_file_protocol, simple_program_protocol);

REFERENCE FROM date_time_schema (year_number);

REFERENCE FROM support_resource_schema (identifier, label);

REFERENCE FROM person_organization_schema (organization , person);

REFERENCE FROM application_context_schema (application_protocol_definition); (*

NOTE The schemas referenced above can be found in the following documents: ISO13584_IEC61360_dictionary_schema IEC 61360-2 (which is duplicated for convenience in informative annex D of ISO 13584-42:1998), ISO13584_IEC61360_language_resource_schema IEC 61360-2 (which is duplicated for convenience in informative annex D of ISO 13584-42), ISO13584_generic_expressions_schema ISO 13584-20 ISO13584_instance_resource_schema This part of ISO 13584, ISO13584_table_resource_schema This part of ISO 13584, ISO13584_variable_semantics_schema This part of ISO 13584, ISO13584_external_file_schema This part of ISO 13584, date_time_schema ISO 10303-41, support_resource_schema ISO 10303-41, person_organization_schema ISO 10303-41, application_context_schema ISO 10303-41.

DA-2 Introduction to the ISO13584_extended_dictionary_schema

The ISO13584_extended_dictionary_schema defines the extensions to the ISO/IEC common dictionary schema that enable the exchange of ISO 13584 dictionary data.

It extends the the ISO/IEC common dictionary schema in the following four ways: a) The ISO/IEC common dictionary schema models hierarchies of classes of items, components and materials. The extended dictionary schema also provides a specialisation for modelling features. This specialisation of item_class is represented as a feature_class.

EXAMPLE 1 A form feature may be represented as an instance of a feature_class. It is associated with dimensioning properties and captures one aspect of the shape of a component.

EXAMPLE 2 In a piping component, an outlet is associated with properties (for instance, its name, its role) and captures one aspect of the definition of a component. It may be represented as an instance of a feature_class. b) The ISO/IEC common dictionary schema provided for modelling item_class. The extended dictionary schema defines two new subtypes of class: functional_model_class and functional_view_class. A functional view is the representation of an item in product data. A functional model is the representation of an item in a library.

125 CWA 15556-2:2006 (E)

c) The ISO/IEC common dictionary schema defined three kinds of properties that might be used to describe parts or items: condition_DET, non_dependent_P_DET and dependent_P_DET. The extended dictionary schema introduces a new subtype of property_DET called representation_P_DET to represent properties defined in functional models and functional views.

NOTE 1 It is necessary to introduce representation_P_DET because such a property is not associated with a part, or an item, but with a representation of a part or item. Therefore, the life cycle of a representation_P_DET value is independent from the life cycle of any part or item.

d) The ISO/IEC common dictionary schema only associated properties and data types with classes. The extended dictionary schema defines tables and documents that can be associated with classes.

The ISO13584_extended_dictionary_schema models:

— the total structure of the elements that belong to an ISO 13584-conformant dictionary; this overall structure specifies the different elements that shall be processed to be stored in an existing user dictionary;

— the seven kinds of elements whose references and descriptions are intended to be stored in a user dictionary; these seven kinds of elements are: supplier, program library, class, property, data type, table and document;

— those properties that are used in classes of functional models and classes of functional views for the computation or representation of a functional view of some item;

— the content of the tables referenced in a dictionary.

The ISO13584_extended_dictionary_schema does not model:

— the set of allowed instances of a class (class extension) of which reference and description are intended to be stored in a user dictionary;

— the content of program libraries and documents of which references and descriptions are intended to be stored in a user dictionary but of which contents are represented as external files.

NOTE 2 The representations of the external files that may be associated with an ISO 13584-conformant library are defined in the ISO13584_external_file_schema.

DA-3 Fundamental concepts and assumptions for the ISO13584_extended_dictionary_schema

DA-3.1 Dictionary structure

The ISO13584_extended_dictionary_schema describes hierarchies of classes with simple inheritance intended to be stored in a user dictionary. Three kinds of classes are defined:

a) an item_class is used to define stand-alone and identifiable kinds of objects. item_class has three subtypes: component_class, material_class and feature_class.

NOTE Component_class and material_class are defined in the ISO/IEC common dictionary schema in ISO 103584-42. Feature_class is defined in the ISO13584_extended_dictionary_schema in clause DA-19 of this part of ISO 13584.

b) a functional_model_class is used to record a mechanism that may generate representations of these identifiable kinds of objects

EXAMPLE A parametric program is a mechanism that may generate geometric representations. A parametric program may be recorded in a functional model class.

126 CWA 15556-2:2006 (E) c) a functional_view_class is used to characterize each kind of possible representation of an item_class, whatever be the item_class.

DA-3.2 Class related elements

Four categories of elements are associated with classes:

a) properties, of which the values are used to characterise the instances;

b) tables, that describe relations between properties;

c) documents, that provide human readable information about classes and properties;

d) named data types that may be used to specify the domain of different properties.

These four categories of elements are denoted class related elements.

DA-3.3 Supplier related elements

One category of elements is associated with a library data supplier: a program_library is a set of programs delivered by this library data supplier. Once processed by a LMS, such a library may be referenced by programs provided as library external files, as a linked_interface_program_protocol.

EXAMPLE ISO 13584-31 defines a programming interface (API) for parametric geometry. An upward compatibility layer that enables processing programs based on another parametric geometry API may be defined as a program_library. Referencing a linked_interface_program_protocol that includes this program_library allows the processing of programs based on this other parametric geometry API.

DA-3.4 Three-fold description of dictionary elements

The ISO13584_extended_dictionary_schema dictionary conforms to the three levels architecture defined in ISO 13584-42 clause D.3.3.2.

NOTE In the ISO13584_IEC61360_dictionary_schema, each concept is modelled by three entities:

— its basic_semantic_unit that identifies the element, and enables reference to it, whether or not its description and content are available in the same exchange context, and

— its dictionary_element that provides a human-readable and computer-sensible definition of the element, and

— its content_item that contains the (possible) additional computer-data that represent the element in a data processing universe.

DA-3.5 Unique identification of dictionary elements

Each library data supplier has a unique identification as defined in ISO 13584-26.

Each class or program_library shall be assigned a unique code by the library data supplier who defines it.

To provide for unique identification of any other dictionary element, its basic_semantic_unit contains, as a name_scope attribute, the root of the class tree where it is visible. For each category of dictionary elements, a unique identification may therefore be derived from:

— its code,

— the code of the class that corresponds to its name scope, and,

— the code of the library data supplier that defined this class.

127 CWA 15556-2:2006 (E)

This mechanism is only an identification mechanism. It does not define which elements are applicable to a particular class.

DA-3.6 Applicable elements

Applicability is inherited. That is, if a class_related_dictionary_element is applicable to a class C, then it is also applicable to every subclass of C.

NOTE To ensure a full compatibility between the data based on the ISO13584_IEC61360_dictionary_schema and those that are based on the ISO 13584 extensions, two different mechanisms are used to specify the class related elements applicable to a class. Applicable properties and types are specified by class attributes. Applicable tables and documents are specified using the entity relationship approach. In the receiving system, a different implementation may be used to improve performance.

Visibility rules and importation rules are defined to specify which elements are permitted for explicit reference in a class description.

DA-3.7 Visibility rule

Visibility is inherited. A class related element is visible from a class if this class corresponds to the name_scope of the class related element or if this class is a subclass of the class that corresponds to the name_scope of the class related element.

Any visible element may be used to describe a class and therefore may become an element applicable to the class, and to all of its subclasses.

DA-3.8 Semantic relationships between classes

In the object oriented approach, the definition of a class C1 may depend on the definition of another class C2. When the definition of C2 is not available, C1 is not completely defined. Such relationships are called semantic relationships between classes.

Beside the inheritance relationship (C1 is a subclass of C2) and the aggregation relationship (C2 is the data type of a property defined in C1), two other semantics relationships are defined by ISO 13584.

a) The is-case-of relationship enables to specify that some of the properties that apply to C2 apply also to C1, although they do not belong to the same inheritance tree;

NOTE 1 ISO 13584 supports only simple inheritance. The is-case-of relationship enables for instance a particular supplier to specify that one of his/her class, belonging to his/her particular inheritance tree, is also case-of class(es) defined by some standardisation organisation(s).

b) The is-view-of relationship enables to specify that a class C1 contains method(s) able to create representation(s) of the instances of a class C2 when the values of some properties of these instances are provided as input parameter of this (these) method(s).

This part of ISO 13584 contains two different approaches for modelling such relationships. a) In the a priori approach, a class C1 may be defined as having a particular semantic relationship with a class C2. In this case, it may import properties and data types that are visible or applicable for C2. This explicit importation makes these properties applicable to C1. But, if class C2 is not delivered together with class C1, and if it is not already available on the receiving system, class C1 cannot be processed.

NOTE 2 The library data supplier responsible for class C1 may decide to provide together with class C1, those information elements that describe class C2 and/or properties, documents, data types and tables associated with class C2. These information elements reference, as their supplier_bsu, their own library data supplier, and cannot be guaranted by the library data supplier of class C1. These information elements are useless when class C2 is already available in the user library.

EXAMPLE Assume that a particular component supplier provides resistors that comply with the concept of a resistor as defined in IEC 61630-4. When describing its resistor family in an ISO 13584-conformant library,

128 CWA 15556-2:2006 (E)

this supplier may decide to assume that the receiving user library should contain all the classes and properties defined by IEC 61630-4. In this case, the resistor family is defined as an item_class_case_of. This class imports the needed properties (through their property_BSU) without having to describe them by means of a property_DET dictionary element. But, if the user library does not contain all the classes and properties defined in IEC 61630-4, and if their dictionary definitions are not provided in the library of the component supplier, the referenced properties may be unknown by the receiving system. In this case, the supplier class would not be completely defined. According to the logical description of the compiling process of ISO 13584-conformant dictionaries and libraries, defined in annex O, the compiling of this class should fail.

b) In the a posteriori approach, the C1 class does not include any reference to C2 in its description. C1 duplicates the complete description (i.e., a different property_BSU and a property_DET) for each of the properties that correspond to a property defined in C2. The semantic relationship is defined by a third entity, an a_posteriori_semantic_relationship. This entity references C1 and C2 and describes the set of couples of properties that correspond to each other, one being applicable to C1 and the other being applicable to C2. The overhead is to re-describe properties that might be already available. The advantage is that C1 can always be processed on the receiving system. Only the compiling of the a_posteriori_semantic_relationship fails if class C2 is not available on the receiving system.

NOTE 3 A posteriori relationships may also be introduced on the library end-user site, as part of the user customisation of supplier libraries.

DA-3.9 A priori semantic relationships and importation rule

A class defined through an a priori semantic relationship with another class may refer, in its

description, to the properties, data types, tables or documents that are visible or applicable to this other class. This reference imports these properties, data types, tables or documents into the referencing class and makes them applicable to the class that imports them and usable for describing the class instances.

This importation shall always be explicit, i.e., done through an attribute, or a relation, that specifies which properties, data types, tables or documents are imported.

The following a priori semantic relationships are specified:

— is-case-of relationship for an item_class: when a class C is defined as item_class_case_of referring to a class D, C may import properties, data types, tables and documents from D;

— is-case-of relationship for a functional_model_class: a functional model class may refer, through its case_of attributes to other functional model classes. In this case it may import properties, data types, tables and documents from these functional model classes;

— when a class C is a functional_model_class that creates a functional view V, C may import properties, data types, tables and documents from V;

— is-view-of relationship: when a class C is a fm_class_view_of referring to an item_class D, C may import properties, data types, tables and documents from D.

DA-3.10 Type checking for the tables referenced in the dictionary

In the ISO13584_table_resource_schema, type checking for a table is achieved by asserting that the type of a column shall be type-compatible with any library_variable associated with the corresponding variable_semantics.

A table referenced in a dictionary contains only columns that refer to self_property_semantics of which the data types are explicitly declared in the corresponding property_DETs. Type checking is performed:

129 CWA 15556-2:2006 (E)

— by asserting that any library_variable associated with a property_semantics shall be type- compatible with the data type declared for this property (this is already documented in the ISO13584_variable_semantics_schema), and

— by asserting that, if the table_extension of a table is available, the data type of each column shall be type compatible with the declared data type of the corresponding self_property_semantics (this is documented in the table_content entity).

DA-4 ISO13584_extended_dictionary_schema constant definitions

DA-4.1 Element_code_len

element_code_len is the maximum length for the code associated with a subtype of dictionary_element defined in the ISO13584_extended_dictionary_schema. This length allows the building of an identifier conformant with ISO 9075: SQL.

NOTE This identifier is the concatenation of the dictionary_element code and version.

EXPRESS specification:

*) CONSTANT element_code_len: INTEGER := 14; (*

DA-4.2 Dictionary_code_len

dictionary_code_len is the maximum length for the code that identifies a dictionary.

NOTE This identifier is the concatenation of the dictionary_element code and version.

EXPRESS specification:

*) dictionary_code_len: INTEGER := 80; END_CONSTANT; (*

DA-5 ISO13584_extended_dictionary_schema type definitions

This clause introduces the type definitions in the ISO13584_extended_dictionary_schema.

DA-5.1 Document_code_type

A document_code_type is a code associated with a document.

EXPRESS specification:

*) TYPE document_code_type = code_type; WHERE WR1: LENGTH(SELF) <= element_code_len; END_TYPE; -- document_code_type

130 CWA 15556-2:2006 (E)

(*

Formal propositions:

WR1: the length of the code shall be less or equal to the value of element_code_len.

DA-5.2 Program_library_code_type

A program_library_code_type is a code associated with a program library.

EXPRESS specification:

*) TYPE program_library_code_type = code_type; WHERE WR1: LENGTH(SELF) <= element_code_len; END_TYPE; -- program_library_code_type (*

Formal propositions:

WR1: the length of the code shall be less or equal to the value of element_code_len.

DA-5.3 Table_code_type

A table_code_type is a code associated with a table.

EXPRESS specification:

*) TYPE table_code_type = code_type; WHERE WR1: LENGTH(SELF) <= element_code_len; END_TYPE; -- table_code_type (*

Formal propositions:

WR1: the length of the code shall be less or equal to the value of element_code_len.

DA-5.4 Absolute_URL_type

An absolute_URL_type is a string, the structure of which is specified by IAB RFC 1739 and that identifies the absolute location where a resource may be found on the Internet, and the protocol that shall be used to access resources.

EXPRESS specification:

*) TYPE absolute_URL_type = identifier; WHERE WR1: SELF LIKE '*://*'; END_TYPE; -- absolute_URL_type

131 CWA 15556-2:2006 (E)

(*

Formal propositions:

WR1: an absolute_URL_type shall contain a semi-colon followed by the string ‘//’.

NOTE 1 The Internet protocol shall be specified in an absolute_URL_type, and the address of the server shall be part of an absolute_URL_type.

NOTE 2 Parties to agreements based on this part of ISO 13584 are encouraged to investigate the possibility of applying the most recent IAB RFC belonging to the Standards Track RFC and that updates IAB RFC 1739.

DA-5.5 Dictionary_code_type

A dictionary_code_type is a code associated with a dictionary.

EXPRESS specification:

*) TYPE dictionary_code_type = code_type; WHERE WR1: LENGTH(SELF) <= dictionary_code_len; END_TYPE; -- dictionary_code_type (*

Formal propositions:

WR1: the length of the code shall be less or equal to the value of dictionary_code_len.

DA-6 ISO13584_extended_dictionary_schema identification of a dictionary

A dictionary_identification entity allows to identify unambiguously a particular version of a particular dictionary of a particular supplier, whether information on this dictionary is available in some exchange context or not. It contains a code defined by the library data supplier which defines the dictionary, and a version version number and a revision revision number that characterize a particular state of this dictionary.

The version shall be incremented whenever the version of any class described in this dictionary is incremented. When the version is incremented, the revision of the corresponding dictionary_identification shall be reset to '000'.

NOTE 1 The version of a class is incremented when any change occurs in the dictionary definition of this class that influence its use, and when the class has a content and this content changes. These cases are specified in clause 8.3 of ISO 13584-42 and in clause 12.2.4 of this part of ISO 13584.

The revision revision number shall be increased when ever:

— the revision number of some classes described in this dictionary is increased and no class version number is increased, and

— any other piece of information represented in the dictionary is changed, but the revision numbers and version numbers of the classes described in this dictionary.

NOTE 2 A new revision number of a class is defined whenever a change in the attributes that describe this class influences neither its meaning nor its use. These cases are specified in clause 8.3 of ISO 13584-42.

132 CWA 15556-2:2006 (E)

EXPRESS specification:

*) ENTITY dictionary_identification; code: dictionary_code_type; version: version_type; revision: revision_type; defined_by: supplier_bsu; DERIVE absolute_id: identifier := defined_by.absolute_id + sep_id + code + sep_cv + version; INVERSE definition: SET [0:1] of dictionary FOR identified_by; UNIQUE UR1: absolute_id; END_ENTITY; (*

Attribute definitions: code: the code that characterizes the dictionary. version: the version number that characterizes the version of the dictionary. revision: the revision number that characterizes the revision of the dictionary. defined_by: the supplier who defines the dictionary. absolute_id: the unique identification of the dictionary. definition: a possible dictionary entity that describes whole or part of the dictionary.

Informal propositions:

IP1: when a dictionary is defined by a standard document that contains only one dictionary, the dictionary code shall be the standard number of the document that describes this dictionary if this document only defines one dictionary, it shall be the name defined for the pertinent dictionary in the document that describes it if this document defines several dictionaries. Unless otherwise specified, version shall be set to 1 and revision numbers shall be set to 0 for dictionaries defined by standard documents.

NOTE Representation of the standard numbers of standard documents is specified in clauses 5.1 and 5.2 of ISO 13584-26.

DA-7 ISO13584_extended_dictionary_schema overall architecture of a dictionary

A dictionary entity gives the summary information about a dictionary. This dictionary entity may either describe whole or part of the dictionary identified by a dictionary_identification entity, or it may describe a dictionary that is not associated with any particular dictionary_identification entity. When identified by a dictionary_identification entity, the dictionary entity specifies, through its is_complete Boolean attribute, whether it describes the whole dictionary_identification dictionary, or it describes only part of it. When the dictionary entity only describes part of the whole dictionary_identification dictionary, it may define the dictionary that is required to be available on the receiving system to be able to create the complete content of the dictionary_identification dictionary

133 CWA 15556-2:2006 (E)

from the content of the dictionary entity. The dictionary required to be available on the receiving system is specified by the updates attribute. A dictionary entity may also specify particular rules for combining the entities referenced by the dictionary entity with the content of the preexisting updates dictionary to build the dictionary_identification dictionary. This is done by the update_agreement attribute.

When updates exists and update_agreement does not exists, this means that all the basic_semantic_units, dictionary_elements or content_items that belongs to the identified_by dictionary and that are not provided as part of the content of the dictionary entity, already belonged, in the same version, to the updates dictionary. Thus, the identified_by dictionary may be built from the updates dictionary and from the up-dating entities provided as part of the context of the dictionary entity.

The dictionary entity may also specify, by means of its referenced_dictionaries attributes, whether it references some other dictionaries that are identified by dictionary_identification entities.

NOTE 1 Reference to dictionary_identification entities allows to specify particular versions and/or revisions of referenced dictionaries. When this information is not needed, a dictionary is not required to reference any dictionary_identification entity.

A dictionary entity specifies the precise information model of the library delivery file in which a dictionary entity instance is included by means of two attributes. The library_structure attribute references the library integrated information model of which the library delivery file contains a population. This reference is done by means of an library_iim_identification entity instance that allows to exactly specify a version of the corresponding EXPRESS schema. The supported_vep specifies which view exchange protocols are referenced by the library delivery file. All the constraints defined in these view exchange protocols shall be fulfilled by the library delivery file content.

NOTE 2 A view exchange protocol may specify how it should be referenced from a library delivery file by means of an EXPRESS schema that consists only of constraints. These constraints are fulfilled by any library delivery file that references this view exchange protocol in any of its conformance class.

EXAMPLE 1 Annex C specifies how to build the complete information model of a library delivery file that reference ISO13584_g_m_iim_schema and a view exchange protocol "V1". A dictionary entity contains one particular supplier_BSU that identifies the library data supplier who is responsible for the dictionary content. Only the dictionary_elements and the content_items associated with basic semantic units defined by this library data supplier are guaranteed by this library data supplier. Other dictionary_elements or content_items, if any, are only provided for convenience and should not be recorded in the user integrated library.

NOTE 3 This part of ISO 13584 does not forbid to deliver dictionary_elements or content_items defined by supplier B within a dictionary of which supplier A is responsible. But this part of ISO 13584 does not contain any provision to ensure correctness or updating correctness of such pieces of information.

NOTE 4 basic_semantic_unit, dictionary_element, content_item and the defined_by attribute of class_BSU are defined in ISO 13584-42.

NOTE 5 A dictionary entity, or one of its subtype, is required to be instantiated in a library delivery file for all the conformance classes of the library integrated information models defined in this part of ISO 13584, but the conformance class 0 intended to be compatible with IEC 61360-2.

NOTE 6 Conformance requirements are defined in clauses 15, 16, 17 and 18 of this part of ISO 13584.

A dictionary also contains a set of supplier_BSUs that are the other library data suppliers referred to in this dictionary. It contains a list of class_BSUs that specifies the ordered list of classes referred to, or contained. The order of the list shall be such that when a class_BSU is associated with a class, the class_BSUs referred to either directly or indirectly by this class shall always precede the referring class_BSU in the contained_classes list.

NOTE 7 This order is only intended to facilitate the compiling process of a dictionary if the implementation uses a procedural compiling process such as the one defined in the informative annex O. In this case, it

134 CWA 15556-2:2006 (E)

avoids any forward references. This order doesn’t need to be followed provide that the result of the compiling process is the same that the one that would result from the process defined in the informative annex O.

A dictionary finally defines the set of protocols that are referenced by the elements in this dictionary, the set of possible view exchange protocols that specify the library external files, the set of possible a_posteriori_semantic_relationships between library classes. A dictionary also contains various informative items.

A library exchange context conformant to one of the LIIM specified in this part of ISO 13584 shall contain only one dictionary.

A class_BSU is referred to directly by a class through the following attributes:

— class.its_superclass: is-a relationship;

and, if the class is defined by means of an a_priori_semantic_relationship:

— class\a_priori_semantic_relationship.referenced_classes.

A class_BSU is referred to indirectly by a class:

— either when a property_BSU or a data_type_BSU referenced by this class references itself directly or indirectly by this class_BSU, or

— when a class_BSU_relationship referring to this class by its relating_class attribute refers to the class_BSU by its related_tokens attributes.

A property_BSU or a data_type_BSU refers to a class_BSU when:

— its name_scope is this class_BSU, or

— its definition dictionary_element is provided and refers, as its domain, to a class_BSU (is-part-of relationship), or

— its definition dictionary_element is provided and refers, as its domain, to another data_type_BSU that refers to a class_BSU (recursive definition);

Such references are checked by the makes_reference_outside function.

In the ISO13584_extended_dictionary_schema, a class_BSU makes an indirect forward reference to a class_BSU with respect to the class list order in five cases. a) when its described_by attribute contains a property_BSU that makes a makes_reference_outside; b) or when the class is defined by means of an a_priori_semantic_relationship, and its imported properties defined by the referenced_properties inherited attribute contain a property_BSU that makes a makes_reference_outside; c) or when its defined_types attribute contains a data_type_BSU that makes a makes_reference_outside; d) or when the class is defined by means of an a_priori_semantic_relationship, and its imported data types defined by the referenced_data_types inherited attribute contain a data_type_BSU that makes a makes_reference_outside; e) or when its associated_items attribute contains a class_BSU_relationship whose related_tokens makes a makes_reference_outside;

135 CWA 15556-2:2006 (E)

In the context of the ISO13584_extended_dictionary_schema, this situation may happen in two cases:

1) the class_BSU_relationship is a class_table_relationship that contains a table_BSU that makes through its name_scope attribute a makes_reference_outside, or

2) the class_BSU_relationship is a class_document_relationship that contains a document_BSU that makes through its name_scope attributes a makes_reference_outside

The base_protocols attribute enables the library data supplier to specify which external file protocols shall be supported by the user LMS to be able to process the library external files associated with the library delivery file. In a dictionary entity, the external_file_protocols referenced by the base_protocols attribute may be any protocol. This entity may therefore be used for an exchange between a library data supplier and an end-user who agree on some proprietary protocols. The dictionary_in_standard_format, subtype of dictionary, only permits those external_file_protocols that are defined in the referenced library integrated information model, and in the referenced view exchange protocols.

EXAMPLE 2 A library data supplier and an end-user may agree to use a private encoding for the content of the documents referenced in a dictionary. Such a dictionary cannot be exchanged as a dictionary_in_standard_format.

EXPRESS specification:

*) ENTITY dictionary SUPERTYPE OF(dictionary_in_standard_format); identified_by: OPTIONAL dictionary_identification; is_complete: OPTIONAL BOOLEAN; updates: OPTIONAL dictionary_identification; update_agreement: OPTIONAL identifier; referenced_dictionaries: SET [0:?] OF dictionary_identification; responsible_supplier: supplier_BSU; library_structure: library_iim_identification; base_protocols: SET [0:?] OF external_file_protocol; supported_vep: SET [0:?] OF view_exchange_protocol_identification; referred_suppliers: SET [1:?] OF supplier_BSU; contained_classes: LIST [0:?] OF UNIQUE class_BSU; a_posteriori_semantic_relationships: SET [0:?] OF a_posteriori_semantic_relationship; names: item_names; note: OPTIONAL note_type; remark: OPTIONAL remark_type; WHERE WR1: prefix_ordered_class_list(SELF.contained_classes); WR2: (EXISTS(identified_by) AND EXISTS(is_complete)) OR (NOT(EXISTS(identified_by)) AND NOT(EXISTS(is_complete))); WR3: NOT(EXISTS(identified_by)) OR (SELF.identified_by.defined_by = SELF.responsible_supplier); WR4: NOT(EXISTS(updates)) OR (EXISTS(identified_by) AND (is_complete = FALSE)); WR5: NOT(EXISTS(update_agreement)) OR EXISTS(updates); WR6: NOT(EXISTS(updates)) OR ((updates.code = identified_by.code)

136 CWA 15556-2:2006 (E)

AND (updates.defined_by = identified_by.defined_by) AND (updates.version <= identified_by.version) AND (NOT(updates.version = identified_by.version) OR (updates.revision < identified_by.revision))); END_ENTITY; -- dictionary (*

Attribute definitions: identified_by: the dictionary_identification, if any, identifying the dictionary to which the classes defined in the dictionary entity belong.

is_complete: a Boolean attribute that specifies whether the dictionary entity describes all the classes belonging to the dictionary identified by the identified_by dictionary_identification entity.

NOTE 8 is_complete only exists when identified_by exists.

updates: the dictionary_identification, if any,of the dictionary that should be already available on the receiving system to be able to create the complete content of the dictionary_identification dictionary from the content of the dictionary entity.

NOTE 9 updates may only exist when identified_by exists and is_complete is equal to false.

update_agreement: the identifier, if any, that identifies the process to be used for creating the identified_by dictionary on the receiving system from the updates dictionary and the content of the dictionary entity.

NOTE 10 update_agreement may only exist when updates exists.

NOTE 11 Values to be used for this attribute may be either specified by private agreement between the sender and the receiver, or may be specified within a library integrated information model.

EXAMPLE 3 A particular value of the update_agreement attribute might mean that only those dictionary_elements of which some attributes are explicitly modified when moving from the updates dictionary to the identified_by dictionary shall be provided as part of the content of the dictionary entity.

NOTE 12 When updates exists and update_agreement does not exist, the process to be used to restore the identified_by dictionary is the one described in Annex O: all the dictionary_elements or the content_items of the basic_semantic_units defined in the identified_by dictionary either are provided as part of the content of the dictionary entity, or they already belong to the updates dictionary.

referenced_dictionaries: the dictionary_identifications, if any, identifying the other dictionaries of which some classes are referenced in the dictionary entity.

NOTE 13 Neither the described dictionary, nor the referenced dictionaries need to be identified by dictionary_identification entities.

responsible_supplier: the library data supplier responsible for the dictionary_elements. library_structure: the library integrated information model that the library delivery containing this dictionary realizes. base_protocols: the set of referenced external_file_protocols.

NOTE 14 Only the external_file_protocols of which the support is required to successfully compile the dictionary belong to the base_protocols attribute. The possible external_file_protocols referenced by a document content do not belong to the base_protocols attribute (see annex O).

supported_vep: the set of view exchange protocols supported by the dictionary.

referred_suppliers: the list of suppliers referred to or defined.

137 CWA 15556-2:2006 (E)

contained_classes: the list of the classes contained, whichever the supplier_bsu they reference.

a_posteriori_semantic_relationships: the list of a_posteriori_semantic_relationships that are specified.

names: the names of the dictionary.

note: the note that describes the content of the dictionary.

remark: the remarks associated with the current delivery of the described dictionary.

Formal propositions:

WR1: the classes may be compiled without forward references in the order defined by the contained_classes list.

WR2: when the dictionary entity describes a dictionary identified by a dictionary_identification entity, it shall specify whether it describes whole or part of this dictionary.

WR3: when the dictionary entity describes a dictionary identified by a dictionary_identification entity, the supplier referenced by the defined_by attribute of the latter shall be the same as the supplier referenced by the responsible_supplier attribute of the former.

WR4: updates shall not exists when identified_by does not exist or is_complete equals TRUE.

WR5: update_agreement shall not exist when updates does not exist.

WR6: if both identified_by and updates exist, the identified_by dictionary shall have the same code and the same supplier as the updates dictionary, and a version/revision greater than the updates dictionary.

DA-8 Dictionary_in_standard_format

A dictionary_in_standard_format entity is a dictionary that only references in its base_protocols attribute those external file protocols that are allowed either by the library integrated information model indicated by the library_structure attribute or the view exchange protocols referenced in the supported_vep attribute.

NOTE 1 Both library_iim_identification, and view_exchange_protocol_identification are meta data that describes respectively library integrated information models and a view exchange protocols. Standard values of these entities are specified within the standard documents that specify library integrated information models and view exchange protocols. Each one of these entities specifies which external file protocol(s) may be used for exchanging information between conformant implementations.

EXAMPLE By agreement between the sender and the receiver, a dictionary might reference a program_protocol that corresponds to CATIA® programs. Such a proprietary external file protocol is allowed neither by a library integrated information model, nor by an ISO 13584 view exchange protocol. Thus it shall not be referenced by a dictionary_in_standard_format entity, but by a dictionary entity.

Only a user LMS supporting the same conformance classes as the ones referenced in the library_structure and in the supported_vep attribute of a dictionary shall be able to compile this dictionary.

NOTE 2 Both library integrated information models and view exchange protocols define various sets of options that may be selected by a conformant implementation. These sets of options are termed conformance classes.

138 CWA 15556-2:2006 (E)

EXPRESS specification:

*) ENTITY dictionary_in_standard_format SUBTYPE OF(dictionary); WHERE WR1: QUERY(int <* SELF\dictionary.base_protocols | ((SIZEOF(QUERY(vep <* SELF\dictionary.supported_vep | int IN vep\data_exchange_specification_identification .external_file_protocols)) = 0) AND NOT(int IN SELF\dictionary.library_structure .external_file_protocols))) = []; END_ENTITY; -- dictionary_in_standard_format (*

Formal propositions:

WR1: the set of external_file_protocols in the base_protocols attribute shall be a subset of the union of the external_file_protocols referenced in the library_structure attribute and the external_file_protocols referenced in the members of the supported_vep attribute.

DA-9 Data_exchange_specification_identification

A data_exchange_specification_identification identifies a data specification published in one part of ISO 13584 that contributes to the specification of a library exchange context. A data_exchange_specification_identification may be either a library_iim_identification, or a view_exchange_protocol_identification.

NOTE The specification of a library exchange context consists of:

a) a library integrated information model,

b) 0 to n view exchange protocol(s), and

c) an implementation method.

EXPRESS specification:

*) ENTITY data_exchange_specification_identification ABSTRACT SUPERTYPE OF(ONEOF(library_iim_identification, view_exchange_protocol_identification)); source_document_identifier: OPTIONAL identifier; status: label; name: identifier; date: year_number; application: OPTIONAL identifier; level: OPTIONAL identifier; external_file_protocols: SET [0:?] OF external_file_protocol; END_ENTITY; -- data_exchange_specification_identification (*

139 CWA 15556-2:2006 (E)

Attribute definitions:

source_document_identifier: the identifier of the document that contains the data specification. For those documents issued by ISO TC184/SC4/WG2 this identifier shall be the integer part of the N number. status: a classification of the data specification with respect to its acceptance by the approving body of this International Standard, possibly followed by an integer version. It may take the values: 'WD', 'CD', 'DIS', 'FDIS', 'IS', 'TS', 'PAS', 'ITA'. name: the identifier of the data specification as defined in the corresponding part of ISO 13584. date: the year when the corresponding part of ISO 13584 reached its status. application: an identifier possibly defined in the corresponding part of ISO 13584 to characterise an allowed functional subset of the complete data specification.

level: an identifier possibly defined in the corresponding part of ISO 13584 that further characterises an allowed subset of the application subset.

external_file_protocols: the list of external_file_protocols of which the use is allowed by the view exchange protocol for the application functional subset.

DA-10 Library_iim_identification

A library_iim_identification identifies a library integrated information model that includes the definition of a library delivery file information model.

NOTE This part of ISO 13584 includes three library integrated information models, which are defined in clauses 16, 17 and 18.

EXAMPLE The library integrated information model LIIM 24-1 includes the ISO13584_g_m_iim_schema that is the information model of a library that consists only of general model classes. It also includes the ISO13584_g_m_iim_conformance_schema documented in annex E.

EXPRESS specification:

*) ENTITY library_iim_identification SUBTYPE OF(data_exchange_specification_identification); END_ENTITY; -- library_iim_identification (*

DA-11 View_exchange_protocol_identification

A view_exchange_protocol_identification identifies a data specification defined in a part of the view exchange protocol series of parts of ISO 13584. References to such view exchange protocols define which library external files are used within a library exchange context, which dictionary entries shall be recognized by a receiving system that claims conformance to this view exchange protocol, and which additional constraints are fulfilled by a library delivery file.

NOTE 1 A view exchange protocol may specify which standard instance of a view_exchange_protocol_identification entity data type is to be used to reference it. This is done by means of an EXPRESS schema that consists only of constraints. These constraints are fulfilled by any library delivery file that references this view exchange protocol in any of its conformance class. This means that only this standard instance may be used to reference this view exchange protocol.

140 CWA 15556-2:2006 (E)

NOTE 2 The various kinds of library external files that are allowed for use by a view exchange protocol are those external files protocols that are referenced by the external_file_protocols inherited attribute of the view_exchange_protocol_identification entity instance. Reference to such an instance by a dictionary entity adds these external_file_protocols to those that were allowed by the library integrated model and by the other view exchange protocols.

When a view_exchange_protocol_identification references an application_protocol_definition, this means that the corresponding view exchange protocol supports the use of library external files conformant with one Application Protocol of ISO 10303.

EXPRESS specification:

*) ENTITY view_exchange_protocol_identification SUBTYPE OF(data_exchange_specification_identification); referenced_ISO10303_AP: OPTIONAL application_protocol_definition; END_ENTITY; -- view_exchange_protocol_identification (*

Attribute definitions: referenced_ISO10303_AP: the ISO 10303 Application Protocol to which library external files shall conform. The referenced_ISO10303_AP need not to be specified for a particular view_exchange_protocol_id.

DA-12 ISO13584_extended_dictionary_schema entity definitions: additional entity instance types

This clause specifies some subtypes of entity_instance_type that are needed for the extended dictionary schema.

NOTE 1 Entity_instance_type is defined in the ISO/IEC common dictionary schema.

NOTE 2 Instances of these subtypes of entity_instance_type might also be represented as instances of entity_instance_type. These subtypes are defined to enable an EXPRESS schema to use explicitlly some or all of these subtypes without using the entity_instance_type supertype.

DA-12.1 Representation_type

A representation_type is the type of an instance of an ISO 10303-43 representation. View exchange protocols shall specify the use of this resource.

NOTE According to ISO 10303-42, an instance of placement may only exist if it is related to a geometric_representation_context in some representation. Therefore, if some class properties are placements, this class shall contain a property whose data type is a geometric_representation_context_type (that defines the context of these placements) and a property whose data type is a representation_type (that gathers these placements with their context).

EXPRESS specification:

*) ENTITY representation_type SUBTYPE OF(entity_instance_type); WHERE WR1:'REPRESENTATION_SCHEMA.REPRESENTATION' IN SELF\entity_instance_type.type_name;

141 CWA 15556-2:2006 (E)

END_ENTITY; -- representation_type (*

Formal propositions:

WR1: the string 'REPRESENTATION_SCHEMA.REPRESENTATION' shall be contained in the attribute SELF\entity_instance_type.type_name that is a SET of STRINGs.

DA-12.2 Geometric_representation_context_type

A geometric_representation_context_type is the type of an instance of an ISO 10303-42 geometric_representation_context. View exchange protocols shall specify the use of this resource.

EXPRESS specification:

*) ENTITY geometric_representation_context_type SUBTYPE OF(entity_instance_type); WHERE WR1:'GEOMETRY_SCHEMA.GEOMETRIC_REPRESENTATION_CONTEXT' IN SELF\entity_instance_type.type_name; END_ENTITY; -- geometric_representation_context_type (*

Formal propositions:

WR1: the string 'GEOMETRY_SCHEMA.REPRESENTATION_CONTEXT' shall be contained in the attribute SELF\entity_instance_type.type_name that is a SET of STRINGs.

DA-12.3 Representation_reference_type

A representation_reference_type is the type of an instance of representation_reference (see clause 13.7.2).

EXAMPLE An instance of representation_reference may be used in a library exchange context to refer to a library external file that contains an instance of an ISO 10303-43 representation. Such a value might be the one of a functional model property that describes the content of some functional view the functional model may generate. NOTE View exchange protocols shall specify the use of this resource.

EXPRESS specification:

*) ENTITY representation_reference_type SUBTYPE OF(entity_instance_type); WHERE WR1:'ISO13584_EXTERNAL_FILE_SCHEMA.REPRESENTATION_REFERENCE' IN SELF\entity_instance_type.type_name; END_ENTITY; -- representation_reference_type (*

142 CWA 15556-2:2006 (E)

Formal propositions:

WR1: the string 'ISO13584_EXTERNAL_FILE_SCHEMA.REPRESENTATION_REFERENCE' shall be contained in the attribute SELF\entity_instance_type.type_name that is a SET of STRINGs.

DA-12.4 Program_reference_type

A program_reference_type is the type of an external reference, from a library exchange context, to an external file that contains a program. For example, this external file may be an ISO 13584-31 conforming program that may generate, according to the values of some parameters, different instances of ISO 10303 representation data types. Such an entity instance may be used, in a library exchange context, to describe the content of a method associated with a functional model class.

NOTE View exchange protocols specify the use of this resource.

EXPRESS specification:

*) ENTITY program_reference_type SUBTYPE OF(entity_instance_type); WHERE WR1: 'ISO13584_EXTERNAL_FILE_SCHEMA.PROGRAM_REFERENCE' IN SELF\entity_instance_type.type_name; END_ENTITY; -- program_reference_type (*

Formal propositions:

WR1: the string 'ISO13584_EXTERNAL_FILE_SCHEMA.PROGRAM_REFERENCE' must be contained in the attribute SELF\entity_instance_type.type_name that is a SET of STRINGs.

DA-13 ISO13584_extended_dictionary_schema entity definitions: additional basic semantic units

This clause introduces the different basic semantic units that are used to represent the supplier related elements and class related elements that are specific to the ISO13584_extended_dictionary_schema. They are obtained by subtyping the supplier_related_BSU and class_related_BSU described in the ISO13584_IEC61360_dictionary_schema.

DA-13.1 Program_library_BSU

A program_library_BSU is a basic semantic unit associated with a program library.

EXPRESS specification:

*) ENTITY program_library_BSU SUBTYPE OF(supplier_related_BSU); defined_by: supplier_BSU; SELF\basic_semantic_unit.code: program_library_code_type; DERIVE absolute_id: identifier := defined_by.dic_identifier + sep_id + dic_identifier;

143 CWA 15556-2:2006 (E)

INVERSE associated_to_supplier: supplier_BSU_relationship FOR related_tokens; UNIQUE UR1: absolute_id; WHERE WR1: defined_by :=: associated_to_supplier. relating_supplier\dictionary_element.identified_by; END_ENTITY; -- program_library_BSU (*

Attribute definitions: defined_by: the supplier who defined the referenced program library. absolute_id: the identifier associated with the referenced program library.

associated_to_supplier: the supplier_BSU_relationship referring to this program_library_BSU.

Formal propositions:

UR1: the absolute_id attribute is unique.

WR1: through the supplier_BSU_relationship, the referenced program library is associated with the same supplier as the supplier who defined it.

Informal propositions:

IP1: when the version of a program_library_BSU is increased, the new program library shall include one, possibly new, release of each program contained in the previous program library version.

When the version is incremented, the revision of the corresponding dictionary_element and the content_revision of the possible content_item shall both be reset to '000'.

NOTE This informal proposition ensures the feasibility of upward compatible evolution of program libraries: any program that makes references to one program library in some version may be run (with a difference considered by the supplier as acceptable) using any new version.

DA-13.2 Table_BSU

A table_BSU entity is a basic_semantic_unit that constitutes the table_identification of a table referenced in a ISO 13584-conformant dictionary.

The following gives an overview of how updating operations have effects on the version number (V) of a table_BSU, on the table_element revision number (DR) or on the table_content revision of content number (CR) concept for the given class, or are forbidden at all (X).— Change of key columns21: X

— Suppression of non-key columns: X

— Addition of non-key columns: V

— Change of number of lines: V

21 Other than change of version of the referenced properties

144 CWA 15556-2:2006 (E)

— Other changes in value content22: V

— Change of names, definition, note, and remark: DR

— Change of version of referenced property23: DR/V

— Correction of value errors or imprecision CR

Moreover, a table contributes to the definition of the class where it is applicable. Thus, a change of version of a table implies a change of version of the classes where it is applicable.

EXPRESS specification:

*) ENTITY table_BSU SUBTYPE OF(class_related_BSU, table_identification); name_scope: class_BSU; SELF\basic_semantic_unit.code: table_code_type; DERIVE absolute_id: identifier:= name_scope. defined_by.dic_identifier + sep_id + name_scope.dic_identifier + sep_id + dic_identifier; UNIQUE UR1: absolute_id; END_ENTITY; -- table_BSU (*

Attribute definitions: name_scope: the root class where the referenced table is visible. absolute_id: the identifier associated with the referenced table.

Formal propositions:

UR1: the absolute_id attribute is unique.

Informal propositions:

IP1: when the version of a table_BSU is increased, the new table shall:

— have the same property_BSUs as a key, and

— contain, as its first columns, columns referring to the same property_BSUs as the previous table version. It may contain additional columns and/or different values in the column.

NOTE This informal proposition ensures the feasibility of upward compatible evolution of tables: any query or program that makes reference to one table may be run (with a difference considered by the supplier as acceptable) using any new version.

22 Other than typo correction or value accuracy correction

23 DR if values are unchanged, V if values are changed

145 CWA 15556-2:2006 (E)

IP2: when the version is incremented, the revision of the corresponding dictionary_element and the revision_of_content of the possible table_content shall both be reset to '000'.

DA-13.3 Document_BSU

A document_BSU is a basic semantic unit associated with a document.

EXPRESS specification:

*) ENTITY document_BSU SUBTYPE OF(class_related_BSU); name_scope: class_BSU; SELF\basic_semantic_unit.code: document_code_type; DERIVE absolute_id: identifier := name_scope.defined_by.dic_identifier + sep_id + name_scope.dic_identifier + sep_id + dic_identifier; INVERSE associate_to_class: class_BSU_relationship FOR related_tokens; UNIQUE UR1: absolute_id; END_ENTITY; -- document_BSU (*

Attribute definitions: name_scope: the root class where the referenced document is visible. absolute_id: the identifier associated with the referenced document.

associate_to_class: the class_BSU_relationship referring to this document_BSU.

Formal propositions:

UR1: the absolute_id attribute is unique.

Informal propositions:

IP1: when the version of a document_BSU is increased, the new document shall have the same scope as the previous one but may have a different content or use a different protocol.

When the version is incremented, the revision of the corresponding dictionary_element and the content_revision of the possible content_item shall both be reset to '000'.

NOTE This informal proposition ensures the feasibility of upward compatible evolution of document usage. When, in any program, a request to display some document takes place. Displaying a new version of the document provides the same kind of information to the user.

146 CWA 15556-2:2006 (E)

DA-14 ISO13584_extended_dictionary_schema entity definitions: supplier BSU relationship

DA-14.1 Supplier_program_library_relationship

A supplier_program_library_relationship is a link between program libraries and the supplier that provides them. This link is modelled through the entity relationship paradigm.

EXPRESS specification:

*) ENTITY supplier_program_library_relationship SUBTYPE OF(supplier_BSU_relationship); SELF\supplier_BSU_relationship.related_tokens: SET [1:?] OF program_library_BSU; END_ENTITY; -- supplier_program_library_relationship (*

Attribute definitions: related_tokens: a set of pogram library units that are provided by the supplier described.

DA-15 ISO13584_extended_dictionary_schema entity definitions: class BSU relationships

This clause introduces the different relationships between a class and class related elements.

DA-15.1 Class_table_relationship

A class_table_relationship is a link between tables and the root class(es) where they are applicable.

EXPRESS specification:

*) ENTITY class_table_relationship SUBTYPE OF(class_BSU_relationship); SELF\class_BSU_relationship.related_tokens: SET [1:?] OF table_BSU; WHERE WR1: applicable_properties_for_applicable_tables(SELF); WR2: visible_tables(SELF\class_BSU_relationship.relating_class. identified_by, SELF.related_tokens); END_ENTITY; -- class_table_relationship (*

Attribute definitions: related_tokens: the set of tables related to the class.

147 CWA 15556-2:2006 (E)

Formal propositions:

WR1: each table associated with a class shall contain columns that refer to applicable properties for this class.

WR2: all the tables associated with a class shall be visible from the class, i.e., the tree whose root is their name_scope shall contain the class.

DA-15.2 Class_document_relationship

A class_document_relationship is a link between documents and the root class(es) where they are applicable.

EXPRESS specification:

*) ENTITY class_document_relationship SUBTYPE OF(class_BSU_relationship); SELF\class_BSU_relationship.related_tokens: SET [1:?] OF document_BSU; WHERE WR1: visible_documents( SELF\class_BSU_relationship.relating_class.identified_by, SELF.related_tokens); END_ENTITY; -- class_document_relationship (*

Attribute definitions: related_tokens: the set of document_BSU that are related to the class.

Formal propositions:

WR1: the documents associated with a class shall be visible from the class, i.e., the tree whose root is their name_scope shall contain the class.

DA-16 ISO13584_extended_dictionary_schema entity definitions: properties of functional models and functional views

The ISO/IEC common dictionary schema makes provision for three kinds of properties that may be used to describe the library items represented by general model classes:

— context parameters (represented as a condition_DET property_DET),

— item characteristics (represented as a non_dependent_P_DET property_DET),

— context-dependent characteristics (represented as a dependent_P_DET property_DET).

This clause provides the resource to represent model-defined or view-defined properties.

DA-16.1 Representation_P_DET

A representation_P_DET entity represents the properties that are defined in classes of functional models and classes of functional views.

148 CWA 15556-2:2006 (E)

EXAMPLE This subtype of property_DET shall be used to represent the properties that characterise the insertion context of the representation of a library item, the internal variables used in a method, and the properties that constitute a representation of a library item.

EXPRESS specification:

*) ENTITY representation_P_DET SUBTYPE OF(property_DET); WHERE WR1: NOT('ISO13584_IEC61360_DICTIONARY_SCHEMA.CONDITION_DET' IN TYPEOF(SELF)) AND NOT('ISO13584_IEC61360_DICTIONARY_SCHEMA.DEPENDENT_P_DET' IN TYPEOF(SELF)) AND NOT('ISO13584_IEC61360_DICTIONARY_SCHEMA' + '.NON_DEPENDENT_P_DET' IN TYPEOF(SELF)); END_ENTITY; -- representation_P_DET (*

Formal propositions:

WR1: a representation_P_DET cannot be a non_dependent_P_DET, a dependent_P_DET, or a condition_DET.

DA-17 ISO13584_extended_dictionary_schema entity definitions: specific dictionary elements

This clause defines the dictionary elements specific to ISO 13584. They are divided into two categories: one for suppliers and another for classes.

DA-17.1 Supplier_related_dictionary_element

A supplier_related_dictionary_element is a dictionary_element that contains information that may be used to process any library provided by a supplier.

EXPRESS specification:

*) ENTITY supplier_related_dictionary_element ABSTRACT SUPERTYPE OF(program_library_element) SUBTYPE OF(dictionary_element); SELF\dictionary_element.identified_by: supplier_related_BSU; names: item_names; definition: definition_type; note: OPTIONAL note_type; remark: OPTIONAL remark_type; END_ENTITY; -- supplier_related_dictionary_element (*

Attribute definitions: identified_by: the basic semantic unit that identifies the dictionary_element.

149 CWA 15556-2:2006 (E)

names: the names of the dictionary_element described.

definition: the definition of the dictionary_element described.

note: the notes associated with the dictionary_element described.

remark: the remark associated with the dictionary_element described.

DA-17.2 Class_related_dictionary_element

A class_related_dictionary_element is a dictionary_element that contributes to the definition of a class.

EXPRESS specification:

*) ENTITY class_related_dictionary_element ABSTRACT SUPERTYPE OF(ONEOF(table_element, document_element)) SUBTYPE OF(dictionary_element); SELF\dictionary_element.identified_by: class_related_BSU; names: item_names; definition: definition_type; note: OPTIONAL note_type; remark: OPTIONAL remark_type; END_ENTITY; -- class_related_dictionary_element (*

Attribute definitions: identified_by: the basic semantic unit that identifies the dictionary_element. names: the names of the dictionary_element described. definition: the definition of the dictionary_element described. note: the notes associated with the dictionary_element described. remark: the remarks associated with the dictionary_element described.

DA-17.3 Program_library_element

A program_library_element is a description of a program library.

EXPRESS specification:

*) ENTITY program_library_element SUBTYPE OF(supplier_related_dictionary_element); SELF\dictionary_element.identified_by: program_library_BSU; END_ENTITY; -- program_library_element (*

Attribute definitions: identified_by: the basic semantic unit that identifies the program library described. 150 CWA 15556-2:2006 (E)

DA-18 ISO13584_extended_dictionary_schema entity definitions: class related elements

These clauses introduce the class related elements specific to ISO 13584.

DA-18.1 Table_element

A table_element is the table_specification of a table associated with a class in an ISO 13584 conformant dictionary. The variable_semantics that define the meaning of its columns shall be self_property_semantics that refer to properties that are either visible for the class that constitutes the name_scope of the table or imported by this class or any of its superclass.

NOTE 1 If a property_semantics, defined in functional view classes, needs to be referenced as their meaning by columns of a table_element associated with a functional model class in an ISO 13584 conformant dictionary, the functional model class can import the property_semantics defined in functional view classes through the imported_properties_from_view attribute of the abstract_functional_model_class entity.

EXPRESS specification:

*) ENTITY table_element SUBTYPE OF(class_related_dictionary_element, table_specification); SELF\dictionary_element.identified_by: table_BSU; SELF\table_specification.column_meaning: LIST [1:?] OF UNIQUE self_property_semantics; SELF\table_specification.key: SET [1:?] OF self_property_semantics; DERIVE SELF\table_specification.table_identifier: table_BSU := SELF.identified_by; WHERE WR1: QUERY (temp <* SELF.column_meaning | NOT visible_properties( SELF\dictionary_element.identified_by.name_scope, get_property_BSU_from_property_semantics([temp])) AND NOT applicable_properties( SELF\dictionary_element.identified_by.name_scope, list_to_set(get_property_BSU_from_property_semantics( [temp])))) = []; END_ENTITY; -- table_element (*

Attribute definitions: identified_by: the basic semantic unit that identifies the table. column_meaning: the list of self_property_semantics that represents the meaning of the different columns contained in the table. key: the set of property_semantics that are the key of the table described. table_identifier: the table_identification that is the table_BSU that identifies the table.

151 CWA 15556-2:2006 (E)

Formal propositions:

WR1: the variable_semantics that define the meaning of the columns of the table shall be self_property_semantics that refer to properties that are visible for the class that constitutes the name_scope of the table or imported by this class, or any of its superclasses.

Informal propositions:

IP1: the different revision of the dictionary_element that describes the same version of a table_BSU may only differ by their informal attributes: names, definition, note and remark.

NOTE 2 This informal proposition states that when updating a dictionary an old revision may be replaced by a new one without any consequence on the functional behaviour of the integrated library.

DA-18.2 RDB_table_element

A RDB_table_element is a table_element that contains columns of simple types.

EXPRESS specification:

*) ENTITY RDB_table_element SUBTYPE OF(table_element, RDB_table_specification); WHERE WR1: QUERY(temp <* SELF.column_meaning | simple_type_data_type(temp\property_semantics.the_property) = FALSE) = []; END_ENTITY; -- RDB_table_element (*

Formal propositions:

WR1: all the types of the properties in the column_meaning list shall be simple types.

DA-18.3 Document_element

A document_element is a specification of a document.

EXPRESS specification:

*) ENTITY document_element SUPERTYPE OF(ONEOF( document_element_with_http_access, document_element_with_translated_http_access)) SUBTYPE OF(class_related_dictionary_element); SELF\dictionary_element.identified_by: document_BSU; authors: OPTIONAL LIST [1:?] OF person; publishing_organisation: organization; END_ENTITY; -- document_element (*

152 CWA 15556-2:2006 (E)

Attribute definitions: identified_by: the basic semantic unit that identifies the document. authors: the author(s) of the document. publishing_organisation: the organisation that publishes the document.

Informal propositions:

IP1: the different revision of the dictionary_element that describes the same version of a document_BSU may only differ by their informal attributes: names, definition, note and remark.

NOTE This informal proposition states that when updating a dictionary an old revision may be replaced by a new one without any consequence on the functional behaviour of the integrated library.

DA-18.4 Document_element_with_http_access

A document_element_with_http_access is a document whose content may be accessed using the http Internet transfer protocol at some absolute URL. The document is in the language defined by the unique global_language_assignment associated with the dictionary.

NOTE 1 The global_language_assignment entity is defined in the ISO13584_IEC61360_language_resource_schema documented in ISO 13584-42: 1998.

NOTE 2 The http protocol is specified in IAB RFC 2068.

NOTE 3 Parties to agreements based on this part of ISO 13584 are encouraged to investigate the possibility of applying the most recent IAB RFC belonging to the Standards Track RFC and that updates IAB RFC 2068.

EXPRESS specification:

*) ENTITY document_element_with_http_access SUBTYPE OF(document_element); remote_location: absolute_URL_type; END_ENTITY; -- document_element_with_http_access (*

Attribute definitions: remote_location: the absolute URL that specifies the document locator.

Informal propositions:

IP1: the document format shall correspond to a standard MIME format registered by IAB.

IP2: the language of the document shall correspond to the language defined by the unique global_language_assignment.

DA-18.5 Document_element_with_translated_http_access

A document_element_with_translated_http_access is a document whose content may be accessed in different languages using the http Internet transfer protocol at several absolute URL. The translation languages are defined by a present_translations entity, and an URL is given for each corresponding language.

153 CWA 15556-2:2006 (E)

NOTE 1 The present_translations entity is defined in the ISO13584_IEC61360_language_resource_schema documented in ISO 13584-42.

NOTE 2 The http protocol is specified in IAB RFC 2068.

NOTE 3 Parties to agreements based on this part of ISO 13584 are encouraged to investigate the possibility of applying the most recent IAB RFC belonging to the Standards Track RFC and that updates IAB RFC 2068.

EXPRESS specification:

*) ENTITY document_element_with_translated_http_access SUBTYPE OF(document_element); remote_locations: LIST [1:?] OF absolute_URL_type; languages: present_translations; WHERE WR1: SIZEOF(remote_locations) = SIZEOF(languages.language_codes); END_ENTITY; -- document_element_with_translated_http_access (*

Attribute definitions: remote_locations: the list of absolute URLs that specify the locators where the document may be found in the different languages specified by the languages attribute. languages: the list of languages in which the document is translated.

Formal propositions:

WR1: the number of URL contained in the remote_locations list shall be equal to the number of languages defined in the languages.language_codes attribute.

Informal propositions:

IP1: the possibly different document formats shall correspond to standard MIME registered by the IAB.

IP2: the document located at the remote_locations[i] URL shall be in the language identified by languages.language_codes[i].

DA-18.6 Referenced_document

A referenced_document is a specialisation of a document defined in the ISO/IEC dictionary schema that enables to reference a document that is identified by a document_BSU.

EXPRESS specification:

*) ENTITY referenced_document SUBTYPE OF(document); document_reference: document_BSU; WHERE WR1: NOT('ISO13584_IEC61360_DICTIONARY_SCHEMA' + '.IDENTIFIED_DOCUMENT' IN TYPEOF(SELF)); END_ENTITY; -- referenced_document

154 CWA 15556-2:2006 (E)

(* Attribute definitions: document_reference: the basic semantic unit associated with the document.

Formal propositions:

WR1: a referenced_document shall not be an identified_document.

DA-18.7 Referenced_graphics

A referenced_graphics is a specialisation of a graphics defined in the ISO/IEC dictionary schema that enables to reference a document that is identified by a document_BSU and which contains the graphic image.

NOTE A referenced_graphics is a specialisation of a graphics entity defined in ISO 13584-42. Another specialisation of a graphics entity is an illustration defined in the ISO13584_external_file_schema. The illustration_is_not_a_referenced_graphics_rule ensures that both subtypes are incompatible. This rule is defined in the ISO13584_external_file_schema

EXPRESS specification:

*) ENTITY referenced_graphics SUBTYPE OF(graphics); graphics_reference: document_BSU; END_ENTITY; -- referenced_graphics (*

Attribute definitions: graphics_reference: the basic semantic unit associated with the document that provides the graphic image.

DA-19 ISO13584_extended_dictionary_schema entity definitions: feature class

A feature_class captures the dictionary description of items that represent one aspect of another item and that are themselves associated with properties.

EXAMPLE Such an aspect may be a form feature or an outlet of an electronic component.

A property whose data type is defined by a feature_class captures that some aspect of an item is defined by an instance of the feature_class.

EXPRESS specification:

*) ENTITY feature_class SUBTYPE OF(item_class); WHERE WR1: NOT(('ISO13584_IEC61360_DICTIONARY_SCHEMA.' + 'COMPONENT_CLASS') IN TYPEOF(SELF)); WR2: NOT(('ISO13584_IEC61360_DICTIONARY_SCHEMA.'

155 CWA 15556-2:2006 (E)

+ 'MATERIAL_CLASS') IN TYPEOF(SELF)); END_ENTITY; -- feature_class (*

Formal propositions:

WR1: a feature_class shall not be a component_class.

WR2: a feature_class shall not be a material_class.

DA-20 ISO13584_extended_dictionary_schema entity definitions: a priori semantic relationship

An a_priori_semantic_relationship is a kind of class that is defined on the basis of other classes, and that can import properties, data types, tables and documents contained in these classes. The properties, data types, tables or documents whose definitions are imported through the a_priori_semantic_relationship entity became applicable to the class that imports them, but not visible for this class. This means that they are not considered as visible by the visible_properties function.

NOTE 1 The inheritance relationship is a well known example of semantic relationship between classes modelled according to the object oriented paradigm. All the properties and other features defined in a class usually apply implicitly to all its subclasses. This relationship is used in ISO 13584 where all the properties, data types, tables or documents visible (respectively applicable) to some classes are implicitly visible (respectively applicable) to all its subclasses. As usual, in ISO 13584 this inheritance is implicit (i.e., not declared by means of an a_priori_semantic_relationship) and global (i.e., all the properties and data types are inherited by all its subclasses). An a_priori_semantic_relationship enables to define other semantic relationships that are particular to the parts library application domain.

NOTE 2 In ISO 13584, besides the usual inheritance (is-a) and aggregation (is-part-of) relationships, two additional semantic relationship are defined: is-view-of and is-case-of (see clause 3). These two relationships are captured by means of the a_priori_semantic_relationship entity.

NOTE 3 The properties, data types, tables or documents whose definitions are imported through the a_priori_semantic_relationship entity are explicitly defined. They may consist of a subset of all the properties, data types, tables or documents defined (i.e., visible or applicable) for the referenced_classes class(es).

NOTE 4 The properties, data types, tables or documents whose definitions are imported through the a_priori_semantic_relationship entity will be visible or already imported through another a_priori_semantic_relationship for the referenced_classes class(es). This is asserted by a global rule of the ISO13584_extended_dictionary_schema.

EXPRESS specification:

*) ENTITY a_priori_semantic_relationship ABSTRACT SUPERTYPE OF(ONEOF( item_class_case_of, fm_class_view_of, functional_model_class)) SUBTYPE OF(class); referenced_classes: SET [1:?] OF class_BSU; referenced_properties: LIST [0:?] OF property_BSU; referenced_data_types: SET [0:?] OF data_type_BSU; referenced_tables: SET [0:?] OF table_BSU; referenced_documents: SET [0:?] OF document_BSU; END_ENTITY; -- a_priori_semantic_relationship

156 CWA 15556-2:2006 (E)

(*

Attribute definitions: referenced_classes: the class(es) from where the properties, data types, tables or documents are imported.

NOTE 5 The class from which properties, data types, tables or documents are imported cannot be deduced from the identification of the imported properties, data types, tables or documents because they may be imported from a class where they are inherited. For instance, in IEC 61360-4, "input-voltage" is a property visible at the root level of the IEC classification. If a supplier class imports the "input-voltage" property from the IEC "transistor" class, this means that (1) the supplier class defines a transistor, and (2) these transistors are described by means of an "input voltage" property. referenced_properties: the properties whose definitions are imported through the a_priori_semantic_relationship entity.

NOTE 6 The list order defines the default order for displaying imported properties during user access to the various subtypes of a_priori_semantic_relationship. referenced_data_types: the data types whose definitions are imported through the a_priori_semantic_relationship entity. referenced_tables: the tables whose definitions are imported through the a_priori_semantic_relationship entity. referenced_documents: the documents whose definitions are imported through the a_priori_semantic_relationship entity.

DA-21 ISO13584_extended_dictionary_schema entity definitions: functional model class

An abstract_functional_model_class entity, is the supertype of the various kinds of functional model classes. A functional model classes describe a set of representations that may be associated with a set of items.

NOTE 1 The items to which representations may be associated need not to be specified in a functional model class.

EXAMPLE 1 Prices and simulation models are examples of representations that are usually associated with a set of items. EXAMPLE 2 A schematic representation of a screw is a representation that may defined independently of any screw. The representation category provided by a functional model class is specified by the functional view that is referenced, and, in the case of an instantiable functional view class, that may be created by the functional model class.

EXAMPLE 3 Geometry view and schematic view are categories of representation that may be created in product data by a functional model class, for instance through a geometric application programming interface.

The levels of representation provided are specified by the view_control_variable_range.

EXAMPLE 4 The level of representation of a geometry view could be the detail-level of the view: simplified to extended.

NOTE 2 The standard functional views that may be created by an ISO 13584 conforming library are specified in the view exchange protocol series of parts of ISO 13584. Non standard functional views may also be defined by private agreement between the sender and the receiver. The definitions of such non

157 CWA 15556-2:2006 (E)

standard functional view classes may be exchanged using the library integrated information model LIIM 24-3 defined in clause 18 of this part of ISO 13584.

The distinction established for general model classes between parts characteristics, context parameters and context-dependent characteristics are no longer significant for functional model classes. The shape representation of the end of a threaded hole, for example, may be considered either as an intrinsic characteristics, or as a context-dependent characteristics, depending upon the level of detail required of the representation. Therefore, all the properties defined within a functional model class, whether they are intended to play a role of a context parameter, a characteristics of the representation or a variable internal to the methods, shall be defined as representation_P_DETs. These properties are specified by the SELF\class.described_by inherited attribute.

An abstract functional model class may be associated with an item class in two different ways. a) The first way, captured as a functional_model_class entity, is to describe the functional model class without referring to any item class. The association between this functional model class and an item class is possibly done afterwards, either by the supplier or by the end-user. It is called the a posteriori schema. In this approach, the properties (defined by the described_by inherited attribute), that are intended to match properties defined in the item classes are defined as representation_P_DETs. According to their role with respect to some item class, they will be matched with condition_DET, non_dependent_P_DET, dependent_P_DET in the target item classes.

EXAMPLE 5 The geometry of an H-screw may be described without referring explicitly to any specific component class. The same geometry applies to some ISO standard component classes, to some DIN standard component classes, or to various supplier component classes. The relationship between such a functional model class and one specific component class may be specified outside the functional model class either by the supplier (see: a_posteriori_view_of entity) or by the end-user. In both cases, when such a relationship between two classes is specified, the mapping from the component properties onto the representation properties shall be specified. For example, one property of this functional model class defined as representation_P_DET would correspond to the threaded diameter. It would be matched with a non_dependent_P_DET of the component class.

b) The second way, captured as a fm_class_view_of entity, is to directly define the functional model class by reference to the properties defined in some item class. It is called the a priori schema. In this case the properties that describe the functional model class consist of both the properties defined by the described_by inherited attribute and the properties imported from the item class (imported_properties_from_item).

EXAMPLE 6 Consider the functional model of supplying. It describes the price, quantity of order and so on, of some well defined component class. It does not apply to any other component class, and it is useless without this component class. When describing this functional model class, the library data supplier directly refers to the component class the functional model class is-view-of. This allows the direct reference (through their property_BSUs) to the properties defined within this component class.

A functional model class is always involved in an a_priori_semantic_relationship with the functional view class that specifies the user perspective addressed by the functional model class, and, in the case of an instanciable functional view class, the created representations. In the a priori schema, it is also involved in an a_priori_semantic_relationship with the item class to which it refers.

EXAMPLE 7 Procurement and design are user perspectives that may be associated to a functional view class.

DA-21.1 Abstract_functional_model_class

An abstract_functional_model_class entity captures the dictionary definition of a functional model class, whether its relationship with an item_class is part of its definition, or is intended to be defined afterwards. An abstract_functional_model_class may reference other functional model classes by its case_of attribute.

158 CWA 15556-2:2006 (E)

EXPRESS specification:

*) ENTITY abstract_functional_model_class ABSTRACT SUPERTYPE OF(ONEOF(functional_model_class, fm_class_view_of)) SUBTYPE OF(class); created_view: class_BSU; v_c_v_range: SET [0:?] OF view_control_variable_range; imported_properties_from_view: LIST [0:?] OF property_BSU; imported_types_from_view: SET [0:?] OF data_type_BSU; imported_tables_from_view: SET [0:?] OF table_BSU; imported_documents_from_view: SET [0:?] OF document_BSU; case_of: SET [0:?] OF class_BSU; imported_properties_from_models: LIST [0:?] OF property_BSU; imported_types_from_models: SET [0:?] OF data_type_BSU; imported_tables_from_models: SET [0:?] OF table_BSU; imported_documents_from_models: SET [0:?] OF document_BSU; WHERE WR1: created_view_is_functional_view(SELF.created_view); WR2: QUERY(v_c_v <* SELF.v_c_v_range | NOT applicable_properties(SELF.created_view, [v_c_v.parameter_type])) = []; WR3: QUERY(v_c_v <* SELF.v_c_v_range | NOT(v_c_v.parameter_type IN SELF.imported_properties_from_view)) = []; WR4: NOT EXISTS(SELF\class.its_superclass) OR ('ISO13584_EXTENDED_DICTIONARY_SCHEMA' +'.ABSTRACT_FUNCTIONAL_MODEL_CLASS' IN TYPEOF(SELF\class.its_superclass)); WR5: QUERY(v_c_v <* SELF.v_c_v_range | SIZEOF(QUERY(v_c_v_2 <* SELF.v_c_v_range | v_c_v.parameter_type = v_c_v_2.parameter_type)) <> 1) = []; WR6: QUERY(prop <* SELF\class.described_by | definition_available_implies(prop, ('ISO13584_EXTENDED_DICTIONARY_SCHEMA' +'.REPRESENTATION_P_DET') IN TYPEOF(prop.definition[1]))) = SELF\class.described_by; WR7: QUERY(cl <* SELF.case_of | definition_available_implies(cl, ('ISO13584_EXTENDED_DICTIONARY_SCHEMA' +'.ABSTRACT_FUNCTIONAL_MODEL_CLASS') IN TYPEOF(cl.definition[1]))) = SELF.case_of; END_ENTITY; -- abstract_functional_model_class (*

Attribute definitions: created_view: the functional_view_class that characterises the user perspective addressed by the functional model class, and, in the case of an instanciable functional view class, the views that may be generated by the functional_model_class.

159 CWA 15556-2:2006 (E)

v_c_v_range: the list of the view control variable range that specifies the various views the functional_model_class is able to create.

NOTE 1 When a view control variable of the functional view defined by the created_view attribute is not represented in the v_c_v_range attribute, its range is its complete value domain.

NOTE 2 The declared_created_views_are_created_rule and all_views_available_for_each_component_rule rules defined in clause 12 ensures that the set of functional views that may be created either by a functional_model_class_extension or by an explicit_functional_model_class_extension includes the set of functional views that its corresponding functional_model_class declares to be able to create by means of its created_view and v_c_v_range inherited attributes.

NOTE 3 The all_views_available_for_each_component_rule rule defined in clause 12 ensures that the set of functional views that may be created by an explicit_functional_model_class_extension includes the set of functional views that its corresponding functional_model_class declares to be able to create.

imported_properties_from_view: the list of properties that are imported from the described view.

imported_types_from_view: the list of types that are imported from the described view.

imported_tables_from_view: the set of tables that are imported from the described view.

imported_documents_from_view: the set of documents that are imported from the described view.

case_of: the other abstract_functional_model_classes the current abstract_functional_model_class is case_of. imported_properties_from_models: the list of properties that are imported from the case_of abstract_functional_model_classes. imported_types_from_models: the list of types that are imported from the case_of abstract_functional_model_classes.

imported_tables_from_models: the set of tables that are imported from the described case_of abstract_functional_model_classes.

imported_documents_from_models: the set of documents that are imported from the case_of abstract_functional_model_classes.

Formal propositions:

WR1: the attribute created_view shall correspond to a functional view class.

WR2: each view control variable shall correspond to a view control variable of the functional view that is referenced by the created_view attribute.

WR3: each view control variable shall belong to the list of imported properties contained in the imported_properties_from_view.

WR4: either the class has no superclass, or the superclass shall be of abstract_functional_model_class entity data type.

WR5: each view control variable contained in the attribute v_c_v_range shall be unique.

WR6: if data are available, then IP1 holds.

WR7: the class referenced through the case_of attribute shall correspond to functional model classes.

160 CWA 15556-2:2006 (E)

Informal propositions:

IP1: all the properties that are defined in the functional model class shall be defined as representation_P_DET.

DA-21.2 Functional_model_class

A functional_model_class entity captures the dictionary definition of a functional model class that is described without referring to any item_class.

NOTE The association between a functional_model_class and an item_class is intended to be done afterwards, either by the supplier or by the end-user.

EXPRESS specification:

*) ENTITY functional_model_class SUBTYPE OF(a_priori_semantic_relationship, abstract_functional_model_class); DERIVE SELF\a_priori_semantic_relationship.referenced_classes: SET [1:?] OF class_BSU := [SELF\abstract_functional_model_class.created_view] + SELF\abstract_functional_model_class.case_of; SELF\a_priori_semantic_relationship.referenced_properties: LIST [0:?] OF property_BSU := SELF\abstract_functional_model_class .imported_properties_from_view + SELF\abstract_functional_model_class .imported_properties_from_models; SELF\a_priori_semantic_relationship.referenced_data_types: SET [0:?] OF data_type_BSU := SELF\abstract_functional_model_class .imported_types_from_view + SELF\abstract_functional_model_class .imported_types_from_models; SELF\a_priori_semantic_relationship.referenced_tables: SET [0:?] OF table_BSU := SELF\abstract_functional_model_class .imported_tables_from_view + SELF\abstract_functional_model_class .imported_tables_from_models; SELF\a_priori_semantic_relationship.referenced_documents: SET [0:?] OF document_BSU := SELF\abstract_functional_model_class .imported_documents_from_view + SELF\abstract_functional_model_class .imported_documents_from_models; END_ENTITY; -- functional_model_class (*

DA-21.3 Fm_class_view_of

A fm_class_view_of entity captures the dictionary definition of a functional model class that is defined by reference to an item_class to which it applies.

161 CWA 15556-2:2006 (E)

NOTE This kind of association between a functional_model_class and an item_class is an a priori semantic relationship. The functional_model_class may import properties, data types, tables and documents from this item_class.

EXPRESS specification:

*) ENTITY fm_class_view_of SUBTYPE OF(a_priori_semantic_relationship, abstract_functional_model_class); view_of: class_BSU; imported_properties_from_item: LIST [0:?] OF property_BSU; imported_types_from_item: SET [0:?] OF data_type_BSU; imported_tables_from_item: SET [0:?] OF table_BSU; imported_documents_from_item: SET [0:?] OF document_BSU; DERIVE SELF\a_priori_semantic_relationship.referenced_classes: SET [2:2] OF class_BSU := [SELF\abstract_functional_model_class.created_view, SELF.view_of] + SELF\abstract_functional_model_class.case_of; SELF\a_priori_semantic_relationship.referenced_properties: LIST [0:?] OF property_BSU := SELF\abstract_functional_model_class .imported_properties_from_view + SELF\abstract_functional_model_class .imported_properties_from_models + SELF.imported_properties_from_item; SELF\a_priori_semantic_relationship.referenced_data_types: SET [0:?] OF data_type_BSU := SELF\abstract_functional_model_class .imported_types_from_view + SELF\abstract_functional_model_class .imported_types_from_models + SELF.imported_types_from_item; SELF\a_priori_semantic_relationship.referenced_tables: SET [0:?] OF table_BSU := SELF\abstract_functional_model_class .imported_tables_from_view + SELF\abstract_functional_model_class .imported_tables_from_models + SELF.imported_tables_from_item; SELF\a_priori_semantic_relationship.referenced_documents: SET [0:?] OF document_BSU := SELF\abstract_functional_model_class .imported_documents_from_view + SELF\abstract_functional_model_class .imported_documents_from_models + SELF.imported_documents_from_item; WHERE WR1: check_view_of_instance_datatype(SELF); END_ENTITY; -- fm_class_view_of (*

162 CWA 15556-2:2006 (E)

Attribute definitions: view_of: the item_class of which the described functional_model_class is able to generate view. imported_properties_from_item: the properties that are imported from the item_class for which the present class is able to generate the view. imported_types_from_item: the types that are imported from the item_class for which the present class is able to generate the view. imported_tables_from_item: the tables that are imported from the item_class for which the present class is able to generate the view. imported_documents_from_item: the documents that are imported from the item_class for which the present class is able to generate the view.

Formal propositions:

WR1: the view_of attribute shall refer to an item_class.

DA-22 ISO13584_extended_dictionary_schema entity definitions: functional view class

A functional view class specifies one representation category that may be represented in a dictionary and/or generated by a library by means of functional model classes associated with item classes.

EXAMPLE 1 Such representation categories may be geometry, kinematics, or procurement.

If a functional view class is instantiable in a user modelling system, this functional view class shall defines the structure of the representation category it specifies in a modelling system whatever item it refers to.

EXAMPLE 2 Geometry, kinematics and schematics are representation categories.

This is done by referencing an ISO 10303-43 representation. The view_control_variables precise the representation category. Their values are to be provided by the user to specify which precise representation is required. The view_properties define the content of the view. Their values shall be computed by the user library management system. Both kinds of property shall be represented as representation_P_DETs.

A functional_view_class is a subtype of ISO 10303-43 representation. Therefore, each functional view class instance contains implicitly both a representation_context and a set of representation_items referred to by the items inherited attributes. When a functional view class is a subtype of a subtype of ISO 10303-43 representation, this latter subtype is specified, in the same format as the result of the EXPRESS TYPEOF function, by the representation_type attribute of the functional_view_class instance that represents the functional view class.

EXAMPLE 3 One specific class of functional view of geometry may be specified by a set of view control variables and by one view property, called insertion_placements, that is a SET of placements: simple placement, axis1_placement, and/or axis2_placement intended to be computed by functional model classes and to play a specific role in the representation. As a subtype of representation it also contains a representation_context and a set of geometric_representation_items (see ISO 10303-42 for details) referred to by the items attributes.

A functional view class that is not instantiable in a user modelling system shall not contain any view property. Functional model classes referring to such a functional view class only contains data intended to be used during the user selection process. Such a functional view class allows the specification of which user perspective these data are intended to be used.

163 CWA 15556-2:2006 (E)

EXAMPLE 4 Inventory management and procurement may be functional views that are not intended to be instanciated.

DA-22.1 Functional_view_class

A functional_view_class entity is a subtype of a class entity. The content of an instance of a functional view class is a subtype of an ISO 10303-43 representation. Therefore, it contains two inherited attributes:

— a context_of_items attribute that contains the representation_context that defines the context of the representation elements that constitute the view;

— an items attribute that contains the set of representation_items belonging to the content of the view.

When the content of an instance of a functional view class shall be of a particular subtype of representation, this subtype may be defined through the representation_type attribute, which contains its fully qualified name.

A functional_view_class may also contain view_control_variables which allow to distinguish several representations of the same item in the same representation category, and view_properties defining properties that shall be contained in any instance of the functional view class.

EXAMPLE ISO 13584-101 defines the basic_geometry functional view class that captures the generic concept of the shape of a part. Instances of this functional view class are instances of STEP representation. Five view control variables provide for specifying precisely the various basic_geometry representations that may be associated with a library item: 'geometry_level', 'detail_level', 'side', 'variant' and 'unreg_variant'. ISO 13584-101 also specify how to exchange functional model classes that contains FORTRAN parametric programs able to create basic_geometry representations. NOTE 1 The standardised functional view classes are defined by the view exchange protocol series of parts of ISO 13584. Each view exchange protocol specifies the standard data that represents the functional view class, the view_control_variables, and view_properties of the view, and how to exchange functional model classes able to create instances of the the functional view class.

EXPRESS specification:

*) ENTITY functional_view_class SUPERTYPE OF(non_instantiable_functional_view_class) SUBTYPE OF(class); representation_type: OPTIONAL STRING; view_control_variables: LIST [0:?] OF UNIQUE property_BSU; view_properties: LIST [0:?] OF UNIQUE property_BSU; DERIVE SELF\class.described_by: LIST [0:?] OF UNIQUE property_BSU := SELF.view_control_variables + SELF.view_properties; WHERE WR1: QUERY(v_c_v <* SELF.view_control_variables | NOT((data_type_typeof(v_c_v) = []) OR (('ISO13584_IEC61360_DICTIONARY_SCHEMA' + '.NON_QUANTITATIVE_INT_TYPE' IN data_type_typeof(v_c_v)) AND ordered_index_value( data_type_non_quantitative_int_type(v_c_v)[1].domain)))) = []; WR2: NOT EXISTS(SELF.representation_type)

164 CWA 15556-2:2006 (E)

OR ('_SCHEMA.' LIKE SELF.representation_type); WR3: NOT EXISTS(SELF\class.its_superclass) OR (('ISO13584_EXTENDED_DICTIONARY_SCHEMA.' + 'FUNCTIONAL_VIEW_CLASS') IN TYPEOF(SELF\class.its_superclass)); WR4: QUERY(prop <* SELF\class.described_by | definition_available_implies(prop, ('ISO13584_EXTENDED_DICTIONARY_SCHEMA' +'.REPRESENTATION_P_DET') IN TYPEOF(prop.definition[1]))) = SELF\class.described_by; END_ENTITY; -- functional_view_class (*

Attribute definitions: representation_type: the specification, in the format of a STRING, of the ISO 10303 representation subtype the functional view content is a subtype of. view_control_variable: the list of properties that are view control variables of the functional view class. view_properties: the list of properties that are contained in the view. described_by: the whole set of properties of a functional view class. It is a list that contains the view_control_variable list and the view_properties list.

Formal propositions:

WR1: the parameter_type attribute of all the view control variables shall be a non_quantitative_int_type whose values are successive integers.

WR2: the representation_type shall contains the string "_SCHEMA.".

NOTE 2 The representation_type conatins a string corresponding to an EXPRESS fully qualified name.

WR3: either the class has no superclass, or if it has, the superclass shall be a functional_view_class.

WR4: if data are available, then IP1 holds.

Informal propositions:

IP1: all the properties that are defined in the functional view class shall be defined as representation_P_DET.

IP2: the representation_type shall contain the fully qualified name, in the same format as the EXPRESS TYPEOF function, of a subtype of ISO 10303-43 representation.

DA-22.2 Non_instantiable_functional_view_class

A non_instantiable_functional_view_class specifies a perspective that may be adopted by the user in a part selection process. No instances of such views shall be created in the user modelling system.

165 CWA 15556-2:2006 (E)

EXPRESS specification:

*) ENTITY non_instantiable_functional_view_class SUBTYPE OF(functional_view_class); DERIVE SELF\functional_view_class.view_properties : LIST [0:?] OF UNIQUE property_BSU := []; WHERE WR1: NOT EXISTS(SELF\functional_view_class.representation_type); END_ENTITY; -- non_instantiable_functional_view_class (*

Attribute definitions:

SELF\functional_view_class.view_properties: a non_instantiable_functional_view_class is not associated with any view properties.

Formal propositions:

WR1: the representation_type shall not exist.

DA-22.3 Specification of the range of a view control variable

A view_control_variable_range specifies a subset of the domain of a view control variable as a range defined by its low bound and its high bound. This range includes its bounds.

NOTE 1 The domain of a view control variable, represented by a non_quantitative_int_type entity, is an enumeration type where elements of the enumeration are represented as a set of successive integers. The range consists of all the values whose associated integers are greater or equal to the integer defined as the range low bound and less or equal to the integer defined as the range high bound.

NOTE 2 non_quantitative_int_type is defined in the ISO13584_IEC61360_dictionary_schema specified in IEC 61360-2, and duplicated for convenience in informative annex D of ISO 13584-42. WR1 rule, in the definition of the functional_view_class entity as specified in 11.21.1, ensures that the integers associated with the view control variable values constitutes as a set of successive integers.

EXPRESS specification:

*) ENTITY view_control_variable_range; parameter_type: property_BSU; range_lobound: INTEGER; range_hibound: INTEGER; WHERE WR1: (data_type_typeof(SELF.parameter_type) = []) OR ('ISO13584_IEC61360_DICTIONARY_SCHEMA' + '.NON_QUANTITATIVE_INT_TYPE' IN data_type_typeof(SELF.parameter_type)); WR2: SELF.range_lobound <= SELF.range_hibound; WR3: view_control_variables_attributes_belong_to_domain(SELF); END_ENTITY; -- view_control_variable_range (*

166 CWA 15556-2:2006 (E)

Attribute definitions: parameter_type: the view control variable for which the range is described. range_lobound: the integer that describes the low bound of the range. range_hibound: the integer that describes the high bound of the range.

Formal propositions:

WR1: the parameter_type attribute shall be a non_quantitative_int_type.

WR2: the low bound of the range shall be less or equal to the high bound of the range.

WR3: the attributes range_lobound and range_hibound shall belong to the domain of a view control variable.

DA-23 ISO13584_extended_dictionary_schema entity definitions: item class a priori case of

DA-23.1 Item_class_case_of

An item_class_case_of is the description of an item class that is defined as a is-case-of of some other item class(es).

NOTE An item_class_case_of defines an a priori relationship.

EXPRESS specification:

*) ENTITY item_class_case_of SUPERTYPE OF(ONEOF(component_class_case_of, material_class_case_of, feature_class_case_of)) SUBTYPE OF(item_class, a_priori_semantic_relationship); is_case_of: SET [1:?] OF class_BSU; imported_properties: LIST [0:?] OF property_BSU; imported_types: SET [0:?]OF data_type_BSU; imported_tables: SET [0:?] OF table_BSU; imported_documents: SET [0:?] OF document_BSU; DERIVE SELF\a_priori_semantic_relationship.referenced_classes: SET [1:?] OF class_BSU := SELF.is_case_of; SELF\a_priori_semantic_relationship.referenced_properties: LIST [0:?] OF property_BSU := SELF.imported_properties; SELF\a_priori_semantic_relationship.referenced_data_types: SET [0:?] OF data_type_BSU := SELF.imported_types; SELF\a_priori_semantic_relationship.referenced_tables: SET [0:?] OF table_BSU := SELF.imported_tables; SELF\a_priori_semantic_relationship.referenced_documents: SET [0:?] OF document_BSU := SELF.imported_documents; WHERE WR1: superclass_of_item_is_item(SELF);

167 CWA 15556-2:2006 (E)

WR2: check_is_case_of_referenced_classes_definition(SELF); END_ENTITY; -- item_class_case_of (*

Attribute definitions: is_case_of: the item_class(es) of which the present item_class is-case-of. imported_properties: the list of properties that are imported from the item_class(es) the defined item_class is-case-of. imported_types: the set of data types that are imported from the item_class(es) the defined item_class is-case-of.

Imported_tables: the set of table_BSUs that are imported from the item_class(es) the defined item_class is-case-of.

Imported_documents: the set of document_BSUs that are imported from the item_class(es) the defined item_class is-case-of.

Formal propositions:

WR1: the superclass of an item_class_case_of shall be an item_class.

WR2: an item_class_case_of shall be case-of item_class(es).

DA-23.2 Component_class_case_of

A component_class_case_of is the description of a component class that is defined as a case of other component class(es).

NOTE A component_class_case_of defines an a priori relationship.

EXPRESS specification:

*) ENTITY component_class_case_of SUBTYPE OF(item_class_case_of, component_class); WHERE WR1: check_is_case_of_referenced_classes_definition(SELF); END_ENTITY; -- component_class_case_of (*

Formal propositions:

WR1: a component_class_case_of shall be is-case-of component_class(es).

DA-23.3 Material_class_case_of

A material_class_case_of is the description of a material class that is defined as a case of other material class(es).

NOTE A material_class_case_of defines an a priori relationship.

168 CWA 15556-2:2006 (E)

EXPRESS specification:

*) ENTITY material_class_case_of SUBTYPE OF(item_class_case_of, material_class); WHERE WR1: check_is_case_of_referenced_classes_definition(SELF); END_ENTITY; -- material_class_case_of (*

Formal propositions:

WR1: a material_class_case_of shall be is-case-of material_class(es).

DA-23.4 Feature_class_case_of

A feature_class_case_of is the description of a feature class that is defined as a case of other feature class(es).

NOTE A feature_class_case_of defines an a priori relationship.

EXPRESS specification:

*) ENTITY feature_class_case_of SUBTYPE OF(item_class_case_of, feature_class); WHERE WR1: check_is_case_of_referenced_classes_definition(SELF); END_ENTITY; -- feature_class_case_of (*

Formal propositions:

WR1: a feature_class_case_of shall be is-case-of feature_class(es).

DA-24 ISO13584_extended_dictionary_schema entity definitions: a posteriori semantic relationships

In an a posteriori definition of semantic relationships between classes, each class defines all its properties. Therefore, it is self sufficient even if the referenced class is not available.

This mechanism also allows suppliers or end-users to define their own semantic relationships.

DA-24.1 A_posteriori_semantic_relationship

An a_posteriori_semantic_relationship is a relationship between two classes.

EXPRESS specification:

*) ENTITY a_posteriori_semantic_relationship ABSTRACT SUPERTYPE OF(ONEOF(a_posteriori_case_of, a_posteriori_view_of));

169 CWA 15556-2:2006 (E)

END_ENTITY; -- a_posteriori_semantic_relationship (*

DA-24.2 A_posteriori_case_of

An a_posteriori_case_of specifies a is-case-of relationship between two classes.

EXPRESS specification:

*) ENTITY a_posteriori_case_of SUBTYPE OF(a_posteriori_semantic_relationship); source: class_BSU; is_case_of: class_BSU; corresponding_properties: SET [0:?] OF LIST [2:2] OF property_BSU; WHERE WR1: definition_available_implies(SELF.source, ('ISO13584_IEC61360_DICTIONARY_SCHEMA.ITEM_CLASS' IN TYPEOF(SELF.source.definition[1])) OR (('ISO13584_EXTENDED_DICTIONARY_SCHEMA' + '.ABSTRACT_FUNCTIONAL_MODEL_CLASS') IN TYPEOF(SELF.source.definition[1]))); WR2: definition_available_implies(SELF.source, (('ISO13584_IEC61360_DICTIONARY_SCHEMA.ITEM_CLASS' IN TYPEOF(SELF.source.definition[1])) AND (definition_available_implies(SELF.is_case_of, ('ISO13584_IEC61360_DICTIONARY_SCHEMA.ITEM_CLASS' IN TYPEOF(SELF.source.definition[1]))))) OR (('ISO13584_EXTENDED_DICTIONARY_SCHEMA' + '.ABSTRACT_FUNCTIONAL_MODEL_CLASS' IN TYPEOF(SELF.source.definition[1])) AND (definition_available_implies(SELF.is_case_of, ('ISO13584_EXTENDED_DICTIONARY_SCHEMA' + '.ABSTRACT_FUNCTIONAL_MODEL_CLASS' IN TYPEOF(SELF.source.definition[1])))))); WR3: QUERY(couple <* SELF.corresponding_properties | NOT compatible_types(couple[1], couple[2])) = []; WR4: QUERY(couple <* SELF.corresponding_properties | (NOT applicable_properties(SELF.source,[couple[1]]) OR NOT applicable_properties(SELF.is_case_of,[couple [2]]))) = []; END_ENTITY; -- a_posteriori_case_of (*

Attribute definitions: source: the class that is is-case-of of the is_case_of attribute. is_case_of: the class to which the source attribute is is-case-of. corresponding_properties: the set of pairs of properties that correspond to each other in the is-case- of relationship, the first property of each pair belonging to the source class and the second to the is_case_of class.

170 CWA 15556-2:2006 (E)

Formal propositions:

WR1: if data are available, then IP1 holds.

WR2: if data are available, then IP2 holds.

WR3: all the corresponding properties of the list of corresponding_properties shall be type compatible.

WR4: each property involved in each pair of the corresponding_properties list shall be applicable properties for one of the two class involved in the relationship.

Informal propositions:

IP1: the source attribute shall refer either to an item_class or to an abstract_functioinal_model_class.

IP2: the source and is_case_of attribute shall either be both item_classes or be both abstract_functional_model_classes.

DA-24.3 A_posteriori_view_of

An a_posteriori_view_of entity is a relationship between a functional model class and an item class.

EXPRESS specification:

*) ENTITY a_posteriori_view_of SUBTYPE OF(a_posteriori_semantic_relationship); functional_model: class_BSU; is_view_of: class_BSU; corresponding_properties: SET [0:?] OF LIST [2:2] OF property_BSU; WHERE WR1: definition_available_implies(SELF.functional_model, ('ISO13584_EXTENDED_DICTIONARY_SCHEMA' +'.FUNCTIONAL_MODEL_CLASS' IN TYPEOF( SELF.functional_model.definition[1]))); WR2: definition_available_implies(SELF.is_view_of, ('ISO13584_IEC61360_DICTIONARY_SCHEMA.ITEM_CLASS' IN TYPEOF(SELF.is_view_of.definition[1]))); WR3: QUERY(couple <* SELF.corresponding_properties | NOT compatible_types(couple [1], couple [2])) = []; WR4: QUERY(couple <* SELF.corresponding_properties | (NOT applicable_properties( SELF.functional_model,[couple[1]]) OR NOT applicable_properties(SELF.is_view_of,[couple [2]]))) = []; END_ENTITY; -- a_posteriori_view_of (*

Attribute definitions: functional_model: the functional model class that is is-view-of of the is_view_of class. is_view_of: the item_class for which the functional_model class is is-view-of.

171 CWA 15556-2:2006 (E)

corresponding_properties: a set of pairs of properties belonging respectively to the functional_model class and to the is-view-of item_class class.

Formal propositions:

WR1: if data are available, then IP1 holds.

WR2: if data are available, then IP2 holds.

WR3: all the corresponding properties of the list of corresponding_properties shall be type compatible.

WR4: the properties defined in each pair of the corresponding_properties list shall be applicable properties for their corresponding class.

Informal propositions:

IP1: the functional_model attribute shall refer to a functional_model_class.

IP2: the is_view_of attribute shall refer to an item_class.

DA-25 ISO13584_extended_dictionary_schema entity definitions: table contents

DA-25.1 Table_content

A table_content entity is the table_extension of a table associated with a class in an ISO 13584-conformant dictionary. The columns that constitute the content of the table_content shall be type-compatible with the self_property_semantics that define the meaning of these columns.

A table_content inherits a revision_of_content attribute, that specifies the revision number of the set of values contained in the table, and a content_revision_date attribute that specifies at what time this set of values has been defined by the supplier. A revision shall neither change the set of key values in the table, nor change the list of columns. It may only change values of non-key columns.

NOTE A table_BSU has also a version number that characterises the set of key values contained in the table and the list of columns that constitute its content.

EXPRESS specification:

*) ENTITY table_content SUBTYPE OF(content_item, table_extension); SELF\content_item.dictionary_definition: table_BSU; DERIVE SELF\table_extension.table_identifier: table_bsu := SELF\content_item.dictionary_definition; WHERE WR1: definition_available_implies( SELF\content_item.dictionary_definition, 'ISO13584_EXTENDED_DICTIONARY_SCHEMA.TABLE_ELEMENT' IN TYPEOF(SELF\content_item.dictionary_definition. definition[1])); WR2: compatible_content_and_specification(SELF); END_ENTITY; -- table_content 172 CWA 15556-2:2006 (E)

(*

Attribute definitions: dictionary_definition: inherited attribute specialised so as to refer to the table for which the current entity describes the content.

Formal propositions:

WR1: if data are available, then IP1 holds.

WR2: the number of columns is correct with respect to the table table_element description, and the types and values of each column are compatible and correspond to the type defined in the data_type specification of the corresponding property_semantics.

Informal propositions:

IP1: the dictionary_element related to the identified_by attribute is a table_element.

IP2: all the revisions that correspond to the same table_BSU version have the same set of key values and the same content LIST. The only possible change from revision to revision is correcting typos in values or providing more accurate values

NOTE 1 This informal proposition only specifies the allowed changes from revision to revision. However it is up to the supplier, when making such a change, to decide whether it is a revision that does not affect the table_BSU identifier of the table or whether it is a new version of the table that changes its identification version number.

NOTE 2 This informal proposition states that when updating a dictionary, an old revision may be replaced by a new one without any consequence on the functional behavioir of the integrated library.

DA-25.2 RDB_table_content

A RDB_table_content is a structure that restricts a table_content to tables that are relational database compatible.

EXPRESS specification:

*) ENTITY RDB_table_content SUBTYPE OF(table_content, RDB_table_extension); WHERE WR1: definition_available_implies( SELF\content_item.dictionary_definition, 'ISO13584_EXTENDED_DICTIONARY_SCHEMA.RDB_TABLE_ELEMENT' IN TYPEOF(SELF\content_item.dictionary_definition. definition[1])); END_ENTITY; -- RDB_table_content (*

Formal propositions:

WR1: if data are available, then IP1 holds.

173 CWA 15556-2:2006 (E)

Informal propositions:

IP1: the dictionary_element related to the identified_by attribute is a RDB_table_element.

IP2: all the revisions that correspond to the same table_BSU version have the same set of key values and the same rdb_class_extension content LIST. The only possible change from revision to revision is changing non-key values.

DA-26 ISO13584_extended_dictionary_schema: RULE definitions

This section presents the different EXPRESS rules that are used in this part of the ISO 13584 standard. These rules are related to:

— the dictionary element that describes a property defined in a model class,

— the declaration of a property in a class,

— the declaration of a type in a class,

— the usage of the named types,

— the program libraries that are associated with suppliers,

— the documents and tables that are associated with classes,

— the properties, data types, documents and tables that are imported by means of a semantic relationship,

— the levels that are used in the view control variables.

DA-26.1 Representation_properties_for_model_and_view_rule rule

The representation_property_for_model_and_view_rule rule states that a property defined in a functional_model_class or a functional_view_class shall be described as a representation_P_DET. Only an item_class may describe properties as condition_DET, dependent_P_DET or non_dependent_P_DET.

EXPRESS specification:

*) RULE representation_properties_for_model_and_view_rule FOR(property_DET); WHERE WR1: QUERY(prop <* property_DET | (SIZEOF(prop.identified_by.name_scope.definition) = 1) AND (('ISO13584_EXTENDED_DICTIONARY_SCHEMA' +'.FUNCTIONAL_MODEL_CLASS' IN TYPEOF( prop.identified_by.name_scope.definition)) OR ('ISO13584_EXTENDED_DICTIONARY_SCHEMA' +'.FUNCTIONAL_VIEW_CLASS' IN TYPEOF( prop.identified_by.name_scope.definition))) AND NOT('ISO13584_EXTENDED_DICTIONARY_SCHEMA' +'.REPRESENTATION_P_DET' IN TYPEOF(prop)) ) = []; END_RULE; -- representation_properties_for_model_and_view_rule (*

174 CWA 15556-2:2006 (E)

Formal propositions:

WR1: a property defined in a functional_model_class or a functional_view_class shall be described as a representation_P_DET.

DA-26.2 Allowed_named_type_usage_rule rule

The allowed_named_type_usage_rule rule is related to the usage of a named type. It states that only types that are applicable to a class may be used to specify the domain of the properties declared by a class, through its described_by attribute.

EXPRESS specification:

*) RULE allowed_named_type_usage_rule FOR(class); LOCAL named_type_usage_allowed: LOGICAL := TRUE; is_app: LOGICAL; prop: property_bsu; cl: class; dtnt: SET[0:1] OF data_type_bsu := []; END_LOCAL;

REPEAT i := 1 TO SIZEOF(class); cl := class[i]; REPEAT j := 1 TO SIZEOF(class[i].described_by); prop := cl.described_by[j]; dtnt := data_type_named_type(prop);

IF (SIZEOF(dtnt) = 1) THEN is_app := applicable_types(cl.identified_by, dtnt); IF (NOT is_app) THEN named_type_usage_allowed := FALSE; END_IF; END_IF; END_REPEAT; END_REPEAT;

WHERE WR1: named_type_usage_allowed; END_RULE; -- allowed_named_type_usage_rule (*

Formal propositions:

WR1: only types that are applicable to a class may be used to specify the domain of the properties declared by a class, through its described_by attribute.

DA-26.3 Assert_oneof_for_table_rule rule

The assert_oneof_for_table_rule rule states that a table_element that is not a RDB_table_element cannot be a RDB_table_specification.

175 CWA 15556-2:2006 (E)

EXPRESS specification:

*) RULE assert_oneof_for_table_rule FOR(table_element); WHERE WR1: QUERY(temp <* table_element | NOT('ISO13584_EXTENDED_DICTIONARY_SCHEMA' + '.RDB_TABLE_ELEMENT' IN TYPEOF(temp)) AND ('ISO13584_TABLE_RESOURCE_SCHEMA.RDB_TABLE_SPECIFICATION' IN TYPEOF(temp))) = []; END_RULE; -- assert_oneof_for_table_rule (*

Formal propositions:

WR1: a table that is not a RDB_table_element cannot be a RDB_table_specification.

DA-26.4 Assert_oneof_for_class_rule rule

The assert_oneof_for_class_rule rule states that a class shall not be at the same time an item_class and/or a functional_view_class and/or an abstract_functional_model_class.

EXPRESS specification:

*) RULE assert_oneof_for_class_rule FOR(class); WHERE WR1: QUERY(cl <* class | ('ISO13584_IEC61360_DICTIONARY_SCHEMA.ITEM_CLASS' IN TYPEOF(cl)) AND (('ISO13584_EXTENDED_DICTIONARY_SCHEMA' +'.ABSTRACT_FUNCTIONAL_MODEL_CLASS') IN TYPEOF(cl))) = []; WR2: QUERY(cl <* class | ('ISO13584_IEC61360_DICTIONARY_SCHEMA.ITEM_CLASS' IN TYPEOF(cl)) AND (('ISO13584_EXTENDED_DICTIONARY_SCHEMA' + '.FUNCTIONAL_VIEW_CLASS') IN TYPEOF(cl))) = []; WR3: QUERY(cl <* class | (('ISO13584_EXTENDED_DICTIONARY_SCHEMA' + '.ABSTRACT_FUNCTIONAL_MODEL_CLASS') IN TYPEOF(cl)) AND (('ISO13584_EXTENDED_DICTIONARY_SCHEMA' +'.FUNCTIONAL_VIEW_CLASS') IN TYPEOF(cl))) = []; END_RULE; -- assert_oneof_for_class_rule (*

Formal propositions:

WR1: a class shall not be at the same time an item_class and an abstract_functional_model_class.

WR2: a class shall not be at the same time an item_class and a functional_view_class.

176 CWA 15556-2:2006 (E)

WR3: a class shall not be at the same time a functional_view_class and an abstract_functional_model_class.

DA-26.5 No_forward_reference_from_table_rule rule

The no_forward_reference_from_table_rule rule checks that when a PLIB conformant library exchange context includes table_elements, these table_elements do not refer through their column_meaning inherited attribute to a property_BSU that makes a forward reference to a class_BSU with respect of the class_BSU list order defined by the contained_classes attribute of any dictionary entity included in the library exchange context.

NOTE The library integrated information model defined in this part of ISO 13584 only permits one dictionary entity within a library exchange context.

EXPRESS specification:

*) RULE no_forward_reference_from_table_rule FOR( dictionary, table_element); WHERE WR1: QUERY(dic <* dictionary | QUERY(tab <* table_element | makes_reference_outside( get_property_BSU_from_property_semantics( tab\table_specification.column_meaning), sub_list_until(dic.contained_classes, tab\table_specification.table_identifier\ table_BSU.name_scope))) <> []) = []; END_RULE; -- no_forward_reference_from_table_rule (*

Formal propositions:

WR1: there is no forward references from any table_element to a property_bsu with respect of the class_BSU list order defined by the contained_classes attribute of any dictionary entity included in the library exchange context.

DA-26.6 Imported_properties_are_visible_or_applicable_rule rule

The imported_properties_are_visible_or_applicable_rule rule checks that when a property is imported by a class by means of an a_priori_semantic_relationship, this property is visible or applicable for the class it is imported from.

NOTE Applicable properties include the properties imported through a semantic relationship. This rule enables to import properties from a class where they were already imported.

EXPRESS specification:

*) RULE imported_properties_are_visible_or_applicable_rule FOR( a_priori_semantic_relationship, property_DET); WHERE WR1: QUERY(rel <* a_priori_semantic_relationship | QUERY(prop <* rel.referenced_properties | QUERY(cl <* rel.referenced_classes | NOT visible_properties(cl, [prop])

177 CWA 15556-2:2006 (E)

AND NOT applicable_properties(cl, [prop])) = rel.referenced_classes) = []) = a_priori_semantic_relationship; END_RULE; -- imported_properties_are_visible_or_applicable_rule (*

Formal propositions:

WR1: the imported properties defined by the referenced_properties attribute of any a_priori_semantic_relationship shall be visible or applicable for one of the classes belonging to the referenced_classes set of this a_priori_semantic_relationship.

DA-26.7 Imported_data_types_are_visible_or_applicable_rule rule

The imported_data_types_are_visible_or_applicable_rule rule checks that when a data type is imported by a class by means of an a_priori_semantic_relationship, this data type is visible or applicable for the class it is imported from.

NOTE Applicable data types include the data types imported through a semantic relationship. This rule enables to import data types from a class where they were already imported.

EXPRESS specification:

*) RULE imported_data_types_are_visible_or_applicable_rule FOR( a_priori_semantic_relationship, data_type_element); WHERE WR1: QUERY(rel <* a_priori_semantic_relationship | QUERY(typ <* rel.referenced_data_types | QUERY(cl <* rel.referenced_classes | NOT visible_types(cl, [typ]) AND NOT applicable_types(cl, [typ])) = rel.referenced_classes) = []) = a_priori_semantic_relationship; END_RULE; -- imported_data_types_are_visible_or_applicable_rule (*

Formal propositions:

WR1: the imported types defined by the referenced_data_types attribute of any a_priori_semantic_relationship shall be visible or applicable for one of the classes belonging to the referenced_classes set of this a_priori_semantic_relationship.

DA-26.8 Imported_tables_are_visible_or_applicable_rule rule

The imported_tables_are_visible_or_applicable_rule rule checks that when a table is imported by a class by means of an a_priori_semantic_relationship, this table is visible or applicable for the class it is imported from.

NOTE Applicable tables include the tables imported through a semantic relationship. This rule enables to import tables from a class where they were already imported.

178 CWA 15556-2:2006 (E)

EXPRESS specification:

*) RULE imported_tables_are_visible_or_applicable_rule FOR( a_priori_semantic_relationship, table_element); WHERE WR1: QUERY(rel <* a_priori_semantic_relationship | QUERY(tab <* rel.referenced_tables | QUERY(cl <* rel.referenced_classes | NOT visible_tables(cl, [tab]) AND NOT applicable_tables(cl, [tab])) = rel.referenced_classes) = []) = a_priori_semantic_relationship; END_RULE; -- imported_tables_are_visible_or_applicable_rule (*

Formal propositions:

WR1: the imported tables defined by the referenced_tables attribute of any a_priori_semantic_relationship shall be visible or applicable for one of the classes belonging to the referenced_classes set of this a_priori_semantic_relationship.

DA-26.9 Imported_documents_are_visible_or_applicable_rule rule

The imported_documents_are_visible_or_applicable_rule rule checks that when a document is imported by a class by means of an a_priori_semantic_relationship, this document is visible or applicable for the class it is imported from.

NOTE Applicable documents include the documents imported through a semantic relationship. This rule enables to import documents from a class where they were already imported.

EXPRESS specification:

*) RULE imported_documents_are_visible_or_applicable_rule FOR( a_priori_semantic_relationship, document_element); WHERE WR1: QUERY(rel <* a_priori_semantic_relationship | QUERY(doc <* rel.referenced_documents | QUERY(cl <* rel.referenced_classes | NOT visible_documents(cl, [doc]) AND NOT applicable_documents(cl, [doc])) = rel.referenced_classes) = []) = a_priori_semantic_relationship; END_RULE; -- imported_documents_are_visible_or_applicable_rule (*

Formal propositions:

WR1: the imported documents defined by the referenced_documents attribute of any a_priori_semantic_relationship shall be visible or applicable for one of the classes belonging to the referenced_classes set of this a_priori_semantic_relationship.

179 CWA 15556-2:2006 (E)

DA-27 ISO13584_extended_dictionary_schema: function definitions

This section gathers the set of functions that are needed for the specification of the constraints on the entities defined in the ISO13584_extended_dictionary_schema.

DA-27.1 Visible_properties function

The visible_properties function checks that the properties corresponding to prop are visible from the class identified by the cl parameter. A property is visible from a class if its DET refers to the BSU of this class or any of its superclass.

If the known visible properties are possibly incomplete because a superclass of cl is not available in the current exchange context, the function returns UNKNOWN.

EXPRESS specification:

*) FUNCTION visible_properties(cl: class_BSU; prop: AGGREGATE OF property_BSU): LOGICAL;

LOCAL ok: BOOLEAN := TRUE; END_LOCAL;

IF NOT EXISTS(cl) THEN RETURN(UNKNOWN); END_IF;

REPEAT i := 1 to SIZEOF(prop); IF NOT(prop[i] IN compute_known_visible_properties(cl)) THEN ok := FALSE; END_IF; END_REPEAT;

IF NOT(ok) AND NOT(all_class_descriptions_reachable(cl)) THEN RETURN(UNKNOWN); END_IF;

IF NOT(ok) AND all_class_descriptions_reachable(cl) THEN RETURN(FALSE); END_IF;

RETURN(TRUE);

END_FUNCTION; -- visible_properties (*

DA-27.2 Visible_types function

The visible_types function checks that the types corresponding to typ are visible from the class identified by the cl parameter. A type is visible from a class if its DET refers to the BSU of this class or any of its superclass.

180 CWA 15556-2:2006 (E)

If the known visible data types are possibly incomplete because a superclass of cl is not available in the current exchange context, the function returns UNKNOWN.

EXPRESS specification:

*) FUNCTION visible_types(cl: class_BSU; typ: AGGREGATE OF data_type_BSU): LOGICAL;

LOCAL ok: BOOLEAN := TRUE; END_LOCAL;

IF NOT EXISTS(cl) THEN RETURN(UNKNOWN); END_IF;

REPEAT i := 1 to SIZEOF(typ); IF NOT(typ[i] IN compute_known_visible_data_types(cl)) THEN ok := FALSE; END_IF; END_REPEAT;

IF NOT(ok) AND NOT(all_class_descriptions_reachable(cl)) THEN RETURN(UNKNOWN); END_IF;

IF NOT(ok) AND all_class_descriptions_reachable(cl) THEN RETURN(FALSE); END_IF;

RETURN(TRUE);

END_FUNCTION; -- visible_types (*

DA-27.3 Visible_tables function

The visible_tables function checks that the tables corresponding to tab are visible from the class identified by the cl parameter. A table is visible from a class if its DET refers to the BSU of this class or any of its superclass.

If a BSU definition is not available to compute the whole set of visible tables and if a table_BSU from tab has not been proved to be visible, the function returns UNKNOWN.

EXPRESS specification:

*) FUNCTION visible_tables(cl: class_BSU; tab: AGGREGATE OF table_BSU): LOGICAL;

IF NOT EXISTS(cl) THEN

181 CWA 15556-2:2006 (E)

RETURN(UNKNOWN); END_IF;

REPEAT i := SIZEOF(tab) TO 1 BY -1; IF tab[i].name_scope = cl THEN tab := tab - tab[i]; END_IF; END_REPEAT;

IF SIZEOF(tab) = 0 THEN RETURN(TRUE); END_IF;

IF SIZEOF(cl.definition) = 0 THEN RETURN(UNKNOWN); END_IF;

IF EXISTS(cl.definition[1]\class.its_superclass) THEN RETURN(visible_tables(cl.definition[1] \class.its_superclass, tab)); ELSE RETURN(FALSE); END_IF;

END_FUNCTION; -- visible_tables (*

DA-27.4 Visible_documents function

The visible_documents function checks that the documents corresponding to doc are visible from the class identified by the cl parameter. A document is visible from a class if its DET refers to the BSU of this class or any of its superclass.

If a BSU definition is not available to compute the whole set of visible documents and if a document_BSU from doc has not been proved to be visible, the function returns UNKNOWN.

EXPRESS specification:

*) FUNCTION visible_documents(cl: class_BSU; doc: AGGREGATE OF document_BSU): LOGICAL;

IF NOT EXISTS(cl) THEN RETURN(UNKNOWN); END_IF;

REPEAT i := SIZEOF(doc) TO 1 BY -1; IF doc[i].name_scope = cl THEN

182 CWA 15556-2:2006 (E)

doc := doc - doc[i]; END_IF; END_REPEAT;

IF SIZEOF(doc) = 0 THEN RETURN(TRUE); END_IF;

IF SIZEOF(cl.definition) = 0 THEN RETURN(UNKNOWN); END_IF;

IF EXISTS(cl.definition[1]\class.its_superclass) THEN RETURN(visible_documents(cl.definition[1] \class.its_superclass, doc)); ELSE RETURN(FALSE); END_IF;

END_FUNCTION; -- visible_documents (*

DA-27.5 Applicable_properties function

The applicable_properties function checks that the properties corresponding to prop are applicable to the class identified by the cl parameter. A property is applicable to a class if its property_BSU belongs to the described_by attribute of this class or any of its super-classes, or if its property_BSU is imported by the class, or by any of its super-classes.

Note that, in particular, all the properties belonging to the known_applicable_properties attribute of a class are applicable to this class.

If a dictionary_element is not available to compute the whole set of applicable properties and if a property_BSU from prop has not been proved to be applicable, the function returns UNKNOWN.

EXPRESS specification:

*) FUNCTION applicable_properties(cl: class_BSU; prop: AGGREGATE OF property_BSU): LOGICAL;

IF SIZEOF(prop) = 0 THEN RETURN(TRUE); END_IF;

IF NOT EXISTS(cl) THEN RETURN(UNKNOWN); END_IF;

183 CWA 15556-2:2006 (E)

IF SIZEOF(cl.definition) = 0 THEN RETURN(UNKNOWN); END_IF;

prop := prop - list_to_set(cl.definition[1]\class.described_by);

IF 'ISO13584_EXTENDED_DICTIONARY_SCHEMA' + '.A_PRIORI_SEMANTIC_RELATIONSHIP' IN TYPEOF(cl.definition[1]) THEN prop := prop - list_to_set(cl.definition[1] \a_priori_semantic_relationship.referenced_properties); END_IF;

IF SIZEOF(prop) = 0 THEN RETURN(TRUE); ELSE IF EXISTS(cl.definition[1]\class.its_superclass) THEN RETURN(applicable_properties(cl.definition[1] \class.its_superclass, prop)); ELSE RETURN(FALSE); END_IF; END_IF;

END_FUNCTION; -- applicable_properties (*

DA-27.6 Applicable_types function

The applicable_types function checks that the types corresponding to typ are applicable to the class identified by the cl parameter. A type is applicable to a class if its data_type_BSU belongs to the defined_types attribute of this class or any of its super-classes, or if its data_type_BSU is imported by the class, or any of its super-classes.

Note that, in particular, all the data types belonging to the known_applicable_data_types attribute of a class are applicable to this class.

If a dictionary_element is not available to compute the whole set of applicable types and if a data_type_BSU from typ has not been proved to be applicable, the function returns UNKNOWN.

EXPRESS specification:

*) FUNCTION applicable_types(cl: class_BSU; typ: AGGREGATE OF data_type_BSU): LOGICAL;

IF SIZEOF(typ) = 0 THEN RETURN(TRUE); END_IF;

184 CWA 15556-2:2006 (E)

IF NOT EXISTS(cl) THEN RETURN(UNKNOWN); END_IF;

IF SIZEOF(cl.definition) = 0 THEN RETURN(UNKNOWN); END_IF;

typ := typ - cl.definition[1]\class.defined_types;

IF ('ISO13584_EXTENDED_DICTIONARY_SCHEMA' + '.A_PRIORI_SEMANTIC_RELATIONSHIP' IN TYPEOF(cl.definition[1])) THEN typ := typ - cl.definition[1]\a_priori_semantic_relationship .referenced_data_types; END_IF;

IF SIZEOF(typ) = 0 THEN RETURN(TRUE); ELSE IF EXISTS(cl.definition[1]\class.its_superclass) THEN RETURN(applicable_types(cl.definition[1] \class.its_superclass, typ)); ELSE RETURN(FALSE); END_IF; END_IF;

END_FUNCTION; -- applicable_types (*

DA-27.7 Applicable_tables function

The applicable_tables function checks that the tables corresponding to tab are applicable to the class identified by the cl parameter. A table is applicable to a class if a class_table_relationship contains the corresponding table_BSU in its related_tokens list and refers to the class, or to any of its super-classes, as its relating_class attributes. It is also applicable if the corresponding table_BSU is imported by the class, or any of its super-classes.

If a dictionary_element is not available to compute the whole set of applicable tables and if a table_BSUs from tab has not been proved to be applicable, the function returns UNKNOWN.

EXPRESS specification:

*) FUNCTION applicable_tables(cl: class_BSU; tab: AGGREGATE OF table_identification): LOGICAL;

IF SIZEOF(tab) = 0

185 CWA 15556-2:2006 (E)

THEN RETURN(TRUE); END_IF;

IF NOT EXISTS(cl) THEN RETURN(UNKNOWN); END_IF;

IF SIZEOF(cl.definition) = 0 THEN RETURN(UNKNOWN); END_IF;

tab := tab - retrieve_tables(cl);

IF 'ISO13584_EXTENDED_DICTIONARY_SCHEMA' + '.A_PRIORI_SEMANTIC_RELATIONSHIP' IN TYPEOF(cl.definition[1]) THEN tab := tab - cl.definition[1]\a_priori_semantic_relationship .referenced_tables; END_IF;

IF SIZEOF(tab) = 0 THEN RETURN(TRUE); ELSE IF EXISTS(cl.definition[1]\class.its_superclass) THEN RETURN( applicable_tables(cl.definition[1]\class.its_superclass, tab)); ELSE RETURN(FALSE); END_IF; END_IF;

END_FUNCTION; -- applicable_tables (*

DA-27.8 Retrieve_tables function

The retrieve_tables function collects the set of tables directly associated with a class through a class_table_relationship.

EXPRESS specification:

*) FUNCTION retrieve_tables(cl: class_BSU): SET[0:?] OF table_BSU; -- requires: { SIZEOF(cl.definition) <> O }

LOCAL s: SET[0:?] OF table_BSU := []; END_LOCAL;

186 CWA 15556-2:2006 (E)

REPEAT i := 1 TO SIZEOF(cl.definition[1]\class.associated_items); IF 'ISO13584_EXTENDED_DICTIONARY_SCHEMA' +'.CLASS_TABLE_RELATIONSHIP' IN TYPEOF(cl.definition[1]\class.associated_items[i]) THEN s := s + cl.definition[1]\class.associated_items[i] .related_tokens; END_IF; END_REPEAT; RETURN(s);

END_FUNCTION; -- retrieve_tables (*

DA-27.9 Applicable_documents function

The applicable_documents function checks that the documents corresponding to doc are applicable to the class identified by the cl parameter. A document is applicable to a class if a class_document_relationship contains the corresponding document_BSU in its related_tokens list, and refers to the class, or to any of its super-classes, as its relating_class attributes. It is also applicable if the corresponding document_BSU is imported by the class, or any of its super-classes.

If a dictionary_element is not available to compute the whole set of applicable documents and if a document_BSU from doc has not been proved to be applicable, the function returns UNKNOWN.

EXPRESS specification:

*) FUNCTION applicable_documents(cl: class_BSU; doc: AGGREGATE OF document_BSU): LOGICAL;

IF SIZEOF(doc) = 0 THEN RETURN(TRUE); END_IF;

IF NOT EXISTS(cl) THEN RETURN(UNKNOWN); END_IF;

IF SIZEOF(cl.definition) = 0 THEN RETURN(UNKNOWN); END_IF;

doc := doc - retrieve_documents(cl);

IF 'ISO13584_EXTENDED_DICTIONARY_SCHEMA' + '.A_PRIORI_SEMANTIC_RELATIONSHIP' IN TYPEOF(cl.definition[1]) THEN Doc := doc - cl.definition[1]\a_priori_semantic_relationship. referenced_documents;

187 CWA 15556-2:2006 (E)

END_IF;

IF SIZEOF(doc) = 0 THEN RETURN(TRUE); ELSE IF EXISTS(cl.definition[1]\class.its_superclass) THEN RETURN(applicable_documents(cl.definition[1] \class.its_superclass, doc)); ELSE RETURN(FALSE); END_IF; END_IF;

END_FUNCTION; -- applicable_documents (*

DA-27.10 Retrieve_documents function

The retrieve_documents function collects the set of documents directly associated with a class through a class_document_relationship.

EXPRESS specification:

*) FUNCTION retrieve_documents(cl: class_BSU): SET[0:?] OF document_BSU; -- requires: { SIZEOF(cl.definition) <> O }

LOCAL s: SET[0:?] OF document_BSU := []; END_LOCAL;

REPEAT i := 1 TO SIZEOF(cl.definition[1]\class.associated_items); IF 'ISO13584_EXTENDED_DICTIONARY_SCHEMA' + '.CLASS_DOCUMENT_RELATIONSHIP' IN TYPEOF(cl.definition[1]\class.associated_items[i]) THEN s := s+ cl.definition[1]\class.associated_items[i] \class_document_relationship.related_tokens; END_IF; END_REPEAT;

RETURN(s);

END_FUNCTION; -- retrieve_documents (*

DA-27.11 Makes_reference_outside function

The function makes_reference_outside checks if an aggregate of property_or_data_type_BSU makes references to class_BSUs that do not belong to the l parameter. It returns FALSE if all the references are in the l parameter and TRUE if some references are outside the l parameter.

188 CWA 15556-2:2006 (E)

A property_BSU or a data_type_BSU refers to a class_BSU when:

— its name_scope is this class_BSU, or

— its definition dictionary_element is provided and refers, as its domain, to a class_BSU (is-part-of relationship), or

— its definition dictionary_element is provided and refers, as its domain, to another data_type_BSU that refers to a class_BSU (recursive definition);

Such references are checked by the makes_reference_outside function.

EXPRESS specification:

*) FUNCTION makes_reference_outside ( p: AGGREGATE OF property_or_data_type_BSU; l: LIST[1:?] OF class_BSU): BOOLEAN;

LOCAL bool: BOOLEAN := FALSE; temp: SET[0:1] OF class_BSU := []; END_LOCAL;

REPEAT j := 1 TO SIZEOF(p); IF ((('ISO13584_IEC61360_DICTIONARY_SCHEMA.PROPERTY_BSU' IN TYPEOF(p[j])) AND (NOT(p[j]\property_bsu.name_scope IN l))) OR (('ISO13584_IEC61360_DICTIONARY_SCHEMA.DATA_TYPE_BSU' IN TYPEOF(p[j])) AND (NOT(p[j]\data_type_bsu.name_scope IN l)))) THEN bool := TRUE; RETURN(bool); END_IF;

IF ((('ISO13584_IEC61360_DICTIONARY_SCHEMA.PROPERTY_BSU' IN TYPEOF(p[j])) AND (NOT(SIZEOF(p[j]\basic_semantic_unit.definition) = 0))) OR (('ISO13584_IEC61360_DICTIONARY_SCHEMA.DATA_TYPE_BSU' IN TYPEOF(p[j])) AND (NOT(SIZEOF(p[j]\basic_semantic_unit.definition) = 0)))) THEN IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.CLASS_INSTANCE_TYPE' IN data_type_typeof(p[j])) THEN temp := data_type_class_of(p[j]); IF NOT(temp[1] IN l) THEN bool := bool OR TRUE ; ELSE bool := bool OR FALSE;

189 CWA 15556-2:2006 (E)

END_IF; END_IF;

IF SIZEOF(data_type_named_type(p[j])) = 1 THEN bool := bool OR makes_reference_outside (data_type_named_type(p[j]), l); END_IF; END_IF; END_REPEAT;

RETURN(bool);

END_FUNCTION; -- makes_reference_outside (*

DA-27.12 Prefix_ordered_class_list function

The prefix_ordered_class_list function checks that all the direct or indirect references from one class_BSU to another class_BSU are backward references with respect to the classes list order.

A class_BSU is referred to directly by a class through the following attributes:

— class.its_superclass: is-a relationship; and, if the class is defined by means of an a_priori_semantic_relationship:

— class\a_priori_semantic_relationship.referenced_classes.

A class_BSU is referred to indirectly by a class:

— either when a property_BSU or a data_type_BSU referenced by this class references itself directly or indirectly this class_BSU, or

— when a class_BSU_relationship referring to this class by its relating_class attribute refers to the class_BSU by its related_tokens attributes.

A property_BSU or a data_type_BSU refers to a class_BSU when:

— its name_scope is this class_BSU, or

— its definition dictionary_element is provided and refers, as its domain, to a class_BSU (is-part-of relationship), or

— its definition dictionary_element is provided and refers, as its domain, to another data_type_BSU that refers to a class_BSU (recursive definition);

Such references are checked by the makes_reference_outside function.

In the ISO13584_extended_dictionary_schema, a class_BSU makes an indirect forward reference to a class_BSU with respect to the class list order in five cases. a) when its described_by attribute contains a property_BSU that makes a makes_reference_outside; b) or when the class is defined by means of an a_priori_semantic_relationship, and its imported properties defined by the referenced_properties inherited attribute contain a property_BSU that makes a makes_reference_outside;

190 CWA 15556-2:2006 (E) c) or when its defined_types attribute contains a data_type_BSU that makes a makes_reference_outside;

d) or when the class is defined by means of an a_priori_semantic_relationship, and its imported data types defined by the referenced_data_types inherited attribute contain a data_type_BSU that makes a makes_reference_outside; e) or when its associated_items attribute contains a class_BSU_relationship whose related_tokens makes a makes_reference_outside;

In the context of the ISO13584_extended_dictionary_schema, this situation may happen in two cases:

1) the class_BSU_relationship is a class_table_relationship that contains a table_BSU that makes through its name_scope attribute a makes_reference_outside, or

2) the class_BSU_relationship is a class_document_relationship that contains a document_BSU that makes through its name_scope attributes a makes_reference_outside.

EXPRESS specification:

*) FUNCTION prefix_ordered_class_list(classes: LIST[2:?] OF class_BSU): BOOLEAN;

LOCAL related_token: class_related_BSU; -- items associated with -- a class through a class_BSU_relationship END_LOCAL;

REPEAT i := 1 TO SIZEOF(classes);

IF SIZEOF(classes[i].definition) = 1 THEN

IF (EXISTS(classes[i].definition[1]\class.its_superclass)) AND (NOT((classes[i].definition[1]\class.its_superclass) IN (makes_sub_list(classes, 1, i - 1)))) THEN RETURN(FALSE); END_IF;

IF ('ISO13584_EXTENDED_DICTIONARY_SCHEMA'+ '.A_PRIORI_SEMANTIC_RELATIONSHIP' IN TYPEOF(classes[i].definition[1])) THEN IF (QUERY(x <* classes[i].definition[1] \a_priori_semantic_relationship. referenced_classes | NOT(x IN makes_sub_list( classes, 1, i - 1))) <> []) THEN RETURN(FALSE); END_IF; END_IF;

191 CWA 15556-2:2006 (E)

IF NOT(SIZEOF(classes[i].definition[1]\class.described_by) = 0) THEN IF (makes_reference_outside(classes[i].definition[1] \class.described_by, makes_sub_list( classes, 1, i))) THEN RETURN(FALSE); END_IF; END_IF;

IF ('ISO13584_EXTENDED_DICTIONARY_SCHEMA'+ '.A_PRIORI_SEMANTIC_RELATIONSHIP' IN TYPEOF(classes[i].definition[1])) THEN IF makes_reference_outside(classes[i].definition[1]\ a_priori_semantic_relationship.referenced_properties, makes_sub_list(classes, 1, i - 1)) THEN RETURN(FALSE); END_IF; END_IF;

IF NOT(SIZEOF(classes[i].definition[1]\class.defined_types) = 0) THEN IF makes_reference_outside(classes[i].definition[1]\ class.defined_types, makes_sub_list (classes, 1, i)) THEN RETURN(FALSE); END_IF; END_IF;

IF ('ISO13584_EXTENDED_DICTIONARY_SCHEMA'+ '.A_PRIORI_SEMANTIC_RELATIONSHIP' IN TYPEOF(classes[i].definition[1])) THEN IF makes_reference_outside(classes[i].definition[1]\ a_priori_semantic_relationship.referenced_data_types, makes_sub_list(classes, 1, i - 1)) THEN RETURN(FALSE); END_IF; END_IF;

IF NOT(SIZEOF(classes[i].definition[1]\ class.associated_items) = 0) THEN REPEAT j := 1 TO SIZEOF(classes[i].definition[1] \class.associated_items); REPEAT k := 1 TO SIZEOF(classes[i].definition[1] \class.associated_items[j]

192 CWA 15556-2:2006 (E)

\class_BSU_relationship.related_tokens);

related_token := classes[i].definition[1] \class.associated_items[j] \class_BSU_relationship.related_tokens[k];

IF (('ISO13584_EXTENDED_DICTIONARY_SCHEMA'+ '.TABLE_BSU') IN (TYPEOF(related_token))) AND NOT(related_token\table_BSU.name_scope IN makes_sub_list(classes, 1, i)) THEN RETURN(FALSE); END_IF;

IF (('ISO13584_EXTENDED_DICTIONARY_SCHEMA'+ '.DOCUMENT_BSU') IN (TYPEOF(related_token))) AND NOT(related_token\document_BSU .name_scope IN makes_sub_list (classes, 1, i)) THEN RETURN(FALSE); END_IF; END_REPEAT; END_REPEAT; END_IF; END_IF; END_REPEAT;

RETURN(TRUE); END_FUNCTION; -- prefix_ordered_class_list (*

DA-27.13 Functional_view_v_c_v function

The functional_view_v_c_v function computes the list of properties defined as view_control_variables in a class, or any of its super-class(es) by a traversal of the inheritance tree defined by the class hierarchy. It calls the retrieve_functional_view_v_c_v function that computes recursively the properties defined as view_control_variables.

This function is intended to be called after the all_class_descriptions_reachable function. Therefore, if some dictionary_elements are not available, it returns an empty LIST.

If the class_BSU cl does not refer to a functional view class, it returns the empty set.

EXPRESS specification:

*) FUNCTION functional_view_v_c_v(cl: class_BSU): LIST OF property_BSU;

IF NOT EXISTS(cl) THEN RETURN([]); -- cl is indeterminate END_IF;

193 CWA 15556-2:2006 (E)

IF NOT(all_class_descriptions_reachable(cl)) THEN RETURN([]); -- some dictionary_element are not available END_IF;

IF NOT('ISO13584_EXTENDED_DICTIONARY_SCHEMA.FUNCTIONAL_VIEW_CLASS' IN TYPEOF(cl.definition[1])) THEN RETURN([]); END_IF;

RETURN(retrieve_functional_view_v_c_v(cl, []));

END_FUNCTION; -- functional_view_v_c_v (*

DA-27.14 Retrieve_functional_view_v_c_v function

The retrieve_functional_view_v_c_v function computes the list of properties defined as view_control_variables in a class, or any of its super-classes by a traversal of the inheritance tree defined by the class hierarchy.

If the class_BSU cl does not refer to a functional view class, it returns the empty set.

EXPRESS specification:

*) FUNCTION retrieve_functional_view_v_c_v(cl: class_BSU; pr: LIST OF property_BSU): LIST OF property_BSU;

LOCAL prop: LIST OF property_BSU := pr; END_LOCAL;

IF SIZEOF(cl.definition) = 0 -- abnormal case THEN RETURN([]); END_IF;

IF NOT('ISO13584_EXTENDED_DICTIONARY_SCHEMA.FUNCTIONAL_VIEW_CLASS' IN TYPEOF(cl.definition[1])) THEN RETURN([]); END_IF;

IF SIZEOF(cl.definition) = 1 THEN prop := prop + cl.definition[1] \functional_view_class.view_control_variables; -- view_control_variables of this class END_IF;

IF NOT(EXISTS(cl.definition[1]\class.its_superclass)) THEN

194 CWA 15556-2:2006 (E)

RETURN(prop); ELSE RETURN(retrieve_functional_view_v_c_v( cl.definition[1]\class.its_superclass, prop)); END_IF;

END_FUNCTION; -- retrieve_functional_view_v_c_v (*

DA-27.15 Data_type_named_type function

The data_type_named_type function computes the named_type used to specify the domain of a property_BSU or a data_type_BSU. It returns only the first data_type_BSU used in the domain definition.

If the data_type is not associated with a named_type, or if the definition of the parameter type_spec is not available, the function returns an empty set.

EXPRESS specification:

*) FUNCTION data_type_named_type(type_spec: property_or_data_type_BSU): SET[0:1] OF data_type_BSU;

LOCAL res: BOOLEAN := FALSE; s: SET[0:1] OF data_type_BSU := []; x: data_type; END_LOCAL;

IF NOT EXISTS(type_spec) THEN RETURN([]); -- type_spec is indeterminate END_IF;

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.PROPERTY_BSU' IN TYPEOF(type_spec)) THEN IF NOT(SIZEOF(type_spec.definition) = 0) THEN x := type_spec.definition[1]\property_DET.domain; res := TRUE; END_IF; ELSE IF NOT(SIZEOF(type_spec.definition) = 0) THEN x := type_spec.definition[1]\data_type_element .type_definition; res := TRUE; END_IF; END_IF;

IF res THEN

195 CWA 15556-2:2006 (E)

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.NAMED_TYPE' IN TYPEOF(x)) THEN s := s + x\named_type.referred_type; END_IF; END_IF;

RETURN(s);

END_FUNCTION; -- data_type_named_type (*

DA-27.16 Data_type_typeof function

The data_type_typeof function runs as the EXPRESS TYPEOF function concerning the data_type that defines the final domain of a property_BSU or a data_type_BSU.

If the data_type is associated with named_types, the function recursively traverses their referred_types attributes, until arriving either to a simple_type or to a complex_type. Then the function returns the result of the EXPRESS TYPEOF function applied to this entity.

If some BSU definitions are not available, with the result that the function cannot be resolved to a simple_type or to a complex_type, the function returns an empty set of STRING.

EXPRESS specification:

*) FUNCTION data_type_typeof(type_spec: property_or_data_type_BSU): SET OF STRING;

LOCAL res: BOOLEAN := FALSE; x: data_type; END_LOCAL;

IF NOT EXISTS(type_spec) THEN RETURN([]); -- type_spec is indeterminate END_IF;

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.PROPERTY_BSU' IN TYPEOF(type_spec)) THEN IF NOT(SIZEOF(type_spec.definition) = 0) THEN x := type_spec.definition[1]\property_DET.domain; res := TRUE; END_IF; ELSE IF NOT(SIZEOF(type_spec.definition) = 0) THEN x := type_spec.definition[1] \data_type_element.type_definition; res := TRUE;

196 CWA 15556-2:2006 (E)

END_IF; END_IF;

IF NOT(res) THEN RETURN([]); END_IF;

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.NAMED_TYPE' IN TYPEOF(x)) THEN IF NOT(SIZEOF(x\named_type.referred_type.definition) = 0) THEN RETURN(data_type_typeof(x\named_type.referred_type)); ELSE RETURN([]); END_IF; ELSE RETURN(TYPEOF(x)); END_IF;

END_FUNCTION; -- data_type_typeof (*

DA-27.17 Data_type_class_of function

The data_type_class_of function computes the class that defines the final domain of a property_BSU or a data_type_BSU. This function is intended to be called after the data_type_typeof function.

If the data_type is not of type class_instance_type, or if a data_type is associated with a named_type, of which BSU definition is not available, the function returns an empty set.

EXPRESS specification:

*) FUNCTION data_type_class_of(type_spec: property_or_data_type_BSU): SET[0:1] OF class_BSU;

LOCAL res: BOOLEAN := FALSE; s: SET[0:1] OF class_BSU := []; x: data_type; END_LOCAL;

IF NOT EXISTS(type_spec) THEN RETURN([]); -- type_spec is indeterminate END_IF;

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.PROPERTY_BSU' IN TYPEOF(type_spec)) THEN IF NOT(SIZEOF(type_spec.definition) = 0) THEN

197 CWA 15556-2:2006 (E)

x := type_spec.definition[1]\property_DET.domain; res := TRUE; END_IF; ELSE IF NOT(SIZEOF(type_spec.definition) = 0) THEN x := type_spec.definition[1]\data_type_element .type_definition; res := TRUE; END_IF; END_IF;

IF res THEN IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.CLASS_INSTANCE_TYPE' IN TYPEOF(x)) THEN s := s + x\class_instance_type.domain; RETURN(s); END_IF;

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.NAMED_TYPE' IN TYPEOF(x)) THEN s := data_type_class_of(x\named_type.referred_type); RETURN(s); END_IF; END_IF;

RETURN(s);

END_FUNCTION; -- data_type_class_of (*

DA-27.18 Data_type_type_name function

The data_type_type_name function computes the type_name attributes of the entity_instance_type that defines the final domain of a property_BSU or a data_type_BSU. This function is intended to be called after the data_type_typeof function.

If the data_type is not of type entity_instance_type, or if a data_type is associated with a named_type, of which BSU definition is not available, the function returns an empty set.

EXPRESS specification:

*) FUNCTION data_type_type_name(t: property_or_data_type_BSU): SET [0:?] OF STRING;

LOCAL res: BOOLEAN := FALSE; s: SET [0:1] OF STRING := []; x: data_type; END_LOCAL;

198 CWA 15556-2:2006 (E)

IF NOT EXISTS(t) THEN RETURN([]); -- t is indeterminate END_IF;

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.PROPERTY_BSU' IN TYPEOF(t)) THEN IF NOT(SIZEOF(t.definition) = 0) THEN x := t.definition[1]\property_DET.domain; res := TRUE; END_IF; ELSE IF NOT(SIZEOF(t.definition) = 0) THEN x := t.definition[1]\data_type_element.type_definition; res := TRUE; END_IF; END_IF;

IF res THEN IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.ENTITY_INSTANCE_TYPE' IN TYPEOF(x)) THEN s := x\entity_instance_type.type_name; END_IF;

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.NAMED_TYPE' IN TYPEOF(x)) THEN s := data_type_type_name(x\named_type.referred_type); END_IF; END_IF;

RETURN(s);

END_FUNCTION; -- data_type_type_name (*

DA-27.19 Data_type_level_spec function

The data_type_level_spec function computes the levels attribute of the level_type that defines the final domain of a property_BSU or a data_type_BSU. This function is intended to be called after the data_type_typeof function.

If the data_type is not of type level_type, or if some data_type is associated with a named_type, of which BSU definition is not available, the function returns an empty LIST.

EXPRESS specification:

*) FUNCTION data_type_level_spec(t: property_or_data_type_BSU):

199 CWA 15556-2:2006 (E)

LIST[0:4] OF UNIQUE Level;

LOCAL res: BOOLEAN := FALSE; s: LIST[0:4] OF UNIQUE level := []; x: data_type; END_LOCAL;

IF NOT EXISTS(t) THEN RETURN([]); -- t is indeterminate END_IF;

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.PROPERTY_BSU' IN TYPEOF(t)) THEN IF NOT(SIZEOF(t.definition) = 0) THEN x := t.definition[1]\property_DET.domain; res := TRUE; END_IF; ELSE IF NOT(SIZEOF(t.definition) = 0) THEN x := t.definition[1]\data_type_element.type_definition; res := TRUE; END_IF; END_IF;

IF res THEN IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.LEVEL_TYPE' IN TYPEOF(x)) THEN s := x\level_type.levels; END_IF;

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.NAMED_TYPE' IN TYPEOF(x)) THEN s := data_type_level_spec(x\named_type.referred_type); END_IF; END_IF;

RETURN(s);

END_FUNCTION; -- data_type_level_spec (*

DA-27.20 Data_type_level_value_typeof function

The data_type_level_value_type of function runs like the EXPRESS TYPEOF function applied to the value_type attribute of the level_type that defines the final domain of a property_BSU or a data_type_BSU. This function is intended to be called after the data_type_typeof function.

200 CWA 15556-2:2006 (E)

If the data_type is not of type level_type, or if a data_type is associated with a named_type, of which BSU definition is not available, the function returns an empty set of string.

EXPRESS specification:

*) FUNCTION data_type_level_value_typeof(t: property_or_data_type_BSU): SET OF STRING;

LOCAL res: BOOLEAN := FALSE; s: SET OF STRING := []; x: data_type; END_LOCAL;

IF NOT EXISTS(t) THEN RETURN([]); -- t is indeterminate END_IF;

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.PROPERTY_BSU' IN TYPEOF(t)) THEN IF NOT(SIZEOF(t.definition) = 0) THEN x := t.definition[1]\property_DET.domain; res := TRUE; END_IF; ELSE IF NOT(SIZEOF(t.definition) = 0) THEN x := t.definition[1]\data_type_element.type_definition; res := TRUE; END_IF; END_IF;

IF res THEN IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.LEVEL_TYPE' IN TYPEOF(x)) THEN s := TYPEOF(x\level_type.value_type); END_IF;

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.NAMED_TYPE' IN TYPEOF(x)) THEN s := data_type_level_value_typeof( x\named_type.referred_type); END_IF;

END_IF;

RETURN(s);

201 CWA 15556-2:2006 (E)

END_FUNCTION; -- data_type_level_value_typeof (*

DA-27.21 Simple_type_data_type function

The simple_type_data_type function checks if the final domain of a property_BSU or a data_type_BSU corresponds to a simple_type.

NOTE Simple type means: integer, real, string or Boolean, or their subtypes.

If a data_type is associated with a named_type, of which BSU definition is not available, the function returns UNKNOWN.

EXPRESS specification:

*) FUNCTION simple_type_data_type(type_spec: property_or_data_type_BSU): LOGICAL;

IF NOT EXISTS(type_spec) THEN RETURN(UNKNOWN); -- type_spec is indeterminate END_IF;

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.SIMPLE_TYPE' IN data_type_typeof(type_spec)) THEN RETURN(TRUE); END_IF;

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.COMPLEX_TYPE' IN data_type_typeof(type_spec)) THEN RETURN(FALSE); END_IF;

RETURN(UNKNOWN);

END_FUNCTION; -- simple_type_data_type (*

Complex_type_data_type function

The complex_type_data_type function checks if the final domain of a property_BSU or a data_type_BSU corresponds to a complex_type.

NOTE Complex type means: class instance, item instance or level specification.

If a data_type is associated with a named_type, of which BSU definition is not available, the function returns UNKNOWN.

202 CWA 15556-2:2006 (E)

EXPRESS specification:

*) FUNCTION complex_type_data_type(type_spec: property_or_data_type_BSU): LOGICAL;

IF NOT EXISTS(type_spec) THEN RETURN(UNKNOWN); -- type_spec is indeterminate END_IF;

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.COMPLEX_TYPE' IN data_type_typeof(type_spec)) THEN RETURN(TRUE); END_IF;

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.SIMPLE_TYPE' IN data_type_typeof(type_spec)) THEN RETURN(FALSE); END_IF;

RETURN(UNKNOWN);

END_FUNCTION; -- complex_type_data_type (*

DA-27.22 Compatible_subclass function

The compatible_subclass function returns TRUE if c2 is a subclass of c1, or if c2 is a subclass of a previous version of c1, i.e., a subclass of a class that has the same code as c1, the same supplier as c1 and a version less or equal to the version of c1. Otherwise, it returns FALSE.

If the result may not be computed because a BSU definition is not available, the function returns UNKNOWN.

EXPRESS specification:

*) FUNCTION compatible_subclass(c1, c2: class_BSU): LOGICAL;

IF (NOT EXISTS(c1)) OR (NOT EXISTS(c2)) THEN RETURN(UNKNOWN); -- c1 or c2 indeterminate END_IF;

IF c1 = c2 THEN RETURN(TRUE); END_IF;

IF ((c1.code = c2.code) AND (c1.version >= c2.version) AND (c1.defined_by.code = c2.defined_by.code))

203 CWA 15556-2:2006 (E)

THEN RETURN(TRUE); END_IF;

IF SIZEOF(c2.definition) = 0 THEN RETURN(UNKNOWN); ELSE IF EXISTS(c2.definition[1]\class.its_superclass) THEN RETURN(compatible_subclass(c1, c2.definition[1] \class.its_superclass)); ELSE RETURN(FALSE); END_IF; END_IF;

END_FUNCTION; -- compatible_subclass (*

DA-27.23 Compatible_types function

The function compatible_types checks if the two final domains of property_BSUs or data_type_BSUs whose types are defined by the ISO13584_IEC61360_dictionary_schema are such that the second type is assignment compatible with the first one.

A type p2 is assignment compatible with a type p1 when one of the following condition holds:

— p1 = p2;

— the EXPRESS TYPEOF function applied to both entities provides the same result, and p2 has the same code as p1, the same supplier code as p1 and a version number less or equal to the version number of p1;

— p1 and p2 have the same data_type_element;

— the result of the function data_type_typeof applied to p1 is not empty and is included in the result of the function data_type_typeof applied to p2, and this latter result does not contain 'ISO13584_IEC61360_DICTIONARY_SCHEMA.COMPLEX_TYPE';

— the results of the function data_type_typeof applied to both types contains 'ISO13584_IEC61360_DICTIONARY_SCHEMA.CLASS_INSTANCE_TYPE' and the class corresponding to p2 is a compatible_subclass of the class corresponding to p1, i.e., is a subclass of p1 or is a subclass of a class that has the same supplier code, and the same class code as p1, and a class version less or equal to the version that corresponds to p1.

— the result of the function data_type_typeof applied to both types contains 'ISO13584_IEC61360_DICTIONARY_SCHEMA.ENTITY_INSTANCE_TYPE' and the type_name attribute of p1 is not empty and is contained in the type_name attribute of p2;

— the result of the function data_type_typeof applied to both types contains 'ISO13584_IEC61360_DICTIONARY_SCHEMA.LEVEL_TYPE' and the levels attributes of both types are not empty and have the same (unordered) content, and the result of the function data_type_level_value_typeof applied to p1 is not empty and is contained in the result of the function data_type_level_value_typeof applied to p2.

If the result may not be computed because some BSU definitions are not available, the function returns UNKNOWN. 204 CWA 15556-2:2006 (E)

EXPRESS specification:

*) FUNCTION compatible_types(p1: property_or_data_type_BSU; p2: property_or_data_type_BSU): LOGICAL;

LOCAL p1_domain, p2_domain: data_type; END_LOCAL;

IF (NOT EXISTS(p1)) OR (NOT EXISTS(p2)) THEN RETURN(UNKNOWN); -- p1 or p2 indeterminate END_IF;

(* case 1 *)

IF p1 = p2 THEN RETURN(TRUE); END_IF;

(* case 2 *)

IF ((TYPEOF(p1) = TYPEOF(p2)) AND (p1\basic_semantic_unit.code = p2.code) AND (p1.name_scope\basic_semantic_unit.code = p2.name_scope\basic_semantic_unit.code) AND (p1\basic_semantic_unit.version >= p2\basic_semantic_unit.version)) THEN RETURN(TRUE); END_IF;

(* case 8 *)

IF (SIZEOF(p1\basic_semantic_unit.definition) = 0) OR (SIZEOF(p2\basic_semantic_unit.definition) = 0) THEN RETURN(UNKNOWN); ELSE IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.PROPERTY_BSU' IN TYPEOF(p1)) THEN p1_domain := p1.definition [1]\property_DET.domain; ELSE p1_domain := p1.definition[1]\data_type_element .type_definition; END_IF;

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.PROPERTY_BSU' IN TYPEOF(p2)) THEN p2_domain := p2.definition [1]\property_DET.domain;

205 CWA 15556-2:2006 (E)

ELSE p2_domain := p2.definition[1]\data_type_element .type_definition; END_IF; END_IF;

(* case 3 *)

IF p1_domain = p2_domain THEN RETURN(TRUE); END_IF;

(* case 4 *)

IF (NOT(SIZEOF(data_type_typeof(p1)) = 0)) AND (data_type_typeof(p1)<= data_type_typeof(p2)) AND (NOT('ISO13584_IEC61360_DICTIONARY_SCHEMA.COMPLEX_TYPE' IN data_type_typeof(p2))) THEN RETURN(TRUE); END_IF;

(* case 5 *)

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.CLASS_INSTANCE_TYPE' IN data_type_typeof(p1)) AND ('ISO13584_IEC61360_DICTIONARY_SCHEMA.CLASS_INSTANCE_TYPE' IN data_type_typeof(p2)) THEN RETURN(compatible_subclass(data_type_class_of(p1)[1], data_type_class_of(p2)[1])); END_IF;

(* case 6 *)

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.ENTITY_INSTANCE_TYPE' IN data_type_typeof(p1)) AND ('ISO13584_IEC61360_DICTIONARY_SCHEMA.ENTITY_INSTANCE_TYPE' IN data_type_typeof(p2)) THEN IF ((data_type_type_name(p1) <= data_type_type_name(p2)) AND (data_type_type_name(p1) <> [])) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; END_IF;

(* case 7 *)

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.LEVEL_TYPE' IN data_type_typeof(p1))

206 CWA 15556-2:2006 (E)

AND ('ISO13584_IEC61360_DICTIONARY_SCHEMA.LEVEL_TYPE' IN data_type_typeof(p2)) THEN IF (data_type_level_spec(p1) = data_type_level_spec(p2)) AND (data_type_level_value_typeof(p1) <> []) AND (data_type_level_value_typeof(p1) <= data_type_level_value_typeof(p2)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; END_IF;

(* case 8 *)

IF ((data_type_typeof(p1) = []) OR (data_type_typeof(p2) = [])) THEN RETURN(UNKNOWN); ELSE RETURN(FALSE); END_IF;

END_FUNCTION; -- compatible_types (*

DA-27.24 Ordered_index_value function

The function ordered_index_value checks that the values of a non_quantitative_int_type are successive integers.

EXPRESS specification:

*) FUNCTION ordered_index_value(x: value_domain): BOOLEAN;

REPEAT i := LOBOUND(x.its_values) TO SIZEOF(x.its_values); IF x.its_values[i].value_code <> x.its_values[i-1].value_code + 1 THEN RETURN(FALSE); END_IF; END_REPEAT;

RETURN(TRUE);

END_FUNCTION; -- ordered_index_value (*

DA-27.25 Makes_sub_list

The makes_sub_list function builds a sublist from a subset of another list cla of class_BSUs. It corresponds to cla[i..j].

207 CWA 15556-2:2006 (E)

EXPRESS specification:

*) FUNCTION makes_sub_list(cla: LIST [1:?] OF class_BSU; i, j: INTEGER): LIST [1:?] OF class_BSU;

LOCAL c: LIST [0:?] OF class_BSU := []; END_LOCAL;

REPEAT k := i TO j; c := c + cla[k]; END_REPEAT;

RETURN(c);

END_FUNCTION; -- makes_sub_list (*

DA-27.26 Sub_list_until

The sub_list_until function builds a sublist from another list (cla) of class_BSUs. This sublist consists of the beginning of the cla list up to the cl class. If cl does not belong to the cla list, the whole cla list is returned.

EXPRESS specification:

*) FUNCTION sub_list_until(cla: LIST [1:?] OF class_BSU; cl: class_BSU): LIST [1:?] OF class_BSU;

LOCAL c: LIST [0:?] OF class_BSU := []; END_LOCAL;

REPEAT k := 1 TO SIZEOF(cla); c := c + cla[k]; IF cla[k] :=: cl THEN ESCAPE; END_IF; END_REPEAT;

RETURN(c);

END_FUNCTION; -- sub_list_until (*

DA-27.27 Get_property_BSU_from_property_semantics function

The get_property_BSU_from_property_semantics function returns the list of property_BSUs associated to a list of property_semantics.

208 CWA 15556-2:2006 (E)

EXPRESS specification:

*) FUNCTION get_property_BSU_from_property_semantics( l: AGGREGATE OF variable_semantics): LIST[1:?] OF property_BSU;

LOCAL res: LIST[0:?] OF property_BSU := []; END_LOCAL;

REPEAT i := 1 TO SIZEOF(l); res := res + l[i]\property_semantics.the_property; END_REPEAT;

RETURN(res);

END_FUNCTION; -- get_property_BSU_from_property_semantics (*

DA-27.28 Compatible_list_library_types_and_columns function

The function compatible_list_library_types_and_columns checks if a list of columns (col) is type compatible with a list of types (dom) defined by a list of property_or_data_type_BSUs.

Simple types are, like EXPRESS, not strongly typed: for instance, a real value may be assigned to a measure.

Complex types support, like EXPRESS, inheritance. Due to the meta-modelling approach used in ISO 13584, inheritance occurs at two levels:

— as EXPRESS-encoded: an entity_instance_column that declares, through its type_name attribute, to contain placements may contain, for instance, axis1_placement, and

— at the meta-level: assuming that A is a superclass of B, and that B is a superclass of C, a column referring to B may contain instances of C and may be assigned to a property whose type is defined by A.

The function returns a logical that is TRUE when all the types are compatible and FALSE when they are not. This function returns UNKNOWN when some required basic_semantic_unit definitions are not present.

EXPRESS specifications:

*) FUNCTION compatible_list_library_types_and_columns( dom: LIST [0:?] of property_or_data_type_BSU; col: LIST [0:?] of column): LOGICAL;

LOCAL res: LOGICAL := TRUE; set_string: SET OF STRING := []; set_integer: SET OF INTEGER := []; code_type: non_quantitative_code_type; int_type: non_quantitative_int_type; END_LOCAL;

209 CWA 15556-2:2006 (E)

IF SIZEOF(dom) <> SIZEOF(col) THEN RETURN(FALSE); END_IF;

REPEAT i := LOINDEX(col) TO HIINDEX(col); IF data_type_typeof(dom[i]) = [] THEN (* the final domain of one type is not available *) res := UNKNOWN; ELSE IF ('ISO13584_TABLE_RESOURCE_SCHEMA.INTEGER_COLUMN' IN TYPEOF(col[i])) THEN IF ((('ISO13584_IEC61360_DICTIONARY_SCHEMA' + '.NON_QUANTITATIVE_INT_TYPE') IN data_type_typeof(dom[i])) AND (SIZEOF(data_type_non_quantitative_int_type( dom[i])) = 1)) THEN set_integer := []; int_type := data_type_non_quantitative_int_type( dom[i])[1]; REPEAT j :=1 TO SIZEOF(int_type.domain.its_values); set_integer := set_integer + int_type.domain.its_values[j] .value_code; END_REPEAT; REPEAT j := 1 TO SIZEOF(col[i].values); IF (('INTEGER' IN TYPEOF(col[i].values[j])) AND NOT (col[i].values[j] IN set_integer)) THEN RETURN (FALSE); END_IF; END_REPEAT; ELSE IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.INT_TYPE' IN data_type_typeof(dom[i])) OR (('ISO13584_IEC61360_DICTIONARY_SCHEMA' + '.NUMBER_TYPE' IN data_type_typeof(dom[i])) AND NOT('ISO13584_IEC61360_DICTIONARY_SCHEMA' + '.REAL_TYPE' IN data_type_typeof(dom[i]))) THEN ; ELSE RETURN(FALSE); END_IF; END_IF; END_IF;

IF ('ISO13584_TABLE_RESOURCE_SCHEMA.REAL_COLUMN' IN TYPEOF(col[i])) THEN IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.REAL_TYPE' IN data_type_typeof(dom[i]))

210 CWA 15556-2:2006 (E)

OR (('ISO13584_IEC61360_DICTIONARY_SCHEMA' + '.NUMBER_TYPE' IN data_type_typeof(dom[i])) AND NOT('ISO13584_IEC61360_DICTIONARY_SCHEMA' + '.INT_TYPE' IN data_type_typeof(dom[i]))) THEN ; ELSE RETURN(FALSE); END_IF; END_IF;

IF ('ISO13584_TABLE_RESOURCE_SCHEMA.BOOLEAN_COLUMN' IN TYPEOF(col[i])) THEN IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.BOOLEAN_TYPE' IN data_type_typeof(dom[i])) THEN ; ELSE RETURN(FALSE); END_IF; END_IF;

IF ('ISO13584_TABLE_RESOURCE_SCHEMA.STRING_COLUMN' IN TYPEOF(col[i])) THEN IF ((('ISO13584_IEC61360_DICTIONARY_SCHEMA' + '.NON_QUANTITATIVE_CODE_TYPE') IN data_type_typeof(dom[i])) AND (SIZEOF(data_type_non_quantitative_code_type( dom[i])) = 1)) THEN set_string := []; code_type := data_type_non_quantitative_code_type( dom[i])[1]; REPEAT j:=1 TO SIZEOF(code_type.domain.its_values); set_string := set_string + code_type.domain.its_values[j] .value_code; END_REPEAT; REPEAT j := 1 TO SIZEOF(col[i].values); IF ((('STRING' IN TYPEOF(col[i].values[j])) AND NOT (col[i].values[j] IN set_string)) OR ('ISO13584_INSTANCE_RESOURCE_SCHEMA' + '.TRANSLATED_STRING_VALUE' IN TYPEOF(col[i].values[j]))) THEN RETURN (FALSE); END_IF; END_REPEAT; ELSE IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA' + '.STRING_TYPE' IN data_type_typeof(dom[i])) THEN

211 CWA 15556-2:2006 (E)

; ELSE RETURN(FALSE); END_IF; END_IF; END_IF;

IF ('ISO13584_TABLE_RESOURCE_SCHEMA.ENTITY_INSTANCE_COLUMN' IN TYPEOF(col[i])) THEN IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA' + '.ENTITY_INSTANCE_TYPE' IN data_type_typeof(dom[i])) AND (data_type_type_name(dom[i]) <= col[i]\ entity_instance_column.type_name) (* column of subtypes are allowed*) THEN ; ELSE RETURN(FALSE); END_IF; END_IF;

IF ('ISO13584_TABLE_RESOURCE_SCHEMA.CLASS_INSTANCE_COLUMN' IN TYPEOF(col[i])) THEN IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA' + '.CLASS_INSTANCE_TYPE' IN data_type_typeof(dom[i])) AND (compatible_subclass( data_type_class_of(dom[i])[1], col[i]\class_instance_column.class_ref)) THEN ; ELSE RETURN(FALSE); END_IF; END_IF;

IF ('ISO13584_TABLE_RESOURCE_SCHEMA.LEVEL_SPEC_COLUMN' IN TYPEOF(col[i])) THEN IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.LEVEL_TYPE' IN data_type_typeof(dom[i])) THEN (* all values are checked against the specified levels*) REPEAT j := 1 TO SIZEOF(col[i].values); IF NOT(compatible_level_type_and_instance( data_type_level_spec(dom[i]), data_type_level_value_typeof(dom[i]), col[i].values[j])) THEN RETURN(FALSE); END_IF; END_REPEAT;

212 CWA 15556-2:2006 (E)

ELSE RETURN(FALSE); END_IF; END_IF; END_IF; END_REPEAT;

RETURN(res);

END_FUNCTION; -- compatible_list_library_types_and_columns (*

DA-27.29 Data_type_non_quantitative_int_type function

The data_type_non_quantitative_int_type function computes the non_quantitative_int_type that defines the final domain of a property_BSU or a data_type_BSU. This function is intended to be called after the data_type_typeof function.

If the data_type is not of type non_quantitative_int_type, or if a data_type is associated with a named_type, of which BSU definition is not available, the function returns an empty set.

EXPRESS specification:

*) FUNCTION data_type_non_quantitative_int_type( type_spec: property_or_data_type_BSU): SET [0:1] OF non_quantitative_int_type; LOCAL res: BOOLEAN := FALSE; s: SET [0:1] OF non_quantitative_int_type := []; x: data_type; END_LOCAL;

IF NOT EXISTS(type_spec) THEN RETURN([]); -- type_spec is indeterminate END_IF;

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.PROPERTY_BSU' IN TYPEOF(type_spec)) THEN IF NOT(SIZEOF(type_spec.definition) = 0) THEN x := type_spec.definition[1]\property_DET.domain; res := TRUE; END_IF; ELSE IF NOT(SIZEOF(type_spec.definition) = 0) THEN x := type_spec.definition[1]\ data_type_element.type_definition; res := TRUE; END_IF; END_IF;

213 CWA 15556-2:2006 (E)

IF res THEN IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA'+ '.NON_QUANTITATIVE_INT_TYPE') IN TYPEOF(x) THEN s := s + x; RETURN(s); END_IF;

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.NAMED_TYPE') IN TYPEOF(x) THEN s := data_type_non_quantitative_int_type( x\named_type.referred_type); RETURN(s); END_IF; END_IF;

RETURN([]);

END_FUNCTION; -- data_type_non_quantitative_int_type (*

DA-27.30 Data_type_non_quantitative_code_type function

The data_type_non_quantitative_code_type function computes the non_quantitative_code_type that defines the final domain of a property_BSU or a data_type_BSU. This function is intended to be called after the data_type_typeof function.

If the data_type is not of type non_quantitative_code_type, or if a data_type is associated with a named_type, of which BSU definition is not available, the function returns an empty set.

EXPRESS specification:

*) FUNCTION data_type_non_quantitative_code_type( type_spec: property_or_data_type_BSU): SET [0:1] OF non_quantitative_code_type; LOCAL res: BOOLEAN := FALSE; s: SET [0:1] OF non_quantitative_code_type := []; x: data_type; END_LOCAL;

IF NOT EXISTS(type_spec) THEN RETURN([]); -- type_spec is indeterminate END_IF;

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.PROPERTY_BSU' IN TYPEOF(type_spec)) THEN IF NOT(SIZEOF(type_spec.definition) = 0)

214 CWA 15556-2:2006 (E)

THEN x := type_spec.definition[1]\property_DET.domain; res := TRUE; END_IF; ELSE IF NOT(SIZEOF(type_spec.definition) = 0) THEN x := type_spec.definition[1]\ data_type_element.type_definition; res := TRUE; END_IF; END_IF;

IF res THEN IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA'+ '.NON_QUANTITATIVE_CODE_TYPE') IN TYPEOF(x) THEN s := s + x; RETURN(s); END_IF;

IF ('ISO13584_IEC61360_DICTIONARY_SCHEMA.NAMED_TYPE') IN TYPEOF(x) THEN s := data_type_non_quantitative_code_type( x\named_type.referred_type); RETURN(s); END_IF; END_IF;

RETURN([]);

END_FUNCTION; -- data_type_non_quantitative_code_type (*

DA-27.31 Applicable_properties_for_applicable_tables function

The applicable_properties_for_applicable_tables function checks that all the properties that are associated with columns of tables associated with a class by a rel class_table_relationship are applicable to the rel.relating_class class.

If some table_BSU definition is not available, the function returns UNKNOWN.

EXPRESS specification:

*) FUNCTION applicable_properties_for_applicable_tables( rel: class_table_relationship): LOGICAL; LOCAL table: table_bsu; cl: class_bsu; props: LIST OF property_bsu := []; res: LOGICAL := TRUE;

215 CWA 15556-2:2006 (E)

END_LOCAL;

IF QUERY(table <* rel.related_tokens | SIZEOF(table.definition) = 0) <> [] THEN RETURN(UNKNOWN); END_IF;

REPEAT i := 1 TO SIZEOF(rel.related_tokens); table := rel.related_tokens[i]; cl := rel\class_BSU_relationship.relating_class.identified_by; props := get_property_BSU_from_property_semantics( table\basic_semantic_unit.definition[1] \table_element.column_meaning); res := res AND applicable_properties(cl, list_to_set(props)); END_REPEAT;

RETURN(res);

END_FUNCTION; -- visible_properties_for_visible_tables (*

DA-27.32 Superclass_of_item_is_item function

The superclass_of_item_is_item function checks that the superclass of an item_class cl, if it exists, is an item_class.

If the class associated with a class_BSU cannot be computed, the function returns UNKNOWN.

EXPRESS specification:

*) FUNCTION superclass_of_item_is_item(cl: item_class): LOGICAL;

IF NOT EXISTS(cl\class.its_superclass) THEN RETURN(TRUE); END_IF;

IF SIZEOF(cl\class.its_superclass.definition) = 0 THEN RETURN(UNKNOWN); END_IF;

RETURN(('ISO13584_IEC61360_DICTIONARY_SCHEMA.ITEM_CLASS') IN TYPEOF(cl\class.its_superclass.definition[1]));

END_FUNCTION; -- superclass_of_item_is_item (*

DA-27.33 Compatible_content_and_specification function

The compatible_content_and_specification function checks that the number of columns of the tab table_content is correct with respect to the table_element description, and that the types and values

216 CWA 15556-2:2006 (E) of each column are compatible and correspond to the type defined in the data_type specification of the corresponding property_semantics.

If the table_element associated with a table_BSU of tab cannot be computed, the function returns UNKNOWN.

EXPRESS specification:

*) FUNCTION compatible_content_and_specification( tab: table_content): LOGICAL;

IF SIZEOF(tab\content_item.dictionary_definition.definition) = 0 THEN RETURN(UNKNOWN); END_IF;

RETURN(compatible_list_library_types_and_columns( get_property_BSU_from_property_semantics( tab\content_item.dictionary_definition.definition[1]\ table_specification.column_meaning), tab\table_extension.content));

END_FUNCTION; -- compatible_content_and_specification (*

DA-27.34 Check_view_of_instance_datatype function

The check_view_of_instance_datatype function checks if the fm_class_view_of view_of attribute refers to an item_class.

EXPRESS specification:

*) FUNCTION check_view_of_instance_datatype( fmc_view_of: fm_class_view_of): LOGICAL;

IF (SIZEOF(fmc_view_of.view_of.definition) = 1) THEN RETURN('ISO13584_IEC61360_DICTIONARY_SCHEMA.ITEM_CLASS' IN TYPEOF(fmc_view_of.view_of.definition[1])); ELSE RETURN(UNKNOWN); END_IF;

END_FUNCTION; -- check_view_of_instance_datatype (*

DA-27.35 View_control_variables_attributes_belong_to_domain function

The view_control_variables_attributes_belong_to_domain function checks whether the view_control_variable_range attributes range_lobound and range_hibound belong or not belong to the domain of a view control variable.

217 CWA 15556-2:2006 (E)

EXPRESS specification:

*) FUNCTION view_control_variables_attributes_belong_to_domain( vcv_range: view_control_variable_range): LOGICAL;

IF (data_type_typeof(vcv_range.parameter_type) <> []) THEN RETURN((data_type_non_quantitative_int_type( vcv_range.parameter_type)[1].domain .its_values[1].value_code <= vcv_range.range_lobound) AND (vcv_range.range_hibound <= data_type_non_quantitative_int_type( vcv_range.parameter_type)[1].domain .its_values[HIINDEX(data_type_non_quantitative_int_type( vcv_range.parameter_type)[1].domain.its_values)].value_code) ); ELSE RETURN(UNKNOWN); END_IF;

END_FUNCTION; -- view_control_variables_attributes_belong_to_domain (*

Created_view_is_functional_view function

The created_view_is_functional_view function checks that the cl corresponding dictionary definition is a functional_view_class if and only if this dictionary definition exists in the same exchange context.

EXPRESS specification:

*) FUNCTION created_view_is_functional_view(cl: class_BSU): LOGICAL;

IF (SIZEOF(cl\basic_semantic_unit.definition) = 1) THEN RETURN('ISO13584_EXTENDED_DICTIONARY_SCHEMA' + '.FUNCTIONAL_VIEW_CLASS' IN TYPEOF(cl\basic_semantic_unit.definition[1])); ELSE RETURN(UNKNOWN); END_IF;

END_FUNCTION; -- created_view_is_functional_view (*

DA-27.36 Check_is_case_of_referenced_classes_definition function

The check_is_case_of_referenced_classes_definition returns TRUE if the item_class_case_of is_case_of set of referenced class dictionary definition(s) is type compatible with the given cl item_class_case_of instance. Otherwise, it returns FALSE.

218 CWA 15556-2:2006 (E)

EXPRESS specification:

*) FUNCTION check_is_case_of_referenced_classes_definition( cl: item_class_case_of): BOOLEAN; LOCAL class_def_ok: BOOLEAN := TRUE; done: BOOLEAN := FALSE; END_LOCAL;

REPEAT i := 1 TO SIZEOF(cl.is_case_of); IF (SIZEOF(cl.is_case_of[i].definition) = 1) THEN IF ('ISO13584_EXTENDED_DICTIONARY_SCHEMA' + '.COMPONENT_CLASS_CASE_OF' IN TYPEOF(cl)) THEN IF (NOT('ISO13584_IEC61360_DICTIONARY_SCHEMA' + '.COMPONENT_CLASS' IN TYPEOF(cl.is_case_of[i].definition[1]))) THEN class_def_ok := FALSE; END_IF; done := TRUE; END_IF; IF ('ISO13584_EXTENDED_DICTIONARY_SCHEMA' + '.FEATURE_CLASS_CASE_OF' IN TYPEOF(cl)) THEN IF (NOT('ISO13584_IEC61360_DICTIONARY_SCHEMA' + '.FEATURE_CLASS' IN TYPEOF(cl.is_case_of[i].definition[1]))) THEN class_def_ok := FALSE; END_IF; done := TRUE; END_IF; IF ('ISO13584_EXTENDED_DICTIONARY_SCHEMA' + '.MATERIAL_CLASS_CASE_OF' IN TYPEOF(cl)) THEN IF (NOT('ISO13584_IEC61360_DICTIONARY_SCHEMA' + '.MATERIAL_CLASS' IN TYPEOF(cl.is_case_of[i].definition[1]))) THEN class_def_ok := FALSE; END_IF; done := TRUE; END_IF; IF (('ISO13584_EXTENDED_DICTIONARY_SCHEMA' + '.ITEM_CLASS_CASE_OF' IN TYPEOF(cl)) AND (NOT done)) THEN IF (NOT('ISO13584_IEC61360_DICTIONARY_SCHEMA' + '.ITEM_CLASS' IN TYPEOF(cl.is_case_of[i].definition[1]))) THEN

219 CWA 15556-2:2006 (E)

class_def_ok := FALSE; END_IF; END_IF;

done := FALSE; END_IF; END_REPEAT;

RETURN(class_def_ok);

END_FUNCTION; -- check_is_case_of_referenced_classes_definition (*

*) END_SCHEMA; -- ISO13584_extended_dictionary_schema (*

220 CWA 15556-2:2006 (E)

Annex DB (informative) External File Schema (from ISO13584 Part 24)

DB-1 Introduction

The content of this appendix has been taken from chapter 13 of ISO13584 Part 24. The first paragraph is taken from chapter 4.2.3 of ISO13584 Part 24.

The ISO13584_external_file_schema defines a mechanism and provides the resource constructs for referencing external files, whether these external files conform to an EXPRESS information model, and whether their file formats conform to an implementation method defined in ISO 10303. The ISO13584_external_file_schema includes, in particular, all the material needed to support Internet- oriented documents and access mechanisms in a supplier library.

This clause defines the requirement for the ISO13584_external_file_schema. The following EXPRESS declaration introduces the ISO13584_external_file_schema block and identifies the necessary external references.

EXPRESS specification:

*) SCHEMA ISO13584_external_file_schema;

REFERENCE FROM ISO13584_IEC61360_dictionary_schema (basic_semantic_unit, class_BSU, class_related_BSU, content_item, definition_available_implies, graphics, item_names, list_to_set, revision_type, supplier_BSU, supplier_element, supplier_related_BSU, version_len);

REFERENCE FROM ISO13584_IEC61360_language_resource_schema (global_language_assignment, language_code, present_translations);

REFERENCE FROM ISO13584_instance_resource_schema (property_or_data_type_BSU);

REFERENCE FROM ISO13584_extended_dictionary_schema (absolute_url_type, document_BSU, program_library_BSU); 221 CWA 15556-2:2006 (E)

REFERENCE FROM ISO13584_library_content_schema (model_class_extension);

REFERENCE FROM support_resource_schema (identifier, label);

REFERENCE FROM person_organization_schema (organization);

REFERENCE FROM measure_schema (length_measure, length_measure_with_unit);

(*

NOTE The schemas referenced above can be found in the following documents: ISO13584_IEC61360_dictionary_schema IEC 61360-2 (which is duplicated for convenience in informative annex D of ISO 13584-42), ISO13584_IEC61360_language_resource_schema IEC 61360-2 (which is duplicated for convenience in informative annex D of ISO 13584-42), ISO13584_instance_resource_schema This part of ISO 13584, ISO13584_extended_dictionary_schema This part of ISO 13584, ISO13584_library_content_schema This part of ISO 13584, support_resource_schema ISO 10303-41, person_organization_schema ISO 10303-41, measure_schema ISO 10303-41.

DB-2 Introduction to the ISO13584_external_file_schema

A library exchange context includes a library delivery file conforming to one conformance class of a library integrated information model and several library external files. The library delivery file specifies both the structure and the content of the supplier library. The library external files, provide for exchanging associated information whose EXPRESS information models are not described in ISO 13584. They may be described by other standards, using either the EXPRESS information modelling language or other specification techniques. Their usage, in a supplier library, shall be allowed either by the conformance class of the library integrated information model referenced by the library delivery file, or in one of the view exchange protocol conformance classes referenced by the library delivery file.

The information contained in library external files is represented within the library delivery file using external_item entities. Such entities reference the external files used to exchange this content and the protocol that shall be used to process them. Three categories of external_items are defined:

— dictionary_external_items are associated with a BSU for which they provide the content. They can only be referenced through their BSU, and their life cycle is independent from any class extension. In particular, they may be associated with a class that is only described by dictionary data;

— class_extension_external_items provide for describing aspects of the extensions of classes. They are directly referenced from the entities that describe the model_class_extension. They shall be provided whenever a new version of a model_class_extension is provided and their life cycles are the same as the model_class_extension to which they belong.

— property_value_external_items provide for defining item properties the value of which are an external item.

222 CWA 15556-2:2006 (E)

The planning model in Figure 8 shows the different categories of library external files defined in this part of ISO 13584.

NOTE 1 This planning model uses the EXPRESS-G graphical notations for the EXPRESS language, but, for clarification of the diagram, some of the relationships that are defined in the EXPRESS model are omitted, and some inter-schema references are not represented.

A program_library_content is a set of programs that may be delivered as part of a library exchange context, and that shall be linked with an API, defined by a program_protocol, to define a new higher level API, modeled by a linked_interface_program_protocol entity. Then, such a new API may be referenced from a program associated with a library class by means of a linked_interface_program_protocol entity instance.

EXAMPLE ISO 13584-31 defines an API that may be used, together with a file exchange format, to define a program_protocol. An upper layer may be defined on top of this API, by means of a program_library, to define a new program_protocol that is a linked_interface_program_protocol. Such a program_protocol might be useful to ensure the compatibility with some pre-existing , for instance the API defined by the German Standard DIN V 66304.

used_protocol (ABS) ISO13584_IEC61360_dictionary external_item content _schema.content_item 1

(ABS) (ABS) dictionary_ class_extension_ property_value external_item external_item external_item

1 (INV) belongs_to ISO13584_library_extension_ schema.model_class_extension (ABS) (ABS) supplier_BSU_ class_BSU_ related_content related_content

(RT) (RT) dictionary_definition program_library dictionary_definition p program_libraryp document_content document_BSU _BSU _content

Figure 1 – External_item planning model A program_library_content is a set of programs that may be delivered as part of a library exchange context, and that shall be linked with an API, defined by a program_protocol, to define a new higher level API, modeled by a linked_interface_program_protocol entity. Then, such a new API may be referenced from a program associated with a library class by means of a linked_interface_program_protocol entity instance.

EXAMPLE ISO 13584-31 defines an API that may be used, together with a file exchange format, to define a program_protocol. An upper layer may be defined on top of this API, by means of a program_library, to define a new program_protocol that is a linked_interface_program_protocol. Such a program_protocol might be useful to ensure the compatibility with some pre-existing APIs, for instance the API defined by the German Standard DIN V 66304.

A program_library_content:

— corresponds to a program_library_BSU that identifies it and enables to reference it;

— refers to a program_protocol that defines the API to which it is intended to be linked;

223 CWA 15556-2:2006 (E)

— is associated with library external file(s) that constitutes its content.

A document_content is the content of a document identified by a document_BSU and described by a document entity. It contains information defined at the discretion of the supplier and accessible to the user through a set of names. In particular, within the context of a class, the user shall be informed about the documents applicable to the class and shall be able to request display of them.

A document_content:

— is associated with a document_BSU that identifies it and enables to reference it;

— refers to an external_file_protocol that specifies how it shall be processed;

— may be provided in more than one language;

— refers to the library external file(s) that constitutes its content.

A class_extension_external_item provides some information about the extension of a class by means of external file(s). It is not associated with a BSU, and it shall only be referred to from the entities that describe the extension of a class.

Each class_extension_external_item:

— is associated with a model_class_extension that defines its scope and its life cycle;

— is associated with an external_file_protocol that specifies how it shall be processed;

— is described by an entity (a message or an illustration) that specifies its nature and, therefore, the transformation, if any, it must undergo in the compilation phase;

— refers to the library external file(s) that constitutes its content.

A property_value_external_item:

— is a PLIB_entity_instance_value and thus a primitive_value.

— it may constitute the value of any property the data type of which is defined as an entity_instance_type, the type_name attribute of which contains 'ISO13584_EXTERNAL_FILE_SCHEMA.PROPERTY_VALUE_EXTERNAL_ITEM'.

NOTE 2 PLIB_entity_instance_value and primitive_value are defined in the ISO13584_instance_resource_schema documented in clause 6.

NOTE 3 entity_instance_type is defined in the ISO13584_IEC61360_dictionary_schema documented in ISO 13584-42:1998.

These files shall be processed by the LMS of the library end-user, depending on the external_file_protocols supported on this LMS.

The ISO13584_external_file_schema models:

— the mechanisms that provide reference to library external files,

— the specification of the way a library external file shall be processed,

— the resource constructs that specify the role of each library external file,

— the mechanisms that enable a library end-user to navigate between documents,

— the mechanisms that enable a library end-user to navigate from documents to library classes.

224 CWA 15556-2:2006 (E)

The ISO13584_external_file_schema does not model:

— the information models of the library external files.

DB-3 Fundamental concepts and assumptions for the ISO13584_external_file_schema

DB-3.1 Representations of items

The goal of this International Standard is to provide for the exchange of any category of representation of library items. Taking into consideration that several international, national or de facto standards already enable the description of various categories of representations of various items, a library delivery file shall be able to refer to external files, conforming to other standards, to describe the different representation categories, for the items belonging to this library.

NOTE VHDL and ISO 10303-203, are examples of International Standards that provide for the description of two different categories of representation for parts.

DB-3.2 Explicit and implicit description of item representations

For one category of representation, the set of the representations of all the instances of an item class may be modelled either explicitly or implicitly. If it is modelled explicitly, each item representation is described as a set of data. If it is modelled implicitly, there is an algorithm that shall be triggered and provided with parameter values to generate each item representation.

In the ISO13584_external_file_schema, explicit representations are referenced by representation_reference entities, implicit representations are referenced by program_reference entities.

A program_reference is associated with a program_protocol and with parameters. When a supplier library is processed on the library end-user site, processing of a program_reference shall consist of verifying the availability of the program_protocol and then, according to the program_status of the program, compiling the content of the library external file referenced by the program_reference and/or linking this content. In a latter stage, running will require evaluation of its parameters and a call to run it. This call shall be issued by the LMS, on request from the user.

NOTE A program_status is defined in 13.4.10. It is used in 13.5.6 to specify whether a program is in source code or compiled.

A representation_reference is associated with a data_protocol. When a supplier library is processed on the library end-user site, processing of a representation_reference shall consist of verifying the availability of the data_protocol and then, if appropriate, converting the content to another format, for instance the native format of the library end-user LMS.

DB-3.3 Support of user dialogue

A LMS shall be able to display various informative items that may be either graphic or textual. To enable an automatic integration of a supplier library in a user library, these informative items shall come from the library data supplier. These informative items are modelled as dialogue_resources.

dialogue_resource is a subtype of a class_extension_external_item. It represents a piece of information that shall be automatically displayed by the LMS in some particular work contexts. It can be either graphic, an illustration, or textual, a message. A dialogue_resource may be provided in more than one language and it may consist of several library external files.

DB-3.4 Http files storage

One particular data_protocol that may be supported by a library integrated information model or a view exchange protocol is the http protocol. This external_file_protocol is modelled by the

225 CWA 15556-2:2006 (E) http_protocol entity. Library external files that are associated with the http_protocol are modelled as http_files. A http_file is associated, in particular, with a http_file_name_type, that specifies the name that shall be associated to this file on the user local Internet server (see clause 5.6.2), and with an oprtional http_class_directory that specifies the name of the directory where this file shall be stored on the user local Internet server. Each http_class_directory refers to one class and each class that is associated with http_files is referenced by exactly one http_class_directory.

The rule in the following subclause shall be satisfied by any LMS implementation that claims conformance to ISO 13584.

Http_file storage rule

All the class_extension_external_items delivered by one particular library data supplier as http_files shall be stored in a directory hierarchy that contains only two levels:

— the root of this hierarchy is a directory whose name is the supplier_code of this library data supplier. An implementation is allowed to abbreviate the directory names if the software does not support the length specified in ISO 13584:42 for supplier_code for naming directories;

NOTE 1 The length specified in ISO 13584-42 for supplier_code is 70 characters.

NOTE 2 The methods of abbreviating names for the root directories associated with the various library data suppliers are not specified in this International Standard and may be implementation dependent.

— each leaf of this hierarchy is a directory whose name is defined by the name attribute of the http_class_directory entity that represents the directory to be created in the user file management system in the library delivery file; the class associated with the directory is defined by the class attribute of the http_class_directory entity that represents it.

This rule ensures that when several http_files associated with the same supplier library are delivered by a library data supplier, the library data supplier knows the file names and the directory structure on the user local Internet server. Therefore the library data supplier may define hyperlinks between these http_files.

This rule does not apply to http_files representing property_value_external_item the storage of which shall be implementation dependant.

DB-3.5 Hyper-text link usage

The following requirements shall be fulfilled by any library data supplier who wants to define hypertext links between several http_files provided as library external files in a library exchange context.

All the hypertext links between http_files provided as library external files in a library exchange context shall be identified by relative URL. These relative URLs shall be based on the assumption that the http_files are stored on the user local Internet server according to the http-file storage rule defined in the previous subclause.

NOTE The concept of user local Internet server is discussed in 5.6.2.

DB-3.6 Escape mechanism from document navigation to data retrieval and selection

A Library Management System that supports a library integrated information model or a view exchange protocol that enables the use of the http_protocol for library external files may provide two different ways for consulting a library content, for choosing a part family and for selecting a part within its family:

— a document oriented navigation, where the user follows the hypertext links to navigate from class- associated documents to class-associated documents, and selects the target classes or selects one part that is one instance of some class, and

226 CWA 15556-2:2006 (E)

— a database oriented navigation, where the user queries the data repository to retrieve a class and/or to select a part that fulfils some particular requirements.

An escape mechanism proves a useful means for a library end-user to express that he/she wants to switch from a document-oriented navigation to a database oriented navigation.

The Common Gateway Interface access rules specified in the next subclause enables the library data supplier to provide a capability for a library end-user to specify that he/she wants to switch from a document-oriented navigation to a database oriented navigation.

The Common Gateway Interface implementation rule (see clause 13.2.8) specifies how an ISO 13584-conformant implementation shall support these capabilities.

DB-3.7 Common Gateway Interface access

When the library data supplier wants to enable the library end-user to switch from a document accessed through document navigation to data retrieval and selection by selecting an hypertext link contained in the document, the rules in the following subclauses shall be satisfied.

Common Gateway Interface access rule 1

To indicate that the library end-user should be set in database oriented navigation, and that the context of this database oriented navigation should be the current context of the database oriented navigation before the user starts document oriented navigation, the library data supplier shall define the http_file in such a way that the two strings: HTTP-Version and lms-URI are issued by the local Internet client of the library end-user. These two strings are expressed formally, in EBNF, as:

HTTP-Version = "HTTP/1.1"

lms-URI = "/cgi-bin/lms"

These two strings shall be separated by a linear white space lws:

lws = [ ] 1*( | )

NOTE 1 The notational conventions used in ABNF are defined in clause 2 of IAB RFC 1808. They are summarised for convenience in the informative annex T.

NOTE 2 When this hyperlink is selected and the user did not initiate any database oriented navigation, the context of the database oriented navigation is the initial context of such a navigation.

Common Gateway Interface access rule 2

To indicate that the library end-user should be set in a database oriented navigation, and that the context of this database oriented navigation should be the context of selecting an instance in one particular class of which the selection results from the previous document-oriented navigation, the library data supplier shall define the http_file in such a way that the relative URL class-URI is issued by the local Internet client of the library end-user. This string is expressed formally, in EBNF, as:

class-URI = HTTP-Version lws "GET" lws "/cgi-bin/cl-sel?" class_id

NOTE The syntax of relative URL is defined in clause 2 of of IAB RFC 1808. The notational conventions used in ABNF are defined in clause 2 of IAB RFC 1808. Both are summarised for convenience in the informative annex T.

class_id shall be an URL-encoded string expressed formally, in EBNF, as:

class_id = "SUPPLIER" "=" supplier_code "&" "CLASS" "=" class_dic_identifier

227 CWA 15556-2:2006 (E)

The following rules and restrictions shall apply:

— The supplier_code shall be the code of the library data supplier referenced by the defined_by attribute of the class_BSU that corresponds to the class_dic_identifier class.

— The class_dic_identifier shall be the value of the dic_identifier attribute of the class in which context the user shall be set, and this class shall be defined as an item_class dictionary_definition.

Common Gateway Interface access rule 3

To indicate that the library end-user should be set in a database-oriented navigation, and that some particular instance of some particular class shall be created by the LMS, the library data supplier shall define the http-file in such a way that the relative URL instance-URI is issued by the local Internet client of the library end-user. This string is expressed formally, in EBNF, as:

instances-URI = HTTP-Version lws "GET" lws "/cgi-bin/ins-sel?" instance_id

NOTE 1 The syntax of relative URL is defined in clause 2 of IAB RFC 1808. The notational conventions used in ABNF are defined in clause 2 of IAB RFC 1808. Both are summarised for convenience in the informative annex T.

instance_id shall be a URL-encoded string expressed formally, in EBNF, as:

instance_id = "SUPPLIER" "=" supplier_code "&" "CLASS" "=" class_dic_identifier *( "&" property_value)

property_value = property_dic_identifier "=" value

value = simple_value | class_instance_value | "$"

class_instance_value = "(" instance_id ")"

simple_value = string_value |translated_string_value | integer_value | real_value | Boolean_value

The following rules and restrictions shall apply:

— The supplier_code shall be the code of the library data supplier referenced by the defined_by attribute of the class_BSU that corresponds to the class_dic_identifier class.

— Each class_dic_identifier shall be the value of the dic_identifier attribute of a class defined by the preceding supplier.

— Each class_dic_identifier class shall be associated with an item_class_extension or an explicit_item_class_extension in the integrated user library.

— The property_dic_identifier shall be the value of the dic_identifier attribute of a property that corresponds to one of the property_BSUs returned by the gm_identification_characteristics_list function applied to the class_BSU that corresponds to the preceding class_dic_identifier class.

— Every property_BSU returned by the gm_identification_characteristics_list function applied to the class_BSU that corresponds to the preceding class_dic_identifier class shall correspond to exactly one property_dic_identifier in the list of property_value that immediately follows class_dic_identifier.

— Only property_dic_identifiers that correspond to property_BSUs belonging to the LIST of property_BSUs returned by the optional_properties_list function applied to the class_BSU that corresponds to the preceding class_dic_identifier class may have a value that is the "$" character.

228 CWA 15556-2:2006 (E)

— Each value that is a translated_string_value shall be the URL-encoded string of the value representation defined in ISO 10303-21 for the string that is the first one of the string_values attribute of the corresponding translated_string_value.

— Each value that is another type of simple_value shall be the URL-encoded string of the value representation defined for string, integer, real and Boolean in ISO 10303-21.

— The data type of the value of a property_value that is a simple_value shall be compatible with the data_type of the property_BSU that corresponds to the property_dic_identifier of this property_value.

NOTE 2 The data_type of a property_BSU is defined by the domain attribute of the property_DET associated with this property_BSU. These resource constructs are defined in the ISO13584_IEC61360_dictionary_schema documented in IEC61360-2 and quoted in an informative annex of ISO 13584-42.

NOTE 3 Compatibility between simple_value and the data_type of a property_BSU is defined by the compatible_type_and_value function of the ISO13584_instance_resource_schema, documented in clause 6 of this part of ISO 13584;

— The "CLASS" class referenced in the class_instance_value of a property_value shall correspond to a class_BSU that is compatible with the class_BSU that defines the data_type of the property_BSU that corresponds to the property_dic_identifier of this property_value.

NOTE 4 Compatibility between two class_BSU is defined by the compatible_class_and_class function documented in clause 6 of this part of ISO 13584.

DB-3.8 Common Gateway Interface implementation rule

An ISO 13584 implementation that claims conformance to some library integrated information model or view exchange protocol that supports the http_protocol as an external_file_protocol shall recognise the three following relative URLs on the user local Internet server:

— /cgi-bin/lms

— /cgi-bin/cl-sel

— /cgi-bin/ins-sel

The interpretation of these relative URLs by the local Internet server shall have the effect to set the library end-user in database oriented navigation. The interpretation of the possible string that might follow a question mark ("?") after the two last relative URLs specified above is not mandatory. If this string is interpreted, the effect shall be to set the library end-user in the selection context specified in the previous subclause.

DB-4 ISO13584_external_file_schema constant definitions

DB-4.1 Compiler_version_length

The compiler_version_length is the maximum length of a compiler_version_type.

EXPRESS specification:

*) CONSTANT compiler_version_length: INTEGER := 9; (*

229 CWA 15556-2:2006 (E)

DB-4.2 External_file_address_length

The external_file_address_length is the maximum length of an external_file_address.

NOTE 1 This length conforms to ISO 9075. This restriction intends to facilitate development of ISO 13584 LMSs that use existing relational database technology.

NOTE 2 This part of ISO 13584 does not specify the technology to be used for developing ISO 13584-conforming implementations.

EXPRESS specification:

*) external_file_address_length: INTEGER := 18; (*

DB-4.3 External_item_code_length

The external_item_code_length is the maximum length of an external_item_code_type.

EXPRESS specification:

*) external_item_code_length: INTEGER := 128; (*

DB-4.4 Http_file_name_length

The http_file_name_length is the maximum length of an http_file_name_type.

NOTE Validity of supplier-defined multifiles hypertext links requires that supplier-defined file names and supplier-defined directory names keep their values on the user file management system.

EXPRESS specification:

*) http_file_name_length: INTEGER := 128; (*

DB-4.5 Http_directory_name_length

The http_directory_name_length is the maximum length of an http_directory_name_type.

NOTE Validity of supplier-defined multifiles hypertext links requires that supplier-defined file names and supplier-defined directory names keep their values on the user file management system.

EXPRESS specification:

*) http_directory_name_length: INTEGER := 128; END_CONSTANT; (*

230 CWA 15556-2:2006 (E)

DB-5 ISO13584_external_file_schema type definitions

DB-5.1 External_file_address

An external_file_address is the physical address of an external file.

EXPRESS specification:

*) TYPE external_file_address = identifier; WHERE WR1: LENGTH(SELF) <= external_file_address_length; WR2: NOT(SELF LIKE '* *'); END_TYPE; -- external_file_address (*

Formal propositions:

WR1: the length of file name shall be less or equal to external_file_address_length.

WR2: the name shall not contain any space.

DB-5.2 External_item_code_type

The external_item_code_type is the code that identifies a class_extension_external_item.

EXPRESS specification:

*) TYPE external_item_code_type = identifier; WHERE WR1: LENGTH(SELF) <= external_item_code_length; WR2: NOT(SELF LIKE '* *'); END_TYPE; -- external_item_code_type (*

Formal propositions:

WR1: the length of file name shall be less or equal to external_item_code_length.

WR2: the name shall not contain any space.

DB-5.3 Http_file_name_type

The http_file_name_type is the type of the name of an http_file. This name is intended to be preserved in the user integrated library.

EXPRESS specification:

*) TYPE http_file_name_type = identifier; WHERE WR1: LENGTH(SELF) <= http_file_name_length;

231 CWA 15556-2:2006 (E)

WR2: NOT(SELF LIKE '* *'); WR3: NOT(SELF LIKE '*.*.*'); WR4: ((NOT(SELF LIKE '*.*')) AND (LENGTH(SELF) <= http_file_name_length - 4)) OR ((SELF LIKE '*.?') AND (LENGTH(SELF) <= http_file_name_length - 2)) OR ((SELF LIKE '*.??') AND (LENGTH(SELF) <= http_file_name_length - 1)) OR (SELF LIKE '*.???'); END_TYPE; -- http_file_name_type (*

Formal propositions:

WR1: the length of file name shall not be greater than http_file_name_length.

WR2: the name shall not contain any space.

WR3: the name shall not contain more than one dot (".").

WR4: the name may contain a file extension that consists of one, two or three characters and a name that contains no more than eight characters.

DB-5.4 Http_directory_name_type

The http_directory_name_type is the type of the name of an http_class_directory. This name is intended to be preserved in the user integrated library.

EXPRESS specification:

*) TYPE http_directory_name_type = identifier; WHERE WR1: LENGTH(SELF) <= http_directory_name_length; WR2: NOT(SELF LIKE '* *'); END_TYPE; -- http_directory_name_type (*

Formal propositions:

WR1: the length of the directory name shall not be greater than http_directory_name_length.

WR2: the name shall not contain any space.

DB-5.5 MIME_type

The MIME_type is an identifier registered as MIME type by IANA.

EXPRESS specification:

*) TYPE MIME_type = identifier; WHERE WR1: NOT(SELF LIKE '* *');

232 CWA 15556-2:2006 (E)

END_TYPE; -- MIME_type (*

Formal propositions:

WR1: the name shall not contain any space.

Informal propositions:

IP1: the MIME_type value shall be an identifier registered as MIME type by IANA and its content shall be identical to the string contained in ftp://ftp.isi.edu/in-notes/iana/assignments/, after removing the space characters if there are some.

DB-5.6 MIME_subtype

The MIME_subtype is an identifier registered as MIME subtype by IANA.

EXPRESS specification:

*) TYPE MIME_subtype = identifier; WHERE WR1: NOT(SELF LIKE '* *'); END_TYPE; -- MIME_subtype (*

Formal propositions:

WR1: the name shall not contain any space.

Informal propositions:

IP1: the MIME_subtype value shall be an identifier registered as MIME subtype by IANA and it content shall be identical to the string contained in ftp://ftp.isi.edu/in-notes/iana/assignments/, after removing the space characters if there are some.

DB-5.7 IAB_RFC

An IAB_RFC is an integer that identifies an RFC from the IAB.

EXPRESS specification:

*) TYPE IAB_RFC = INTEGER; WHERE WR1: SELF > 0; END_TYPE; -- IAB_RFC (*

Formal propositions:

WR1: the IAB_RFC value shall be positive.

233 CWA 15556-2:2006 (E)

Informal propositions:

IP1: the IAB_RFC value shall be the identifier of a RFC belonging to the Standard Track of the IAB.

DB-5.8 Character_set_type

The character_set_type is the type of the character set encoding of a library external file that contains characters.

EXPRESS specification:

*) TYPE character_set_type = identifier; END_TYPE; -- character_set_type (*

Informal propositions:

IP1: the character_set_type shall be the identifier of a character-set encoding registered in IAB RFC 1700 or, possibly, in an IAB RFC that updates IAB RFC 1700.

DB-5.9 Content_encoding_type

The content_encoding_type is the type that specifies what sort of encoding transformation the content of a library external file was subjected to and hence what decoding operation must be used to restore it to its original form, and it specifies what the domain of the result is. The allowed encodings are those defined by IAB RFC 2045. They are referenced by the same name as the ones defined in IAB RFC 2045.

NOTE File encoding might prove necessary during the exchange of a supplier library, whether this exchange is done by means of some network or not. These files might be decoded during the integration of a supplier library into the user library. Thus, their content_encoding_type value might be modified during this integration.

EXPRESS specification:

*) TYPE content_encoding_type = identifier; WHERE WR1: (SELF = '7bit') OR (SELF = '8bit') OR (SELF = 'binary') OR (SELF = 'quoted-printable') OR (SELF = 'base64'); END_TYPE; -- content_encoding_type (*

Formal propositions:

WR1: the encoding shall be one of the encodings defined in IAB RFC 2045.

DB-5.10 Program_status

A program_status is the type that defines the status of a program provided as a library external file. Programs provided through external files can be either compiled or represented in a source code language intended to be either interpreted or compiled.

EXAMPLE 1 FORTRAN programs delivered as object code are examples of compiled programs.

234 CWA 15556-2:2006 (E)

EXAMPLE 2 Parametric models delivered as data model entities are examples of source code programs.

EXPRESS specification:

*) TYPE program_status = ENUMERATION OF(source, compiled); END_TYPE; -- program_status (*

DB-5.11 Program_reference_name_type

The program_reference_name_type is the type of a syntactical name of a program.

NOTE View exchange protocols that enable the use of program_references precise the role associated with the identifiers that define the syntactical names of programs.

EXPRESS specification:

*) TYPE program_reference_name_type = identifier; END_TYPE; -- program_reference_name_type (*

DB-5.12 Compiler_version_type

The compiler_version_type is the version associated with a compiler.

NOTE Only restricted patterns of identifiers are allowed.

EXPRESS specification:

*) TYPE compiler_version_type = identifier; WHERE WR1: LENGTH(SELF) <= compiler_version_length; WR2: control_compiler_version_format(SELF); END_TYPE; -- compiler_version_type (*

Formal propositions:

WR1: the length of the identifier representing the version shall be less than or equal to version_len that specifies the length of a version in the ISO13584_IEC61360_dictionary_schema.

NOTE The ISO13584_IEC61360_dictionary_schema is defined in IEC 61360-2. It is duplicated for convenience in informative annex D of Part ISO 13584-42.

WR2: the compiler version shall contain only digits, dots, or underscores.

DB-5.13 Illustration_type

An illustration_type is the type that categorises the content of an illustration. It may be a schematic drawing, a realistic picture, or any other informative element that is not a static picture and whose format may be defined by a data_protocol.

235 CWA 15556-2:2006 (E)

EXAMPLE 1 A movie is an illustration content that is not a static picture.

EXAMPLE 2 A sound is an illustration content that is not a static picture.

NOTE The categorisation of the contents of the illustrations provided in a supplier library may be used, for instance, when creating "on the fly" an HTML view of the supplier library.

EXPRESS specification:

*) TYPE illustration_type = ENUMERATION OF( schematic_drawing, realistic_picture, not_static_picture); END_TYPE; -- illustration_type (*

DB-6 ISO13584_external_file_schema entity definitions: external_file_protocols

This clause defines the requirements for the external_file_protocols. An external_file_protocol entity allows to specify how information provided as external files shall be processed. An external_file_protocol may be either a program_protocol or a data_protocol, and it may be either a standard_protocol or a non_standard_protocol.

NOTE 1 Several different external_file_protocols can be used for the different types of files. Libraries modeled as library_in_standard_formats only use predefined external_file_protocols specified by the library integrated information model and the set of standard view exchange protocols they reference. For general libraries, modeled as library's, it is up to the library data supplier to decide to select any external_file_protocols from international or national Standards (for instance STEP, SGML, SET, IGES or VDA-FS), from proprietary formats (for instance Postscript or EDIF) or from system-specific exchange formats (for instance DXF or CATIA® parametric programs).

NOTE 2 library_in_standard_format and library are defined in the ISO13584_extended_dictionary_schema documented in clause 10.

DB-6.1 External_file_protocol

An external_file_protocol is a protocol that shall be used to process a library external file to process information provided as external files.

EXPRESS specification:

*) ENTITY external_file_protocol ABSTRACT SUPERTYPE OF( (ONEOF(standard_protocol, non_standard_protocol)) ANDOR (ONEOF(program_protocol, data_protocol))); organisation: organization; country: OPTIONAL identifier; protocol_name: identifier; protocol_version: identifier; level: OPTIONAL identifier; designation: item_names; base_protocol: OPTIONAL program_protocol; WHERE WR1: (NOT(SELF.protocol_name LIKE '* *')) AND (NOT(SELF.protocol_name LIKE '*.*')) AND (NOT(SELF.protocol_name LIKE '*-*'));

236 CWA 15556-2:2006 (E)

WR2: NOT(SELF.protocol_version LIKE '* *'); END_ENTITY; -- external_file_protocol (*

Attribute definitions: organisation: the organisation that specified the protocol. country: the country where the organisation that specifies the external_file_protocol has its headquarters.

protocol_name: the identifier specified for the external_file_protocol by the organisation that specified it, without any space, dot or hyphen character. Underscores are to be used as separators.

protocol_version: an identification of the version of the specified external_file_protocol.

level: the possible level associated with the specified external_file_protocol by the organisation that specified it.

designation: the item_names of the external_file_protocol.

NOTE 1 Each view exchange protocol shall specify the external_file_protocols that are recognised by an implementation that claims conformance to this view exchange protocol.

NOTE 2 If more than one level is defined and used in a library, each level is specified by a different external_file_protocol entity.

base_protocol: the program_protocol to which the program libraries referred to are to be linked.

Formal propositions:

WR1: the protocol_name shall not contain neither space, nor dot nor hyphen.

WR2: the protocol_version shall not contain a space.

Informal propositions:

IP1: the label describing a country shall conform to the codes for representation of names of countries defined in ISO 3166.

IP2: the country attribute value shall not exist for the external_file_protocols specified by International Standards.

IP3: the country attribute value shall exist for the external_file_protocols that are not specified by International Standards. It shall conform to ISO 3166.

DB-6.2 Standard_protocol

A standard_protocol is an external_file_protocol specified in a National, or International Standard.

EXPRESS specification:

*) ENTITY standard_protocol ABSTRACT SUPERTYPE OF(ONEOF(standard_simple_program_protocol, standard_data_protocol)) SUBTYPE OF(external_file_protocol);

237 CWA 15556-2:2006 (E)

END_ENTITY; -- standard_protocol (*

Informal propositions:

IP1: the protocol_name identifier shall consist of the acronym of the standardisation organisation followed by the underscore ('_') character, followed by the number of the Standard that specified the external_file_protocol without any space, dot or hyphen character. Underscores shall be used as separators.

IP2: when the standard document that specifies the standard protocol does not explicitly specify a version number for this protocol, the protocol_version shall consist of the version number of the standard document without any leading space or leading zero; the version number of the first release of a standard being '1'.

NOTE The content of the strings defining the standard external_file_protocols that are allowed for use by each library integrated information model or view exchange protocol are defined within the part of ISO 13584 that specifies the corresponding library integrated information model or view exchange protocol.

DB-6.3 Non_standard_protocol

A non_standard_protocol is an external_file_protocol specified by an organisation that is neither a national nor an international standardisation organisation.

EXPRESS specification:

*) ENTITY non_standard_protocol ABSTRACT SUPERTYPE OF(ONEOF(non_standard_simple_program_protocol, non_standard_data_protocol)) SUBTYPE OF(external_file_protocol); END_ENTITY; -- non_standard_protocol (*

NOTE The content of the string defining a non_standard_protocol shall be defined by the company that specified this external_file_protocol.

DB-6.4 Data_protocol

A data_protocol is an external_file_protocol that processes data. It can be either a standard_data_protocol or a non_standard_data_protocol.

EXPRESS specification:

*) ENTITY data_protocol ABSTRACT SUPERTYPE OF(ONEOF(standard_data_protocol, non_standard_data_protocol)) SUBTYPE OF(external_file_protocol); END_ENTITY; -- data_protocol (*

238 CWA 15556-2:2006 (E)

DB-6.5 Program_protocol

A program_protocol is an external_file_protocol that processes programs, i.e., algorithms that shall be triggered to generate data. It can be either a linked_interface_program_protocol or a simple_program_protocol.

EXPRESS specification:

*) ENTITY program_protocol ABSTRACT SUPERTYPE OF(ONEOF( linked_interface_program_protocol, simple_program_protocol)) SUBTYPE OF(external_file_protocol); END_ENTITY; -- program_protocol (*

DB-6.6 Simple_program_protocol

A simple_program_protocol is an external_file_protocol that processes programs.

NOTE 1 If it is required to deliver compiled programs, it is up to the library data supplier to define the compiler_name identifier and the value of compiler_version that enables portability of the object code.

NOTE 2 Exchange of compiled programs are subject to prior agreement between the library data supplier and the library user.

EXPRESS specification:

*) ENTITY simple_program_protocol ABSTRACT SUPERTYPE OF(ONEOF(standard_simple_program_protocol, non_standard_simple_program_protocol)) SUBTYPE OF(program_protocol); language: identifier; status: program_status; compiler_supplier: OPTIONAL organization; compiler_name: OPTIONAL identifier; compiler_version: OPTIONAL compiler_version_type; WHERE WR1: ((SELF.status = source) AND (NOT(EXISTS(SELF.compiler_supplier))) AND (NOT(EXISTS(SELF.compiler_name))) AND (NOT(EXISTS(SELF.compiler_version)))) OR ((SELF.status = compiled) AND (EXISTS(SELF.compiler_supplier)) AND (EXISTS(SELF.compiler_name)) AND (EXISTS(SELF.compiler_version)));

END_ENTITY; -- simple_program_protocol (*

239 CWA 15556-2:2006 (E)

Attribute definitions: language: an identifier that specifies the associated programming language. status: the status of the program, if it is compiled or in source language. compiler_supplier: the organisation who provides the compiler used. compiler_name: the identifier of the compiler, as specified by the library data supplier. compiler_version: the version of the compiler used, as specified by the library data supplier.

Formal propositions:

WR1: if the status of the program is source, there shall not exist a compiler_name, nor a compiler_version nor a compiler_supplier. If the status of the program is compiled, there shall exist a compiler_name, a compiler_supplier and a compiler_version.

DB-6.7 Standard_simple_program_protocol

A standard_simple_program_protocol is a program protocol specified by a standardisation organisation.

EXPRESS specification:

*) ENTITY standard_simple_program_protocol SUBTYPE OF(standard_protocol, simple_program_protocol); WHERE WR1: NOT EXISTS(SELF\external_file_protocol.base_protocol); END_ENTITY; -- standard_simple_program_protocol (*

Formal propositions:

WR1: the base_protocol shall not be defined.

DB-6.8 Non_standard_simple_program_protocol

A non_standard_simple_program_protocol is a program protocol that is not specified by a standardisation organisation.

EXPRESS specification:

*) ENTITY non_standard_simple_program_protocol

SUBTYPE OF(non_standard_protocol, simple_program_protocol); WHERE WR1: NOT EXISTS(SELF\external_file_protocol.base_protocol); END_ENTITY; -- non_standard_simple_program_protocol (*

240 CWA 15556-2:2006 (E)

Formal propositions:

WR1: the base_protocol shall not be defined.

DB-6.9 Linked_interface_program_protocol

A linked_interface_program_protocol entity is a program_protocol that consists of a base program_protocol that shall be linked with libraries of programs. This entity provides for defining a new program_protocol where the supplier programs may reference not only the functions of the base program_protocol but also the functions defined in these libraries of programs. These libraries are either delivered in the library exchange context, or referenced.

NOTE The status of the programs associated with a linked_interface_program_protocol is defined by the simple_program_protocol on which it is based.

EXPRESS specification:

*) ENTITY linked_interface_program_protocol SUBTYPE OF(program_protocol); link_libraries: SET [1:?] OF program_library_BSU; WHERE WR1: QUERY(pl <* SELF.link_libraries | (SIZEOF(pl\basic_semantic_unit.referenced_by) > 0) AND (pl\basic_semantic_unit.referenced_by[1] \external_item.used_protocol <> SELF.base_protocol)) = []; WR2: NOT('ISO13584_EXTERNAL_FILE_SCHEMA.STANDARD_PROTOCOL' IN TYPEOF(SELF)) AND NOT('ISO13584_EXTERNAL_FILE_SCHEMA.NON_STANDARD_PROTOCOL' IN TYPEOF(SELF)); WR3: EXISTS(base_protocol) AND ('ISO13584_EXTERNAL_FILE_SCHEMA.PROGRAM_PROTOCOL' IN TYPEOF(base_protocol)); END_ENTITY; -- linked_interface_program_protocol (*

Attribute definitions: link_libraries: the set of program libraries that need to be linked with the base_protocol to build up the referred linked_interface_program_protocol.

Formal propositions:

WR1: the base_protocol shall be the program_protocol to which each program library is associated in its program_library_content definition.

WR2: the linked_interface_program_protocol shall not be a standard_protocol nor a non_standard_protocol.

WR3: the base_protocol attribute shall be defined, and it shall be a program_protocol.

DB-6.10 Standard_data_protocol

A standard_data_protocol entity is a data protocol specified by a standardisation organisation.

241 CWA 15556-2:2006 (E)

EXPRESS specification:

*) ENTITY standard_data_protocol SUBTYPE OF(data_protocol, standard_protocol); WHERE WR1: NOT EXISTS(SELF\external_file_protocol.base_protocol); END_ENTITY; -- standard_data_protocol (*

Formal propositions:

WR1: the base_protocol shall not be defined.

DB-6.11 Non_standard_data_protocol

A non_standard_data_protocol is a data_protocol specified by a private company.

EXPRESS specification:

*) ENTITY non_standard_data_protocol SUBTYPE OF(data_protocol, non_standard_protocol); WHERE WR1: NOT EXISTS(SELF\external_file_protocol.base_protocol); END_ENTITY; -- non_standard_data_protocol (*

Formal propositions:

WR1: the base_protocol shall not be defined.

DB-6.12 Http_protocol

An http_protocol is a data_protocol specified by a RFC registered as standard by the IAB.

EXPRESS specification:

*) ENTITY http_protocol SUBTYPE OF(standard_data_protocol); http_RFC: IAB_RFC; END_ENTITY; -- http_protocol (*

Attribute definitions: http_RFC: the number of the RFC registered as standard by the IAB that specifies the used version of the http protocol.

242 CWA 15556-2:2006 (E)

Informal propositions:

IP1: the name of the protocol shall be the http protocol or one of its specialisation or updating as defined by the authorisation in charge the Internet protocols.

EXAMPLE The https protocol is a specialization of the http protocol.

NOTE The current authority in charge of the http protocol is the Internet Engineering Task Force.

DB-7 ISO13584_external_file_schema entity definitions: dictionary external items

This subclause specifies the different items supplied by means of library external files and identified by a basic_semantic_unit. They can be either program libraries, or documents.

NOTE Basic_semantic_unit is defined in the common ISO/IEC dictionary schema documented in IEC 61360-2 and quoted in ISO 13584-42.

These external_items are dictionary_external_items: they are associated with a dictionary_element and are referred to by the BSU mechanism defined in the ISO/IEC common dictionary schema.

DB-7.1 External_item

An external_item entity is any item whose content may be provided as library external file(s). It refers to an external_file_protocol that specifies how the library external file(s) shall be processed, and to an external_content that specifies the library external file(s) that represents its content. This abstract resource shall be subtyped when an external_item is used in order to specify the meaning of this external_item.

EXPRESS specification:

*) ENTITY external_item ABSTRACT SUPERTYPE OF(ONEOF(dictionary_external_item, class_extension_external_item, property_value_external_item)); used_protocol: external_file_protocol; content: external_content; END_ENTITY; -- external_item (*

Attribute definitions: used_protocol: the external_file_protocol that specifies how the library external file(s) shall be processed. content: the library external file(s) that represent the external_item content.

DB-7.2 Dictionary_external_item

A dictionary_external_item entity is any external_item that is identified by a basic_semantic_unit and that may be referred to by the BSU mechanism defined in the ISO/IEC common dictionary schema. A dictionary_external_item may be updated alone. It has a revision that characterises the updating.

243 CWA 15556-2:2006 (E)

NOTE 1 A basic_semantic_unit also has a version number that is part of its identification.

EXPRESS specification:

*) ENTITY dictionary_external_item ABSTRACT SUPERTYPE OF(ONEOF(supplier_BSU_related_content, class_BSU_related_content)) SUBTYPE OF(content_item, external_item); revision: revision_type; END_ENTITY; -- dictionary_external_item (*

Attribute definitions: revision: the revision_type that characterises the updating of the dictionary_external_item.

Informal propositions:

IP1: revision numbers shall be issued in ascending order for each value of the version of a basic_semantic_unit.

IP2: a new revision number of a dictionary_external_item shall be defined when a change in the external_content that describes this dictionary_external_item influences neither its meaning nor its use.

NOTE 2 This informal proposition states that when updating a library an old revision may be replaced by a new one without any consequence on the functional behaviour of the integrated library.

DB-7.3 Supplier_BSU_related_content

A supplier_BSU_related_content entity is a dictionary_external_item whose basic_semantic_unit is a supplier_related_BSU.

EXPRESS specification:

*) ENTITY supplier_BSU_related_content ABSTRACT SUPERTYPE OF(program_library_content) SUBTYPE OF(dictionary_external_item); SELF\content_item.dictionary_definition: supplier_related_BSU; END_ENTITY; -- supplier_BSU_related_content (*

Attribute definitions:

SELF\content_item.dictionary_definition: the supplier_related_BSU that identifies the dictionary_external_content.

DB-7.4 Program_library_content

A program_library_content is the content of a program library. It refers to a program_protocol that specifies how it shall be processed. It is identified by a program_library_BSU.

244 CWA 15556-2:2006 (E)

EXPRESS specification:

*) ENTITY program_library_content SUBTYPE OF(supplier_BSU_related_content); SELF\content_item.dictionary_definition: program_library_BSU; SELF\external_item.used_protocol: program_protocol; END_ENTITY; -- program_library_content (*

Attribute definitions:

SELF\content_item.dictionary_definition: the program_library_BSU that identifies the program_library_content.

SELF\external_item.used_protocol: the program_protocol that specifies how the program_library_content shall be processed.

Informal propositions:

IP1: all the revisions that correspond to the same program_library_BSU version shall use the same program_protocol and shall contain a set of programs that provide the same referencable specifications. The only permitted changes are those that affect the bodies of these programs, or the programs that are used internally in the bodies of the referencable programs.

NOTE This informal proposition states that when updating a library, an old revision may be replaced by a new one without any consequence on the functional behaviour of the integrated library.

DB-7.5 Class_BSU_related_content

A class_BSU_related_content entity is a dictionary_external_item whose basic_semantic_unit is a class_related_BSU.

EXPRESS specification:

*) ENTITY class_BSU_related_content ABSTRACT SUPERTYPE OF(document_content) SUBTYPE OF(dictionary_external_item); SELF\content_item.dictionary_definition: class_related_BSU; END_ENTITY; -- class_BSU_related_content (*

Attribute definitions:

SELF\content_item.dictionary_definition: the class_related_BSU that identifies the dictionary_external_content.

DB-7.6 Document_content

A document_content is the content of a document. It refers to a data_protocol that specifies how it shall be processed. It is identified by a document_BSU.

245 CWA 15556-2:2006 (E)

EXPRESS specification:

*) ENTITY document_content SUBTYPE OF(class_BSU_related_content); SELF\content_item.dictionary_definition: document_BSU; SELF\external_item.used_protocol: data_protocol; END_ENTITY; -- document_content (*

Attribute definitions:

SELF\content_item.dictionary_definition: the document_BSU that identifies the document_content.

SELF\external_item.used_protocol: the data_protocol that specifies how the document_content shall be processed.

Informal propositions:

IP1: all the revisions that correspond to the same document_BSU version shall have a content that corresponds to the same document_element dictionary_definition. The changes identified by different revisions can be typo corrections, addition of new translations or change of the protocol to be used to process the document_content.

DB-8 ISO13584_external_file_schema entity definition: class extension external items

This subclause specifies the different items that are supplied by means of library external files and that are part of the extension of a class. They can be representations, programs or dialogue resources.

Programs, representations and dialogue resources are class_extension_external_items. They are referred to directly by the model_class_extensions they belong to through their entity name. They shall be updated as a whole when a new release of the model_class_extension is delivered.

The following planning model outlines the structure of the different categories of class_extension_external_items.

NOTE This planning model uses the EXPRESS-G graphical notation for the EXPRESS language, but, for clarification of the diagram, some of the relationships that are defined in the EXPRESS model are omitted, and some inter-schema references are not represented.

246 CWA 15556-2:2006 (E)

used_protocol external_item content

ISO13584_library_extension_ class_extension_external_item INV schema.model_class_extension belongs_to 1

representation program dialogue _reference _reference _resource

1

illustration message

1

A6_illustration A9_illustration

Figure 2 — Class_extension_external_items planning model DB-8.1 Class_extension_external_item

A class_extension_external_item entity is any external_item that is part of the content of a model_class_extension. A class_extension_external_item is not associated with a BSU. It has neither version nor revision. It belongs to only one model_class_extension and it is intended to be updated as a whole when a new release of the model_class_extension is delivered. It is associated with an external_item_code_type that shall be unique for the model_class_extension to which it belongs.

EXPRESS specification:

*) ENTITY class_extension_external_item ABSTRACT SUPERTYPE OF(ONEOF(dialogue_resource, representation_reference, program_reference)) SUBTYPE OF(external_item); code: external_item_code_type; INVERSE belongs_to: model_class_extension FOR referenced_external_items; UNIQUE UR1: code, belongs_to; END_ENTITY; -- class_extension_external_item (*

Attribute definitions: code: the external_item_code_type that identifies the class_extension_external_item in its class. belongs_to: the model_class_extension to which the class_extension_external_item belongs.

247 CWA 15556-2:2006 (E)

Formal propositions:

UR1: the code shall be unique for the model_class_extension to which the class_extension_external_item belongs.

DB-8.2 Representation_reference

A representation_reference is a reference to a representation of a library item whose content is provided as part of library external file(s). In the library delivery file, the representation_reference enables to refer to this representation.

The representation_reference contains an optional attribute, called representation_id, that enables to specify one particular element of the external_content associated with representation_reference. The nature of the external description and the role of the representation_id shall be specified by the data_protocol referenced by the representation_reference.

EXAMPLE The target of a representation_reference may be a product representation defined in a file conformant with some ISO 10303 Application Protocol. In this case, the representation_id might be defined by the data_protocol that enables to reference such a file, as the label assigned to an EXPRESS entity instance of this file by an external_referent_assignment entity.

NOTE The information model of a representation is defined in ISO 10303-43. The information model of an external_referent_assignment and label are defined in ISO 10303-41.

EXPRESS specification:

*) ENTITY representation_reference SUBTYPE OF(class_extension_external_item); SELF\external_item.used_protocol: data_protocol; representation_id: OPTIONAL label; END_ENTITY; -- representation_reference (*

Attribute definitions:

SELF\external_item.used_protocol: the data_protocol that needs to be used to process the external file(s) that contains the referenced representation. representation_id: the possible label that corresponds to the referenced representation in the external_content that corresponds to the representation_reference program_reference.

DB-8.3 Program_reference

A program_reference entity is a reference to an algorithm whose contents is provided as library external file(s). This algorithm shall be triggered to generate one representation of an item of an item_class. A program_reference provides the information about the program name and parameters.

NOTE The allowed types for parameters and the allowed syntactical names for programs shall be specified in the view exchange protocols that use this resource construct.

EXPRESS specification:

*) ENTITY program_reference SUBTYPE OF(class_extension_external_item);

248 CWA 15556-2:2006 (E)

SELF\external_item.used_protocol: program_protocol; syntactical_name: program_reference_name_type; in_parameters: LIST [0:?] OF property_or_data_type_BSU; out_parameters: LIST [0:?] OF property_or_data_type_BSU; inout_parameters: LIST [0:?] OF property_or_data_type_BSU; END_ENTITY; -- program_reference (*

Attribute definitions:

SELF\class_extension_external_item.used_protocol: the program_protocol that needs to be used to process the external file(s). syntactical_name: the name by which the program shall be triggered. in_parameters: the list of property_or_data_type_BSUs that specifies the types of the input parameters of the referenced program. out_parameters: the list of property_or_data_type_BSUs that specifies the types of the output parameters of the referenced program. inout_parameters: the list of property_or_data_type_BSUs that specifies the types of the inout parameters of the referenced program.

DB-8.4 Dialogue_resource

A dialogue_resource is an informative item intended to be automatically displayed by the LMS in some given work contexts.

EXPRESS specification:

*) ENTITY dialogue_resource ABSTRACT SUPERTYPE OF(ONEOF(message, illustration)) SUBTYPE OF(class_extension_external_item); SELF\external_item.used_protocol: data_protocol; END_ENTITY; -- dialogue_resource (*

Attribute definitions:

SELF\class_extension_external_item.used_protocol: the data_protocol that needs to be used to process the external file.

DB-8.5 Message

A message is a text that shall be short, typically up to 256 characters, and that shall be automatically displayed on the screen by the user library management system within a clearly defined work context. A message is not associated with any particular window dimension. It may be provided in different languages and shall be processed through a certain data_protocol.

EXPRESS specification:

*) ENTITY message

249 CWA 15556-2:2006 (E)

SUBTYPE OF(dialogue_resource); END_ENTITY; -- message (*

DB-8.6 Illustration

An illustration is an informative item that is not a simple textual message. It may be a schematic drawing, a realistic picture, or any other informative element that is not a static picture and whose format may be defined by a data_protocol. It may be associated with an idea of window dimension that is intended to be filled when the illustration is displayed in a certain context. Two subtypes of illustration, the dimension of which are specified, exist.

NOTE 1 The role of an illustration in a supplier library is defined by the entity that references it. For example, it may be automatically displayed on the screen by the LMS within a clearly defined work context.

NOTE 2 An illustration is a specialisation of a graphics entity defined in ISO 13584-42. Another specialisation of a graphics entity is a referenced_graphics defined in the ISO13584_extended_dictionary_schema. The illustration_is_not_a_referenced_graphics_rule ensures that both subtypes are incompatible.

EXPRESS specification:

*) ENTITY illustration SUPERTYPE OF(ONEOF(A6_illustration, A9_illustration)) SUBTYPE OF(dialogue_resource, graphics); kind_of_content: illustration_type; width: OPTIONAL length_measure_with_unit; height: OPTIONAL length_measure_with_unit; WHERE WR1: (NOT EXISTS(SELF.width) AND NOT EXISTS(SELF.height)) OR (EXISTS(SELF.width) AND EXISTS(SELF.height)); END_ENTITY; -- illustration (*

Attribute definitions: kind_of_content: categorisation of the illustration content according to the taxonomy defined by the illustration_type data type. width: the width of the window recommended by the library data supplier for viewing the illustration.

height: the height of the window recommended by the library data supplier for viewing the illustration.

Formal propositions:

WR1: either both width and height shall exist, or none of these attributes shall exist.

DB-8.7 A6_illustration

An A6_illustration is an illustration of which the library data supplier ensures that it may be displayed in a window of size A6.

NOTE 1 This part of ISO 13584 requests some illustrations provided by a library data supplier to be A6_illustration

NOTE 2 The intended roles of illustrations of A6 size include the following:

250 CWA 15556-2:2006 (E)

— to display the meaning of properties of a general model class,

— to display the meaning of free model properties of a functional model class,

— to display the views defined by a functional models class.

NOTE 3 The width and height recommended by the library data supplier, as defined by the width and height attributes, for viewing the illustration may be different from size A6. The optimal size for viewing the illustration is defined by the width and height attributes. A window of size A6 is also acceptable for displaying it.

EXPRESS specification:

*) ENTITY A6_illustration SUBTYPE OF(illustration); END_ENTITY; -- A6_illustration (*

DB-8.8 A9_illustration

An A9_illustration is an illustration of which the library data supplier ensures that it may be displayed in a window of size A9.

NOTE 1 This part of ISO 13584 requests some illustrations provided by a library data supplier to be A9_illustration

NOTE 2 One intended role of an illustration of A9 size is to represent the class in a menu driven hierarchical access.

NOTE 3 The width and height recommended by the library data supplier, as defined by the width and height attributes, for viewing the illustration may be different from size A9. The optimal size for viewing the illustration is defined by the width and height attributes. A window of size A9 is also acceptable for displaying it.

EXPRESS specification:

*) ENTITY A9_illustration SUBTYPE OF(illustration); END_ENTITY; -- A9_illustration (*

DB-9 ISO13584_external_file_schema entity definition: property_value_external_item

This subclause specifies how to define a property value by means of library external files.

EXAMPLE the content of such external files might be icons that show the value of a property named "simplified picture of a jack" defined in some jack class

A property_value_external_item is an external_item that may constitute the value of any property the data type of which is defined as an entity_instance_type, the type_name attribute of which contains 'ISO13584_EXTERNAL_FILE_SCHEMA.PROPERTY_VALUE_EXTERNAL_ITEM'.

NOTE 1 property_value_external_item is defined as a PLIB_entity_instance_value and thus as a primitive_valuein the ISO13584_instance_resource_schema documented in clause 6.

NOTE 2 Type checking for property values is ensured by WR1 of the property_value entity documented in clause 6..

251 CWA 15556-2:2006 (E)

NOTE 3 entity_instance_type is defined in the ISO13584_IEC61360_dictionary_schema documented in ISO 13584-42:1998.

EXPRESS specification:

*) ENTITY property_value_external_item SUBTYPE OF(external_item); END_ENTITY; -- property_value_external_item (*

DB-10 ISO13584_external_file_schema rule definition

DB-10.1 Unique_http_file_name_per_supplier_element_rule rule

The unique_http_file_name_per_supplier_element_rule rule checks that all the http_files associated with the different supplier_related_BSUs that correspond to the same supplier_BSU have different file names. If the supplier_element is not available, the rule is not violated.

NOTE All the http_files associated with the different supplier_related_BSUs that correspond to the same supplier_BSU are intended to be stored in the same directory on the user local Internet server.

EXPRESS specification:

*) RULE unique_http_file_name_per_supplier_element_rule FOR( supplier_BSU); WHERE WR1: QUERY(sup_BSU <* supplier_BSU | (SIZEOF (sup_BSU.definition) = 1) AND (QUERY(fil_1 <* supplier_associated_http_files(sup_BSU) | QUERY(fil_2 <* supplier_associated_http_files(sup_BSU) | fil_1.http_file_name = fil_2.http_file_name) <> [fil_1]) <> [])) = []; END_RULE; -- unique_http_file_name_per_supplier_element_rule (*

Formal propositions:

WR1: all the http_files associated with the different supplier_related_BSUs that correspond to the same supplier_BSU shall have different file names.

DB-10.2 Unique_http_directory_name_per_supplier_rule rule

The unique_http_directory_name_per_supplier_rule rule checks that all the http_class_directory's associated with the same supplier_BSU have different names.

NOTE All the http_class_directoryies associated with the same supplier_BSU are intended to be subdirectories of the same directory on the user local Internet server.

252 CWA 15556-2:2006 (E)

EXPRESS specification:

*) RULE unique_http_directory_name_per_supplier_rule FOR( http_class_directory); WHERE WR1: QUERY(dir_1 <* http_class_directory | QUERY(dir_2 <* http_class_directory | (dir_1.name = dir_2.name) AND (dir_1.class.defined_by = dir_2.class.defined_by)) <> [dir_1]) = []; END_RULE; -- unique_http_directory_name_per_supplier_rule (*

Formal propositions:

WR1: all the http_class_directory’s associated with the same supplier_BSU shall have different names.

DB-10.3 No_http_directory_for_supplier_related_file_rule rule

The no_http_directory_for_supplier_related_file_rule rule checks that all the http_files belonging to a supplier_BSU_related_content are not associated with an http_class_directory.

NOTE The name of the directory intended to contain http_files belonging to supplier_BSU_related_content should be implementation dependent.

EXAMPLE One particular implementation may use the supplier code of a supplier as the name of the directory intended to contain the http_files belonging to supplier_BSU_related_content relating to this supplier. If the length of this name can not be supported on the user LMS, an implementation dependent abbreviation might be used.

EXPRESS specification:

*) RULE no_http_directory_for_supplier_related_file_rule FOR( http_file, supplier_bsu_related_content); WHERE WR1: QUERY(http_f <* http_file | (('ISO13584_EXTERNAL_FILE_SCHEMA' + '.SUPPLIER_BSU_RELATED_CONTENT' IN TYPEOF(http_f\external_file_unit.unit_of .content_of.content_of)) AND EXISTS(http_f.http_directory))) = []; END_RULE; -- no_http_directory_for_supplier_related_file_rule (*

Formal propositions:

WR1: all the http_files belonging to a supplier_BSU_related_content shall not be associated with an http_class_directory.

253 CWA 15556-2:2006 (E)

DB-10.4 Http_directory_refers_to_bsu_related_class_rule rule

The http_directory_refers_to_bsu_related_class_rule rule checks that all the http_files belonging to a class_BSU_related_content are associated with an http_class_directory.

NOTE The name of the http_class_directory where the LMS shall store the http_files corresponding to each library class is defined by the library data supplier. This mechanism enable the library data supplier to define hypertext links between documents that remain valid once the documents are stored on the user site.

EXPRESS specification:

*) RULE http_directory_refers_to_bsu_related_class_rule FOR( http_file, class_bsu_related_content); WHERE WR1: QUERY(http_f <* http_file | (('ISO13584_EXTERNAL_FILE_SCHEMA' + '.CLASS_BSU_RELATED_CONTENT' IN TYPEOF(http_f\external_file_unit.unit_of .content_of.content_of)) AND (http_f.http_directory.class <> http_f\ external_file_unit.unit_of.content_of.content_of \content_item.dictionary_definition.name_scope))) = []; END_RULE; -- http_directory_refers_to_bsu_related_class_rule (*

Formal propositions:

WR1: all the http_files belonging to a class_BSU_related_content shall be associated with an http_class_directory.

DB-10.5 Http_directory_refers_to_class_extension_rule rule

The http_directory_refers_to_class_extension_rule rule checks that for each http_file belonging to a class_extension_external_item, the class_BSU referenced by this class_extension_external_item is the same as the class_BSU referenced by the http_class_directory intended to contain this http_file.

EXPRESS specification:

*) RULE http_directory_refers_to_class_extension_rule FOR( http_file, class_extension_external_item); WHERE WR1: QUERY(http_f <* http_file | ('ISO13584_EXTERNAL_FILE_SCHEMA' + '.CLASS_EXTENSION_EXTERNAL_ITEM' IN TYPEOF(http_f\external_file_unit.unit_of .content_of.content_of)) AND (http_f.http_directory.class <> http_f\ external_file_unit.unit_of.content_of.content_of \class_extension_external_item.belongs_to \content_item.dictionary_definition)) = []; END_RULE; -- http_directory_refers_to_class_extension_rule

254 CWA 15556-2:2006 (E)

(*

Formal propositions:

WR1: for each http_file belonging to a class_extension_external_item, the class_BSU referenced by this class_extension_external_item shall be the same as the class_BSU referenced by the http_class_directory intended to contain this http_file.

DB-10.6 Illustration_is_not_a_referenced_graphics_rule rule

The illustration_is_not_a_referenced_graphics_rule rule ensures that a graphics entity cannot be both a referenced_graphics and an illustration.

NOTE graphics is defined in the ISO13584_IEC61360_dictionary_schema and documented in ISO 13584-42. referenced_graphics is defined in the ISO13584_extended_dictionary_schema, documented in this part of ISO 13584. illustration is defined in the ISO13584_exterenal_file_schema, documented in this part of ISO 13584.

EXPRESS specification:

*) RULE illustration_is_not_a_referenced_graphics_rule FOR( graphics); WHERE WR1: QUERY(icon <* graphics | ('ISO13584_EXTENDED_DICTIONARY_SCHEMA.REFERENCED_GRAPHICS' IN TYPEOF(icon)) AND ('ISO13584_EXTERNAL_FILE_SCHEMA.ILLUSTRATION' IN TYPEOF(icon))) = []; END_RULE; -- illustration_is_not_a_referenced_graphics_rule (*

Formal propositions:

WR1: a graphics entity cannot be both a referenced_graphics and an illustration.

DB-11 ISO13584_external_file_schema entity definitions: external content

This subclause introduces the resource constructs for associating an external_item with the library external file(s) that defines its content. This content may be provided in different languages.

An external_content is the information model of the above content. It may or may not be translated and consists of language_specific_content.

Each language_specific_content describes the content in one specific language. This information may be provided by several external_file_units.

Each external_file_unit corresponds to one library external file. It is an http_file when the referenced external_file_protocol is the http_protocol.

The following planning model outlines the relationships between an external_item and the library external file(s) that define(s) its content.

255 CWA 15556-2:2006 (E)

(ABS) external_file _protocol used_protocol

consists_of content_files (ABS) content (ABS) L[1:?] language_ S[1:?] external_file external_item (INV) external_content (INV) _specific_content (INV) _unit content_of content_of unit_of

1

translated_ not_translated_ not_translatable_ http_file _external_content _external_content _external_content

Figure 3 — External_content planning model NOTE This planning model uses the EXPRESS-G graphical notation for the EXPRESS language, but, for clarification of the diagram, some of the relationships that are defined in the EXPRESS model are omitted, and inter-schema references are not represented.

DB-11.1 External_content

An external_content entity is the content of an external_item.

EXPRESS specification:

*) ENTITY external_content ABSTRACT SUPERTYPE OF(ONEOF( translated_external_content, not_translated_external_content, not_translatable_external_content)); consists_of: LIST[1:?] OF language_specific_content; INVERSE content_of: external_item FOR content; END_ENTITY; -- external_content (*

Attribute definitions: consists_of: the list of language_specific_contents that represent the content of the external_item.

NOTE The list order defined for the external_content consists_of attribute is only meaningful in the translated_external_content entity.

content_of: the external_item whose content is represented by the external_content.

DB-11.2 Translated_external_content

A translated_external_content is the content of an external_item, provided in different languages.

EXPRESS specification:

*) ENTITY translated_external_content

256 CWA 15556-2:2006 (E)

SUBTYPE OF(external_content); languages: present_translations; WHERE WR1: SIZEOF(SELF\external_content.consists_of) = SIZEOF(SELF.languages.language_codes); END_ENTITY; -- translated_external_content (*

Attribute definitions: languages: the different languages in which the external_item content is provided.

Formal propositions:

WR1: the number of existing language_specific_contents shall be equal to the number of translation languages.

Informal propositions:

IP1: the i-th language_specific_content specified by the external_content consists_of attribute provides the external_item in the i-th language specified by the languages attribute.

DB-11.3 Not_translated_external_content

A not_translated_external_content is the content of an external_item that is provided in one particular language defined by a global_language_assignment.

NOTE The global_language_assignment entity is defined in the language_resource_schema documented in IEC 61360-2.

EXPRESS specification:

*) ENTITY not_translated_external_content SUBTYPE OF(external_content); WHERE WR1: SIZEOF(SELF\external_content.consists_of) = 1; END_ENTITY; -- not_translated_external_content (*

Informal propositions:

IP1: the language_specific_content specified by the external_content consists_of attribute provides the external_item in the language specified by a global_language_assignment entity.

DB-11.4 Not_translatable_external_content

A not_translatable_external_content is the content of an external_item that may be used in any particular language.

EXAMPLE A geometric representation without any textual information is a not_translatable_external_content that may be associated with a representation_reference

257 CWA 15556-2:2006 (E)

EXPRESS specification:

*) ENTITY not_translatable_external_content SUBTYPE OF(external_content); WHERE WR1: SIZEOF(SELF\external_content.consists_of) = 1; END_ENTITY; -- not_translatable_external_content (*

Informal propositions:

IP1: the language_specific_content shall be meaningful in any particular language.

DB-11.5 Language_specific_content

A language_specific_content is the content of an external_item, in a particular language. It may consist of several external_file_units with internal references, one of them being possibly the main_file file. When there exists a main_file file, all the references to the external_item stand for references to this file. All other external_file_units may only be accessed from the main_file file by the internal referencing mechanism specific to the external_file_protocol used.

EXAMPLE The http_protocol defines an internal referencing mechanism by means of hyper-text links. When this external_file_protocol is used for some external_item, wherever this external_item is referenced, the main_file file shall be displayed by the user LMS. Other external_file_units may only be accessed by the user and displayed by the user LMS through hyper-text links from the main_file file. EXPRESS specification:

*) ENTITY language_specific_content; content_files: SET [1:?] OF external_file_unit; main_file: OPTIONAL external_file_unit; character_encoding: OPTIONAL character_set_type; INVERSE content_of: external_content FOR consists_of; WHERE WR1: NOT EXISTS(main_file) OR (main_file IN content_files); WR2: EXISTS(main_file) XOR ('ISO13584_EXTERNAL_FILE_SCHEMA.PROGRAM_LIBRARY_CONTENT' IN TYPEOF(SELF.content_of.content_of)); WR3: EXISTS(character_encoding) OR NOT ('ISO13584_EXTERNAL_FILE_SCHEMA.HTTP_PROTOCOL' IN TYPEOF(SELF.content_of.content_of.used_protocol)); END_ENTITY; -- language_specific_content (*

Attribute definitions: content_files: the external_file_units that define the content of the external_item in a particular language.

258 CWA 15556-2:2006 (E) main_file: the external_file_unit that is to be processed (for instance, displayed) wherever the external_item is referenced to be processed during library usage. character_encoding: the particular character encoding used in all the external_file_units of the language_specific_content that contain characters. content_of: the external_content that is defined in one particular language by the language_specific_content.

Formal propositions:

WR1: the main_file shall be one of the content_files.

WR2: there shall exist a main_file but if the external_item is a program_library_content.

WR3: the character_encoding shall exist when the http_protocol is used.

Informal propositions:

IP1: the character_encoding shall exist when ever the language_specific_content contains characters and the data_protocol used enables several character_encodings.

DB-11.6 External_file_unit

An external_file_unit is a library external file.

EXPRESS specification:

*) ENTITY external_file_unit SUPERTYPE OF(http_file); file: external_file_address; content_encoding: OPTIONAL content_encoding_type; INVERSE unit_of: language_specific_content FOR content_files; WHERE WR1: (('ISO13584_EXTERNAL_FILE_SCHEMA.HTTP_PROTOCOL' IN TYPEOF(SELF.unit_of.content_of.content_of.used_protocol)) AND ('ISO13584_EXTERNAL_FILE_SCHEMA.HTTP_FILE' IN TYPEOF(SELF))) XOR NOT (('ISO13584_EXTERNAL_FILE_SCHEMA.HTTP_PROTOCOL' IN TYPEOF(SELF.unit_of.content_of.content_of.used_protocol)) OR ('ISO13584_EXTERNAL_FILE_SCHEMA.HTTP_FILE' IN TYPEOF(SELF))); END_ENTITY; -- external_file_unit (*

Attribute definitions: file: the library external file represented by the external_file_unit. content_encoding: if present, the encoding transformation performed on the content of the library external file represented by the external_file_unit.

259 CWA 15556-2:2006 (E)

NOTE The allowed encoding transformation are those defined by IAB RFC 2045.

unit_of: the language_specific_content to which the external_file_unit belongs.

Formal propositions:

WR1: the external_file_unit shall not correspond to an external_item associated with the http_protocol, otherwise it shall be an http_file subtype.

DB-11.7 Http_file

An http_file is a library external file that is a MIME-like file and that may contain references to other Internet resources by means of http URLs. An http_file is associated with the http_protocol. It references in particular, an http_file_name_type, that specifies the name that shall be associated to this file on the user local Internet server, and when this file relates to a class, an http_class_directory that specifies the name of the directory where this file shall be stored on the user local Internet server.

NOTE 1 When an http_file relates to a supplier_BSU_related_document, the name of its directory on the user local Internet server is not specified; therefore it cannot be accessed by library data supplier-defined hyper-text links.

EXPRESS specification:

*) ENTITY http_file SUBTYPE OF(external_file_unit); mime: MIME_type; exchange_format: MIME_subtype; format_RFC: OPTIONAL IAB_RFC; http_file_name: http_file_name_type; http_directory: OPTIONAL http_class_directory; remote_access: OPTIONAL absolute_URL_type; UNIQUE UR1: http_file_name, http_directory; WHERE WR1: EXISTS(http_directory) XOR ('ISO13584_EXTERNAL_FILE_SCHEMA.SUPPLIER_BSU_RELATED_CONTENT' IN TYPEOF(SELF.unit_of.content_of.content_of)); WR1: NOT EXISTS(http_directory) XOR ('ISO13584_EXTERNAL_FILE_SCHEMA.CLASS_EXTENSION_EXTERNAL_ITEM' IN TYPEOF(SELF.unit_of.content_of.content_of)); END_ENTITY; -- http_file (*

Attribute definitions: mime: the MIME type of the http file. exchange_format: the MIME subtype of the http file.

format_RFC: the possible IAB RFC that defines the MIME subtype.

EXAMPLE 1 IAB RFC 1866 defines the HTML MIME text subtype.

EXAMPLE 2 IAB RFC 2376 [6] is an informational protocol that defines the XML MIME text subtype and the XML MIME application subtype.

260 CWA 15556-2:2006 (E) http_file_name: the file name to be assigned to the http file on the local Internet server. http_directory: the optional directory to be assigned to the http file on the local Internet server. remote_access: the possible absolute URL where the http file may be found on an Internet site.

Formal propositions:

UR1: the http_file_name shall be unique within an http_class_directory.

WR1: the http_class_directory shall exist but if the http_file relates to a supplier_BSU_related_content.

WR1: the http_class_directory shall not exist but if the http_file relates to a class_extension_external_item.

Formal propositions:

IP1: only mime MIME type and exchange_format MIME subtype values that are registered by IANA are allowed for use by this part of ISO 13584.

NOTE 2 Apart private agreement between the sender and the receiver, this part of ISO 13584 strongly recommends to restrict to a small number of formats that are:

— mature;

— stable;

— unambiguously characterised by MIME Content-Type, i.e., type and subtype;

— publicly available or associated with public domain Internet-available readers.

NOTE 3 Format of MIME-like files whose Content-Type corresponds to specifications that are not publicly available, and that are not associated with public domain Internet-available readers are forbidden for any non extended conformance class of any of the three library integrated information models defined in this part of ISO 13584. This constraint is stated in annex E, I and M.

DB-11.8 Http_class_directory

An http_class_directory entity specifies the name of the directory where an http_file shall be stored on the user local Internet server. Each http_class_directory refers to one class and each class that is associated with http_files is referenced by exactly one http_class_directory.

EXPRESS specification:

*) ENTITY http_class_directory; name: http_directory_name_type; class: class_BSU; UNIQUE UR1: class; END_ENTITY; -- http_class_directory (*

Attribute definitions: name: the name of the directory where an http_file shall be stored on the user local Internet server.

261 CWA 15556-2:2006 (E)

class: the referred class of the http_class_directory.

Formal propositions:

UR1: there shall be at most one http_class_directory per class.

DB-12 ISO13584_external_file_schema function definitions

DB-12.1 Supplier_associated_http_files

The supplier_associated_http_files function computes all the http_files associated with the different supplier_related_BSUs that correspond to the same supplier_BSU. If the supplier_element is not available, the function returns the empty set.

NOTE All the http_files associated with the different supplier_related_BSUs that correspond to the same supplier_BSU are intended to be stored in the same directory on the user local Internet server.

EXPRESS specification:

*) FUNCTION supplier_associated_http_files(sup_BSU: supplier_BSU): SET OF http_file;

LOCAL sup: supplier_element; files: SET OF http_file := []; END_LOCAL;

IF SIZEOF(sup_BSU.definition) > 0 THEN sup := sup_BSU.definition[1]; ELSE RETURN(files); END_IF;

REPEAT i := 1 TO SIZEOF(sup.associated_items); -- supplier_BSU_relationship REPEAT j := 1 TO SIZEOF(sup.associated_items[i].related_tokens); --supplier_related_BSU REPEAT k := 1 TO SIZEOF(sup.associated_items[i] .related_tokens[j].referenced_by); --content_item

IF ('ISO13584_EXTERNAL_FILE_SCHEMA.EXTERNAL_ITEM'IN TYPEOF(sup.associated_items[i] .related_tokens[j].referenced_by[k])) THEN REPEAT l := 1 TO SIZEOF(sup.associated_items[i] .related_tokens[j].referenced_by[k] \external_item.content.consists_of); --language_specific_content

REPEAT m := 1 TO SIZEOF( sup.associated_items[i] .related_tokens[j].referenced_by[k]

262 CWA 15556-2:2006 (E)

\external_item.content .consists_of[l].content_files); -- external_file_unit IF ('ISO13584_EXTERNAL_FILE_SCHEMA.HTTP_FILE' IN TYPEOF(sup.associated_items[i] .related_tokens[j].referenced_by[k] \external_item.content .consists_of[l].content_files[m])) THEN files := files + sup.associated_items[i] .related_tokens[j].referenced_by[k] \external_item.content .consists_of[l].content_files[m]; END_IF; -- http_file END_REPEAT; -- m END_REPEAT; -- l END_IF; -- external_item END_REPEAT; -- k END_REPEAT; -- j END_REPEAT; -- i

RETURN(files);

END_FUNCTION; -- supplier_associated_http_files (*

DB-12.2 Control_compiler_version_format

The control_compiler_version_format returns TRUE if the the_compiler_version string contains only digits, dots, or underscores. Otherwise, it returns FALSE.

EXPRESS specification:

*) FUNCTION control_compiler_version_format(the_compiler_version: STRING): BOOLEAN; LOCAL result: BOOLEAN := TRUE; END_LOCAL;

REPEAT i := 1 TO LENGTH(the_compiler_version); IF (NOT((the_compiler_version[i] LIKE '#') OR (the_compiler_version[i] LIKE '.') OR (the_compiler_version[i] LIKE '_'))) THEN result := FALSE; END_IF; END_REPEAT; RETURN(result); END_FUNCTION; -- control_compiler_version_format (*

263 CWA 15556-2:2006 (E)

*) END_SCHEMA; -- ISO13584_external_file_schema (*

264 CWA 15556-2:2006 (E)

Annex DC (informative) ISO13584_IEC61360_dictionary_aggregate_extension_schema (from ISO13584 Part 25)

DC-1 Introduction

The content of this appendix has been taken from chapter 7 of ISO13584 Part 25. The first paragraph comes from chapter 4.1.1 of ISO13584 Part 25.

The ISO13584_IEC61360_dictionary_aggregate_extension_schema provides the resource constructs needed to describe data types corresponding to aggregate data types that include those defined in the EXPRESS language. It defines resources to describe array, bag, list, set and set of subsets data types. These data types extend the data types already defined in the ISO13584_IEC61360_dictionary_schema published in IEC 61360-2:1998 and whose content is duplicated in an informative Annex of ISO 13584-42:1998.

This clause defines the requirements for the ISO13584_IEC61360_dictionary_aggregate_extension_schema. The following EXPRESS declaration introduces the ISO13584_IEC61360_dictionary_aggregate_extension_schema and identifies the necessary external references.

EXPRESS specification: *) SCHEMA ISO13584_IEC61360_dictionary_aggregate_extension_schema;

REFERENCE FROM ISO13584_IEC61360_dictionary_schema( data_type, entity_instance_type);

(*

NOTE The schema referenced above can be found in the following document: ISO13584_IEC61360_dictionary_schema IEC 61360-2:1998 (which is duplicated for convenience in Informative Annex D of ISO 13584-42:1998)

DC-2 Introduction to the ISO13584_IEC61360_dictionary_aggregate_extension_schema

The ISO13584_IEC61360_dictionary_aggregate_extension_schema provides the information model for the extension to the ISO/IEC common dictionary schema which allows the use of lists, sets, bags, arrays and sets of subsets of simple or complex data types.

This extension is achieved in two steps.

— the entity_instance_type_for_aggregate entity provides the means to reference EXPRESS- defined entities that specify aggregate data types. The entity_instance_type_for_aggregate is a subtype of the entity_instance_type entity;

NOTE The entity_instance_type entity is defined in the IEC 61630–2:1998 and duplicated in ISO 13584-42:1988.

— then, entities that specify aggregate data types are modeled by the aggregate_type entity and its specializations.

265 CWA 15556-2:2006 (E)

DC-3 ISO13584_IEC61360_dictionary_aggregate_extension_schema entity definitions

The following entity type definitions describe the necessary resources needed to encode aggregate types.

DC-3.1 Aggregate_entity_instance_type

The entity_instance_type_for_aggregate entity provides for referencing definitions of data types that may be expressed as lists, sets, bags or arrays of simple or complex values. It is defined by referencing an aggregate_type defined in this schema.

EXPRESS specification:

*) ENTITY entity_instance_type_for_aggregate SUBTYPE OF(entity_instance_type); type_structure: aggregate_type; WHERE WR1: SELF\entity_instance_type.type_name = ['ISO13584_IEC61360_DICTIONARY_AGGREGATE_EXTENSION_SCHEMA' + '.AGGREGATE_TYPE']; END_ENTITY; (*

Attribute definition:

type_structure: the aggregate_type referenced and carried by the entity_instance_type.

Formal propositions:

WR1: the type_name attribute of the entity_instance_type shall contain the string ‘ISO13584_IEC61360_DICTIONARY_AGGREGATE_EXTENSION_SCHEMA.AGGREGATE_T YPE’.

DC-3.2 Aggregate_type

The aggregate_type entity provides for the definition of data types that may be expressed as lists, sets, bags or arrays of simple or complex values.

EXPRESS specification:

*) ENTITY aggregate_type ABSTRACT SUPERTYPE OF(ONEOF( list_type, set_type, bag_type, array_type, set_with_subset_constraint_type )); bound_1: OPTIONAL INTEGER; bound_2: OPTIONAL INTEGER; value_type: data_type; WHERE WR1: bound_1 <= bound_2;

266 CWA 15556-2:2006 (E)

END_ENTITY; (*

Attribute definition:

value_type: is the type of value (simple or complex) which is used for each element of the aggregate.

bound_1: the optional integer that defines the low bound of the defined aggregate type.

bound_2: the optional integer that defines the upper bound of the defined aggregate type.

Formal propositions:

WR1: bound_1 cannot be greater than bound_2.

DC-3.3 List_type

The list_type entity provides for the definition of data types that may be expressed as ordered lists of values in which duplication may or may not be allowed.

EXPRESS specification:

*) ENTITY list_type SUBTYPE OF(aggregate_type); uniqueness: BOOLEAN; WHERE WR1: EXISTS(bound_1) OR NOT(EXISTS(bound_2)); WR2: NOT(EXISTS(bound_1)) OR (bound_1 >= 0); END_ENTITY; (* Attribute definition:

uniqueness: a flag to indicate whether all elements of the list must be unique (true) or whether duplicates are allowed (false).

Formal propositions:

WR1: if the upper bound bound_2 of the defined list optional attribute exists, it implies that the lower bound bound_1 optional attribute of the defined list exists as well.

WR2: if the lower bound bound_1 of the defined list optional attribute exists then it is greater or equal to 0.

DC-3.4 Set_type

The set_type entity provides for the definition of data types that may be expressed as unordered collections of values in which no duplication can occur.

EXPRESS specification:

*) ENTITY set_type SUBTYPE OF(aggregate_type);

267 CWA 15556-2:2006 (E)

WHERE WR1: EXISTS(bound_1) OR NOT(EXISTS(bound_2)); WR2: NOT(EXISTS(bound_1)) OR (bound_1 >= 0); END_ENTITY; (* Formal propositions:

WR1: if the upper bound bound_2 of the defined list optional attribute exists, it implies that the lower bound bound_1 optional attribute of the defined list exists as well.

WR2: if the lower bound bound_1 of the defined list optional attribute exists then it is greater or equal to 0.

DC-3.5 Bag_type

The bag_type entity provides for the definition of data types that may be expressed as unordered collections of values in which duplication may occur.

EXPRESS specification:

*) ENTITY bag_type SUBTYPE OF(aggregate_type); WHERE WR1: EXISTS(bound_1) OR NOT(EXISTS(bound_2)); WR2: NOT(EXISTS(bound_1)) OR (bound_1 >= 0); END_ENTITY; (* Formal propositions:

WR1: if the upper bound bound_2 of the defined list optional attribute exists, it implies that the lower bound bound_1 optional attribute of the defined list exists as well.

WR2: if the lower bound bound_1 of the defined list optional attribute exists then it is greater or equal to 0.

DC-3.6 Array_type

The array_type entity provides for the definition of data types that may be expressed as an array of values. An array data type has as its domain indexed, fixed-size collection of like elements. The lower and upper bounds, which are integer values, define the range of index values and thus the size of each array collection. An array data type definition may optionally specify that an array value cannot contain duplicate elements.

EXPRESS specification:

*) ENTITY array_type SUBTYPE OF (aggregate_type); SELF\aggregate_type.bound_1: INTEGER; SELF\aggregate_type.bound_2: INTEGER; uniqueness: BOOLEAN; are_optional: BOOLEAN; END_ENTITY;

268 CWA 15556-2:2006 (E)

(* Attribute definition:

bound_1: the integer that defines the low index of the defined aggregate type.

bound_2: the integer that defines the upper index of the defined aggregate type.

uniqueness: indicates whether all elements of the array must must be present (false) or whether some elements of the array may be missing (true).

are_optional: indicates whether all elements of the array must be present (false) or whether some elements of the array may be missing (true).

DC-3.7 Set_with_subset_constraint_type

The set_with_subset_constraint_type entity provides for the definition of data types that may be expressed as a set of values of which subsets may be extracted. The sizes of allowed subsets are defined by their minimal and maximal values. If these sizes do not exist, any subset is allowed.

NOTE The context in which subsets may be extracted is outside the scope of the part of ISO 13584.

EXPRESS specification:

*) ENTITY set_with_subset_constraint_type SUBTYPE OF (aggregate_type); cardinal_min: OPTIONAL INTEGER; cardinal_max: OPTIONAL INTEGER; WHERE WR1: cardinal_min <= cardinal_max ; WR2: NOT EXISTS (bound_2) OR NOT EXISTS (cardinal_max) OR (cardinal_max <= bound_2); WR3: NOT EXISTS (bound_1) OR NOT EXISTS (cardinal_min) OR (cardinal_min <= bound_1); END_ENTITY; (* Attribute definition:

cardinal_min: the minimal size of the subsets that may be extracted.

cardinal_max: the maximal size of the subsets that may be extracted.

Formal propositions:

WR1: the minimal size of the subsets that may be extracted cardinal_min shall be less of equal the maximal size of the subsets that may be extracted cardinal_max.

WR2: the maximal size of the subsets that may be extracted from the set shall not be greater than the maximal size of the set itself.

WR3: the minimal size of the subsets that may be extracted from the set shall not be greater than the minimal size of the set itself.

269 CWA 15556-2:2006 (E)

*) END_SCHEMA; -- ISO13584_IEC61360_dictionary_aggregate_extension_schema

(*

270 CWA 15556-2:2006 (E)

Annex DD (informative) Conformance Classes (from ISO13584 Part 25)

DD-1 Introduction

The content of this appendix has been taken from chapter 4.2 and chapter 8 of ISO13584 Part 25.

DD-2 Library integrated model

The library integrated information model specified in this part of ISO 13584, called LIIM 25, gathers the generic resource constructs defined in this part of ISO 13584 with other generic resource constructs from other parts of ISO 13584 and from ISO 10303 into a single schema for representing supplier libraries for the purpose of exchange. LIIM 25 enables the exchange of seven kinds of dictionaries or libraries and the exchange of a set of library instances without library structure, between a library data supplier and a library end-user.

— Dictionaries that define hierarchies of classes of items, that may be parts, materials or other items, with aggregate-structured properties using only the EXPRESS resource constructs defined in the ISO/IEC common dictionary schema or in the ISO13584_IEC61360_dictionary_aggregate _extension_schema defined in this part of ISO 13584 corresponds to conformance class 1;

— Dictionaries that define hierarchies of classes of items, that may be parts, materials, features or other items, using the extension of the ISO/IEC common dictionary schema defined in ISO 13584- 24, but without description of item representations and of representation categories of items, and without aggregate-structured properties, corresponds to conformance class 2;

— Dictionaries that define hierarchies of classes of items, of item representations, and of representation categories of items, with aggregate-structured properties, corresponds to conformance class 3;

— Dictionaries with the same scope as conformance class 3 but with no more than two levels nesting for aggregate-structured properties, corresponds to conformance class 4;

— Libraries that define the set of instances that belong to some hierarchies of classes of items, without classes of item representations and of representation categories of items, and without aggregate-structured properties, corresponds to conformance class 5;

— Libraries that define the set of instances that belong to some hierarchies of classes of items and of item representations, with aggregate-structured properties corresponds to conformance class 6;

— Libraries with the same scope as conformance class 6 but with no more than two levels nesting for aggregate-structured properties corresponds to conformance class 7;

— Set of item instances and of item representation instances without dictionary definitions and without library structure corresponds to conformance class 10;

— Set of item instances and of item representation instances without library structure but possibly with dictionary definitions corresponds to conformance class 11.

Each of the above kind of exchange context corresponds to one conformance class of LIIM 25. Each conformance class specifies the conformance requirements for implementations that claim conformance to this conformance class. Conformance classes 6 and 7 supports all the entities, types and associated constructs that are part of LIIM 25. Other conformance classes shall only support a

271 CWA 15556-2:2006 (E)

subset of this set of resource constructs. In this part of ISO 13584, each subset that defines a conformance class is defined by means of a list of entities. An implementation that claims conformance to any conformance class shall support all the entities listed for this conformance class and related constructs.

DD-2.1 Conformance class 1: minimal dictionaries

Conformance class 1 supports the information requirements for exchanging definitions of hierarchies of item classes, where items may be parts or materials. It allows the exchange of all the dictionary elements from the ISO/IEC dictionary schema more item classes whose properties may have aggregate-structured values. Conformance class 1 is associated with implementation methods for the library delivery file. Conformance requirements to conformance class 1 of LIIM 25 are defined in Clause 8.2.1 of this part of ISO 13584.

DD-2.2 Conformance class 2: dictionaries of items classes

Conformance class 2 supports the information requirements for exchanging definitions of hierarchies of item classes, where items may be parts, materials or features, whose properties may not have aggregate-structured values. Conformance class 2 is associated with a set of standard data that defines the formats of library external files that may be referenced by a library delivery file conforming to conformance class 2 of LIIM 25, and with implementation methods for the library delivery file. Conformance requirements for conformance class 2 of LIIM 25 are defined in Clause 8.2.2 of this part of ISO 13584.

DD-2.3 Conformance class 3: complete dictionaries

Conformance class 3 supports the information requirements for exchanging definitions of hierarchies of item classes, where items may be parts, materials or features , together with definitions of representations of such item classes, and with definitions of representation categories of such item classes. Properties of all these classes may have aggregate-structured values. Conformance class 3 is associated with a set of standard data that defines the formats of library external files that may be referenced by a library delivery file conforming to conformance class 3 of LIIM 25, and with implementation methods for the library delivery file. Conformance requirements for conformance class 3 of LIIM 25 are defined in Clause 8.2.3 of this part of ISO 13584.

DD-2.4 Conformance class 4: complete dictionaries with limited nested aggregate values

Conformance class 4 supports the information requirements corresponding to conformance class 3 with a restriction. The aggregate values involved in conformance class 4 shall not be nested more than twice. Conformance requirements for conformance class 4 of LIIM 25 are defined in Clause 8.2.4 of this part of ISO 13584.

Conformance to the library integrated information model LIIM 25 includes satisfying the information requirements stated in the ISO13584_25_IEC61360_5_liim_schema schema presented in 8.1, the requirements to support standard data stated in the ISO13584_25_IEC61360_5_conformance_schema schema presented in Annex D, the requirements of the implementation method(s) supported and the relevant requirements of the normative references.

An implementation shall support at least the following implementation method: ISO 10303-21. Requirements with respect to implementation methods are specified in Annex E.

The ISO13584_25_IEC61360_5_liim_schema schema provides for a number of options that may be supported by an implementation. These options have been grouped into conformance classes. Nine conformance classes are defined. Options are defined by each class and may be selected by an implementation. Conformance to a particular conformance class requires that all the

272 CWA 15556-2:2006 (E)

ISO13584_25_IEC61360_5_liim_schema entities, types and associated constraints defined as part of the class, be supported, together with the standard data associated with the class.

NOTE 1 Support of standard data associated with a class is insured by the global rule specified in the ISO13584_25_IEC61360_5_conformance_schema.

The numbering schema of the conformance classes is as follows:

— class 1: minimal dictionary_elements from the ISO/IEC common dictionary schema more aggregate types;

NOTE 2 The ISO/IEC common dictionary schema is defined by the ISO13584_IEC61360_dictionary_schema documented in ISO 13584-42:1998.

— class 2: dictionary_elements from the extended dictionary schema without functional models and functional views and without aggregate types;

NOTE 3 The extended dictionary schema is defined by the ISO13584_extended_dictionary_schema documented in ISO 13584-24.

— class 3: dictionary_elements from the extended dictionary schema with functional models and functional views and aggregate types;

— class 4: identical to class 3 but with limited nested aggregate types;

Table 4 shows the supported capabilities of the different conformance classes of library integrated information model 25.

Table 4 — Conformance options of library integrated information model 25

Library Instance Capabilities Dictionary elements specification representation (class extension)

Conformance Dictionary Dictionary definitions Aggregate class definitions of of item class structured item classes representations and properties representation categories

1 X x 2 x 3 x x x 4 x x x

DD-3 ISO13584_25_IEC61360_5_liim_schema short listing

This clause specifies the EXPRESS schema that uses elements from the integrated resource series of ISO 10303 and from the logical resource and description methodology series of parts of ISO 13584 to define the requirements of the library integrated information model LIIM25 specified in this part of ISO 13584.

NOTE 1 The integrated resource series of ISO 10303 are part 10303-4x and 10303-1xx. The logical resource series of parts of ISO 13584 are ISO 13584-2x and the description methodology series of parts of ISO 13584 are ISO 13584-4x.

273 CWA 15556-2:2006 (E)

The expanded EXPRESS listing of the ISO13584_25_IEC61360_5_liim_schema, with the additional constraints defined in ISO13584_25_IEC61360_5_conformance_schema, is presented in Annex A. The resulting schema, called ISO13584_25_IEC61360_5_library_implicit_schema, is the information model of supplier libraries that reference the library integrated information model LIIM 25 specified in this part of ISO 13584, whether or not they also reference some view exchange protocols.

NOTE 2 The information model of integrated libraries is outside the scope of this International Standard.

EXPRESS specification:

*) SCHEMA ISO13584_25_IEC61360_5_liim_schema;

USE FROM ISO13584_IEC61360_dictionary_schema (axis1_placement_type, axis2_placement_2d_type, axis2_placement_3d_type, boolean_type, class_BSU, class_instance_type, class_value_assignment, complex_type, component_class, condition_DET, data_type_BSU, data_type_element, dates, dependent_P_DET, dic_unit, dic_value, entity_instance_type, identified_document, int_currency_type, int_measure_type, int_type, integer_type, item_class, item_names, label_with_language, level_type, material_class, mathematical_string, named_type, non_dependent_P_DET, non_quantitative_code_type, non_quantitative_int_type, non_si_unit, number_type, placement_type, property_BSU, property_DET, real_currency_type, real_measure_type, real_type,

274 CWA 15556-2:2006 (E)

string_type, supplier_BSU, supplier_element, value_domain);

USE FROM ISO13584_IEC61360_language_resource_schema (global_language_assignment, present_translations, translated_label, translated_text);

USE FROM ISO13584_instance_resource_schema (null_value, primitive_value, null_or_primitive_value, simple_value, null_or_simple_value, number_value, null_or_number_value, integer_value, null_or_integer_value, real_value, null_or_real_value, boolean_value, null_or_boolean_value, translatable_string_value, translated_string_value, string_value, null_or_translatable_string_value, complex_value, null_or_complex_value, entity_instance_value, null_or_entity_instance_value, defined_entity_instance_value, controlled_entity_instance_value, STEP_entity_instance_value, PLIB_entity_instance_value, property_or_data_type_BSU, level_spec_value, null_or_level_spec_value, int_level_spec_value, null_or_int_level_spec_value, real_level_spec_value, null_or_real_level_spec_value, property_value, context_dependent_property_value, dic_class_instance, null_or_dic_class_instance, dic_component_instance, dic_feature_instance, dic_material_instance, lib_component_instance, lib_feature_instance, lib_material_instance,

275 CWA 15556-2:2006 (E)

dic_f_model_instance, lib_f_model_instance);

USE FROM ISO13584_IEC61360_dictionary_aggregate_extension_schema (entity_instance_type_for_aggregate, list_type, set_type, bag_type, array_type, set_with_subset_constraint_type);

USE FROM ISO13584_extended_dictionary_schema (dictionary, dictionary_in_standard_format, library_iim_identification, view_exchange_protocol_identification, representation_type, geometric_representation_context_type, representation_reference_type, program_reference_type, program_library_BSU, document_BSU, supplier_program_library_relationship, class_document_relationship, representation_P_DET, class_related_dictionary_element, program_library_element, document_element, document_element_with_http_access, document_element_with_translated_http_access, referenced_document, referenced_graphics, feature_class, functional_model_class, fm_class_view_of, functional_view_class, non_instantiable_functional_view_class, view_control_variable_range, item_class_case_of, component_class_case_of, material_class_case_of, feature_class_case_of, a_posteriori_case_of, a_posteriori_view_of);

USE FROM ISO13584_external_file_schema (standard_simple_program_protocol, non_standard_simple_program_protocol, linked_interface_program_protocol, standard_data_protocol, non_standard_data_protocol, http_protocol, program_library_content, document_content,

276 CWA 15556-2:2006 (E)

representation_reference, program_reference, property_value_external_item, message, illustration, A6_illustration, A9_illustration, translated_external_content, not_translated_external_content, not_translatable_external_content, language_specific_content, external_file_unit, http_file, http_class_directory, simple_program_protocol);

USE FROM ISO13584_aggregate_value_schema (aggregate_entity_instance_value, list_value, set_value, bag_value, array_value, set_with_subset_constraint_value);

USE FROM ISO13584_library_content_schema (library, library_in_standard_format, explicit_item_class_extension, explicit_functional_model_class_extension, property_classification, property_value_recommended_presentation);

USE FROM measure_schema (amount_of_substance_measure, area_measure, context_dependent_measure, context_dependent_unit, conversion_based_unit, count_measure, derived_unit, derived_unit_element, dimensional_exponents, electric_current_measure, global_unit_assigned_context, length_measure, length_measure_with_unit, length_unit, luminous_intensity_measure, mass_measure, measure_value, measure_with_unit, named_unit, numeric_measure,

277 CWA 15556-2:2006 (E)

parameter_value, plane_angle_measure, positive_length_measure, positive_plane_angle_measure, ratio_measure, si_unit, solid_angle_measure, thermodynamic_temperature_measure, time_measure, volume_measure);

USE FROM person_organization_schema (address, organization, person);

USE FROM date_time_schema (date, date_and_time, local_time, calendar_date, ordinal_date, week_of_year_and_day_date);

USE FROM geometry_schema (axis1_placement, axis2_placement_2D, axis2_placement_3D, geometric_representation_context, placement);

USE FROM representation_schema (representation, representation_context, representation_item);

USE FROM application_context_schema (application_context, application_context_element, application_protocol_definition);

END_SCHEMA; -- ISO13584_25_IEC61360_5_liim_schema (*

NOTE The schemas referenced above can be found in the following documents: ISO13584_IEC61360_dictionary_schema IEC 61360-2:1998 (which is duplicated for convenience in informative Annex D of ISO 13584-42:1998), ISO13584_IEC61360_language_resource_schema IEC 61360-2:1998 (which is duplicated for convenience in informative Annex D of ISO 13584-42:1998), ISO13584_instance_resource_schema ISO 13584-24:2003, ISO13584_IEC61360_dictionary_aggregate_extension_schema This part of ISO 13584, ISO13584_extended_dictionary_schema ISO 13584-24:2003, ISO13584_external_file_schema ISO 13584-24:2003, ISO13584_aggregate_value_schema This part of ISO 13584, ISO13584_library_content_schema ISO 13584-24:2003, measure_schema ISO 10303-41:2000, person_organization_schema ISO 10303-41:2000, 278 CWA 15556-2:2006 (E)

date_time_schema ISO 10303-41:2000, geometry_schema ISO 10303-42:2000, representation_schema ISO 10303-43:2000, application_context_schema ISO 10303-41:2000.

DD-4 Conformance class requirements

DD-4.1 Conformance class 1: minimal dictionaries

Conformance class 1 addresses those implementations that are intended to support the common requirements stated in the ISO/IEC dictionary schema and its extension which handles aggregate data types and values. An implementation of conformance class 1 of library integrated information model 25 shall support the following entities and related constructs.

FROM ISO13584_IEC61360_dictionary_schema supplier_BSU supplier_element class_BSU item_class component_class material_class property_BSU property_DET condition_DET dependent_P_DET non_dependent_P_DET class_value_assignment data_type_BSU data_type_element number_type int_type int_measure_type int_currency_type integer_type non_quantitative_int_type real_type real_measure_type real_currency_type boolean_type string_type non_quantitative_code_type complex_type level_type class_instance_type entity_instance_type placement_type axis1_placement_type axis2_placement_2d_type axis2_placement_3d_type named_type value_domain dic_value

279 CWA 15556-2:2006 (E)

non_si_unit dic_unit dates identified_document item_names label_with_language mathematical_string

FROM ISO13584_IEC61360_language_resource_schema global_language_assignment present_translations translated_label translated_text

FROM ISO13584_IEC61360_dictionary_aggregate_extension_schema aggregate_entity_instance_type list_type set_type bag_type array_type set_with_subset_constraint_type

FROM measure_schema amount_of_substance_measure area_measure context_dependent_measure context_dependent_unit conversion_based_unit count_measure derived_unit derived_unit_element dimensional_exponents electric_current_measure global_unit_assigned_context length_measure length_measure_with_unit length_unit luminous_intensity_measure mass_measure measure_value measure_with_unit named_unit numeric_measure parameter_value plane_angle_measure positive_length_measure positive_plane_angle_measure ratio_measure si_unit solid_angle_measure thermodynamic_temperature_measure time_measure volume_measure

280 CWA 15556-2:2006 (E)

FROM person_organization_schema address organization

DD-4.2 Conformance class 2: dictionaries of items classes

Conformance class 2 addresses those implementations that support dictionary_elements from the extended dictionary schema without functional model and functional view classes and without aggregate types,. An implementation of conformance class 2 of library integrated information model 25 shall support the following entities and related constructs.

FROM ISO13584_IEC61360_dictionary_schema supplier_BSU supplier_element class_BSU item_class component_class material_class property_BSU property_DET condition_DET dependent_P_DET non_dependent_P_DET class_value_assignment data_type_BSU data_type_element number_type int_type int_measure_type int_currency_type integer_type non_quantitative_int_type real_type real_measure_type real_currency_type boolean_type string_type non_quantitative_code_type complex_type level_type class_instance_type entity_instance_type placement_type axis1_placement_type axis2_placement_2d_type axis2_placement_3d_type named_type value_domain dic_value non_si_unit dic_unit dates identified_document

281 CWA 15556-2:2006 (E)

item_names label_with_language mathematical_string

FROM ISO13584_IEC61360_language_resource_schema global_language_assignment present_translations translated_label translated_text

FROM ISO13584_extended_dictionary_schema dictionary dictionary_in_standard_format library_iim_identification view_exchange_protocol_identification document_BSU class_document_relationship representation_P_DET class_related_dictionary_element document_element document_element_with_http_access documented_element_with_translated_http_access referenced_document referenced_graphics feature_class item_class_case_of component_class_case_of material_class_case_of feature_class_case_of a_posteriori_case_of a_posteriori_view_of

FROM ISO13584_external_file_schema standard_data_protocol non_standard_data_protocol http_protocol document_content translated_external_content not_translated_external_content not_translatable_external_content language_specific_content external_file_unit http_file http_class_directory simple_program_protocol

FROM measure_schema amount_of_substance_measure area_measure context_dependent_measure context_dependent_unit conversion_based_unit count_measure derived_unit 282 CWA 15556-2:2006 (E)

derived_unit_element dimensional_exponents electric_current_measure global_unit_assigned_context length_measure length_measure_with_unit length_unit luminous_intensity_measure mass_measure measure_value measure_with_unit named_unit numeric_measure parameter_value plane_angle_measure positive_length_measure ratio_measure si_unit solid_angle_measure thermodynamic_temperature_measure time_measure volume_measure

FROM person_organization_schema address organization

DD-4.3 Conformance class 3: complete dictionaries

Conformance class 3 addresses those implementations that support conformance class 2 and that support both functional model and functional view classes and aggregate data types. An implementation of conformance class 3 of library integrated information model 25 shall support all the entities supported by conformance class 2 more the following entities and related constructs.

FROM ISO13584_extended_dictionary_schema representation_type geometric_representation_context_type representation_reference_type supplier_program_library_relationship functional_model_class fm_class_view_of functional_view_class non_instantiable_functional_view_class view_control_variable_range

FROM ISO13584_external_file_schema standard_simple_program_protocol non_standard_simple_program_protocol linked_interface_program_protocol program_library_content representation_reference

283 CWA 15556-2:2006 (E)

program_reference

FROM ISO13584_IEC61360_dictionary_aggregate_extension_schema aggregate_entity_instance_type list_type set_type bag_type array_type set_with_subset_constraint_type

Conformance class 4: complete dictionaries with limited nested aggregate values

Conformance class 4 addresses those implementations that support all the entities and associated constructs defined for conformance class 3 but with the restriction that the level of nesting of aggregates is limited to 2 by the nesting_level_aggregate_limit_rule rule

This rule is applied for each instance of the entity aggregate_type. The Boolean function no_more_than_two_nested_levels is used as a filter for each instance of the aggregate_type entity.

EXPRESS specification:

*) RULE nesting_level_aggregate_limit_rule FOR (library_iim_identification, aggregate_type); WHERE WR1: NOT (QUERY( liim_id <* library_iim_identification | (liim_id\data_exchange_specification_identification.name = 'ISO13584_25_IEC61360_5') AND ((liim_id\data_exchange_specification_identification. application[1]='4') OR (liim_id\data_exchange_specification_identification. application[1]='7'))) <> []) OR (QUERY (x <* aggregate_type | NOT no_more_than_two_nested_levels(x))= []); END_RULE; -- nesting_level_aggregate_limit_rule (*

284 CWA 15556-2:2006 (E)

Annex E (informative) Survey of main classes and categories of properties

Main Category/ sub-category Description / subjects class

Non-quantitative data A Identifications and indicators element types Quantitative data element types

Physical measures: C Physical chemistry and molecular physics

E Electricity and magnetism

F Periodic and related phenomena

G Acoustics

H Heat

J Information

K Mechanics

L Light and related electromagnetic radiations

T Space and time

U Atomic and nuclear physics

V Nuclear reactions and ionizing radiations

W Solid state physics

Non-physical measures:

financial measures M Financial amounts

P Financial rates: prices, tariffs

Other measures Q Denumerable quantities, counts

R Business ratios, percentages

285 CWA 15556-2:2006 (E)

Annex F (informative) Survey of type classification codes of quantitative data element types

In this survey the complete classification and title per main class are given in alphabetical order of main class code.

286 CWA 15556-2:2006 (E)

C Physical chemistry and molecular physics (ISO 31 part 8)

No type classification codes allocated.

E Quantities of electricity and Magnetism (ISO 31 part 5)

E01 electric current A E25 relative permeability 1 E02 electric charge, C E26 magnetic susceptibility 1 quantity of electricity E27 magnetic moment, A.m2 E03 volumic charge, volume C/m3 electromagnetic moment density of charge, E28 magnetization A/m charge density E29 magnetic polarization T E04 areic charge, surface density C/m2 E30 volumic electromagnetic energy, J/m3 of charge electromagnetic energy density E05 electric field strength V/m E31 Poynting vector W/m2 E06 electric potential, potential V E32 not used difference, tension, E33 resistance (to direct current) W electromotive force E34 conductance (for direct current) S E07 electric flux density C/m2 E35 power (for direct current) W E08 electric flux C E36 resistivity W.m E09 capacitance F E37 conductivity S/m E10 permittivity, electric constant, F/m E38 reluctance H-1 permittivity of vacuum E39 permeance H E11 relative permittivity 1 E40 not used E12 electric susceptibility 1 E41 frequency, E13 electric polarization C/m2 rotational frequency Hz, s-1 E14 electric dipole moment C.m E42 angular frequency, E15 areic electric current, A/m2 pulsatance rad/s, s-1 electric current density E43 phase difference, rad E16 lineic electric current, A/m E44 impedance, modulus of W linear electric current density impedance, resistance, reactance E17 magnetic field strength A/m E45 admittance, modulus of S E18 magnetic potential difference, A admittance, conductance, magnetomotive force, susceptance current linkage E46 quality factor 1 E19 magnetic flux density, T E47 loss factor 1 magnetic induction E48 loss angle rad E20 magnetic flux Wb E49 active power W E21 magnetic vector potential Wb/m E50 apparent power, reactive power V.A E22 self inductance, H E51 power factor 1 mutual inductance E52 active energy J, W.h E23 coupling factor, leakage factor 1 E24 permeability, magnetic constant, H/m permeability of vacuum

287 CWA 15556-2:2006 (E)

F Quantities of periodic and related phenomena (ISO 31 part 2)

F01 period, periodic time s F08 phase velocity, group m/s F02 time constant of an s velocity exponentially varying quantity F09 level of a field quantity Np, B F03 frequency, rotational frequency Hz, s-1 F10 level of a power quantity Np, B F04 angular frequency, pulsatance rad/s, s-1 F11 damping coefficient s-1, Np/s F05 wavelength m F12 logarithmic decrement Np F06 wave number, repetency m-1 F13 attenuation coefficient, m-1 F07 angular wavenumber, rad/m phase coefficient, angular repetency m-1 propagation coefficient

G Quantities of acoustics (ISO 31 part 7)

G01 period, periodic time s G18 acoustic impedance Pa.s/m3 G02 frequency Hz G19 mechanical impedance N.s/m G03 frequency interval octave G20 characteristic impedance of a Pa.s/m G04 angular frequency, pulsatance rad/s, s-1 of a medium, surface density of G05 wavelength m mechanical impedance G06 wave number, repetency m-1 G21 sound pressure level B G07 angular wave number, rad/m, G22 sound power level B angular repetency m-1 G23 damping coefficient s-1, Np/s G08 volumic mass, mass density, kg/m3 G24 time constant, relaxation time s density G25 logarithmic decrement Np G09 static pressure, sound pressure Pa G26 attenuation coefficient, m-1 G10 sound particle displacement m phase coefficient, G11 sound particle velocity m/s propagation coefficient G12 sound particle acceleration m/s2 G27 dissipation factor, 1 G13 volume flow rate m3/s reflection factor, transmission G14 velocity of sound (phase m/s factor, absorption factor velocity), group velocity G28 sound reduction index B G15 sound energy density, J/m3 G29 equivalent absorption area m2 volumic sound energy of a surface or object G16 sound power W G30 reverberation time s G17 sound intensity W/m2 G31 loudness level phon G32 loudness sone

288 CWA 15556-2:2006 (E)

H Quantities of heat (ISO 31 part 4)

H01 thermodynamic temperature K constant pressure, H02 Celsius temperature o C constant volume, saturation H03 linear expansion coefficient, K-1 H17 ratio of massic heat capacity, 1 cubic expansion coefficient, ratio of the specific heat relative pressure coefficient capacities, isentropic exponent H04 pressure coefficient Pa/K H18 entropy J/K H05 isothermal compressibility, Pa-1 H19 massic entropy, specific J/(kg.K) isentropic compressibility entropy H06 quantity of heat, heat J H20 energy, thermodynamic J H07 heat flow rate W energy, enthalpy, Helmholtz free H08 areic heat flow rate, W/m2 energy, Helmholtz function, density of heat flow rate Gibbs free energy, Gibbs function H09 thermal conductivity W/(m.K) H21 massic energy, specific energy, J/kg H10 coefficient of heat transfer, W/(m2.K) massic thermodynamic energy, surface coefficient of heat transfer specific thermodynamic energy, H11 thermal insulance, coefficient m2.K/W massic enthalpy, specific enthalpy, of thermal insulation massic Helmholtz free energy, H12 thermal resistance K/W specific Helmholtz free energy, H13 thermal conductance W/K specific Helmholtz function, massic H14 thermal diffusivity m2/s Gibbs free energy, specific Gibbs H15 heat capacity J/K free energy, specific Gibbs function H16 massic heat capacity, J/(kg.K) H22 Massieu function J/K specific heat capacity at: H23 Planck function J/K

J Quantities of information

J01 wordlength bit storage capacity byte J04 volume storage density bit/m3 register length word J05 transmission rate bit/s, Bd J02 linear storage density bit/m J06 error rate, code rate, 1 J03 surface storage density bit/m2 efficiency

K Quantities of mechanics (ISO 31 part 3)

K01 mass kg mass density, relative density K02 volumic mass, kg/m3 K04 massic volume, specific volume m3/kg mass density, density K05 lineic mass, linear density kg/m K03 relative volumic mass, relative 1 K06 areic mass, surface density kg/m2

289 CWA 15556-2:2006 (E)

K Quantities of mechanics, continued (ISO 31 part 3)

K07 moment of inertia kg.m2 K19 compressibility (bulk Pa-1 K08 momentum kg.m/s compressibility) K09 force, weight N K20 second moment of area m4 K10 impulse N.s K11 moment of momentum, kg.m2/s (second axial moment of angular momentum area), second polar moment K12 moment of force, moment N.m of area of a couple, torque K21 section modulus m3 K13 angular impulse N.m.s K22 dynamic friction factor, 1 K14 gravitational constant N.m2/kg2 static friction factor K15 pressure, normal stress, Pa K23 viscosity (dynamic viscosity) Pa.s shear stress K24 kinematic viscosity m2/s K16 linear strain (relative 1 K25 surface tension N/m elongation), shear strain, K26 energy, work, potential energy, J volume strain (bulk strain) kinetic energy K17 Poisson ratio, Poisson number 1 K27 power W K18 modulus of elasticity, shear Pa K28 efficiency 1 modulus, modulus of rigidity, K29 mass flow rate kg/s bulk modulus, modulus of K30 volume flow rate m3/s compression

L Quantities of light and related electromagnetic radiations (ISO 31 part 6)

L01 frequency Hz L17 radiant exposure J/m2 L02 angular frequency rad/s, s-1, L18 not used L03 wavelength m L19 not used L04 repetency, wavenumber m-1 L20 not used L05 angular repetency, rad/m, L21 emissivity, spectral emissivity, 1 angular wavenumber m-1 directional spectral emissivity L06 not used L22 photon number 1 L07 radiant energy J L23 photon flux s-1 L08 radiant energy density J/m3 L24 photon intensity s-1/sr L09 spectral concentration J/m4 L25 photon luminance, s-1/(sr_m2) of radiant energy density photon radiance L10 radiant power, W L26 photon exitance s-1/m2 radiant energy flux L27 photon irradiance s-1/m2 L11 radiant energy fluency J/m2 L12 radiant energy fluency rate W/m2 L28 photon exposure m-2 L13 radiant intensity W/sr L29 luminous intensity cd L14 radiance W/(sr.m2) L30 luminous flux lm L15 radiant exitance W/m2 L31 quantity of light lm.s L16 irradiance W/m2 L32 luminance cd/m2

290 CWA 15556-2:2006 (E)

L Quantities of light and related electromagnetic radiations, continued (ISO 31 part 6)

L33 luminous exitance lm/m2 spectral reflection factor, L34 illuminance lx spectral transmission factor, L35 light exposure lx.s spectral radiance factor L36 luminous efficacy, spectral lm/W L41 optical density 1 luminous efficacy, maximum L42 linear attenuation coefficient, m-1 spectral luminous efficacy linear absorption coefficient L37 luminous efficiency, 1 L43 molar absorption coefficient m2/mol spectral luminous efficiency L44 refractive index 1 L38 CIE colorimetric functions 1 L45 object distance, image distance, m L39 trichromatic coordinates 1 focal distance L40 spectral absorption factor, 1 L46 vergence, lens power m-1

M Amounts

M51 amounts of goods in situations M62 amounts of information objects in M52 amounts of goods in transactions transactions M53 amounts of goods in aggregations

P Prices, tariffs

P51 prices of goods in situations P52 prices of goods in transactions

Q Dimensionless business quantities and counts

Q31 quantities of defined time periods in Q56 quantities of product functions situations Q59 quantities of products in quality Q33 quantities of aggregated time periods statistics Q51 quantities of goods in situations Q61 quantities of document (part)s Q52 quantities of goods in transactions Q62 quantities of information objects in Q53 quantities of goods in aggregations transactions Q54 quantities of goods in hierarchical Q63 quantities of information objects in structures aggregations

R Business ratios and percentages

R41 percentages/ratios related to persons in R53 percentages/ratios related to goods in situations aggregations R51 percentages/ratios related to goods in R54 percentages/ratios related to goods in situations hierarchical structures R52 percentages/ratios related to goods in transactions

291 CWA 15556-2:2006 (E)

T Quantities of space and time (ISO 31 part 1)

T01 angle rad, T06 volume m3 o, ', " T07 time, time interval, duration s, min, h, d T02 solid angle sr T08 angular velocity rad/s T03 length, breadth, height, m T09 angular acceleration rad/s2 thickness,radius, diameter, length T10 velocity m/s of path, distance, cartesian coordinates, T11 acceleration, acceleration of m/s2 radius of curvatureT04curvature m-1 free fall, acceleration due T05 area m2 to gravity

U Quantities of atomic and nuclear physics (ISO 31 part 9)

No type classification codes allocated

V Quantities of nuclear reactions and ionizing radiations (ISO 31 part 10)

V01 reaction energy J, eV V20 total mass stopping power J.m2/kg V02 resonance energy J, eV eV.m2/kg V03 cross section, m2 V21 mean linear range m total cross section V22 mean mass range kg/m2 V04 angular cross section m2/sr V23 linear ionization by a m-1 V05 spectral cross section m2/J particle V06 spectral angular cross section m2/(sr.J) V24 total ionization by a 1 V07 macroscopic cross section, m-1 particle volumic cross-section V25 average energy loss per J, eV V08 particle fluency m-2 ion pair formed V09 particle fluency rate m-2.s-1 V26 mobility m2/(V.s) (particle flux density) V27 ion number density, ion density m-3 V10 energy fluency J/m2 V28 recombination coefficient m3/s V11 energy fluency rate W/m2 V29 neutron number density m-3 (energy flux density) V30 neutron speed m/s V12 current density of particles m-2.s-1 V31 neutron fluency rate s-1.m-2 V13 linear attenuation coefficient m-1 (neutron flux density) V14 mass attenuation coefficient m2/kg V32 diffusion coefficient for m2/s V15 molar attenuation coefficient m2/mol neutron number density V16 atomic attenuation coefficient m2 V33 diffusion coefficient for m V17 half-thickness, m neutron fluency rate half value thickness V34 neutron source density s-1/m3 V18 total linear stopping power J/m, V35 slowing-down density m-3/s eV/m V36 resonance escape 1 V19 total atomic stopping power J.m2, probability eV.m2 V37 lethargy 1

292 CWA 15556-2:2006 (E)

V Quantities of nuclear reactions and ionizing radiations, continued (ISO 31 part 10)

V38 average logarithmic energy 1 factor, effective multiplication factor decrement V48 reactor time constant s V39 mean free path m V49 activity Bq V40 slowing-down area, m2 V50 energy imparted, J diffusion area, migration area mean energy imparted V51 specific energy imparted, Gy V41 slowing-down length, m absorbed dose diffusion length, V52 dose equivalent Sv(J/kg) migration length V53 absorbed dose rate Gy/s V42 neutron yield per fission, 1 V54 linear energy transfer J/m, eV/m neutron yield per absorption V55 kerma Gy V43 fast fission factor 1 V56 kerma rate Gy/s V44 thermal utilization factor 1 V57 mass energy transfer coefficient m2/kg V45 non-leakage probability 1 V58 exposure C/kg, R V46 multiplication factor, 1 V59 exposure rate C/(kg.s) infinite medium multiplication R/s V47 reactivity 1

W Quantities of solid state physics

No type classification codes allocated

293 CWA 15556-2:2006 (E)

Annex G (informative) EXPRESS-G diagrams

Figure G.1 to G.7 correspond to the EXPRESS given in annex D. The diagrams use the EXPRESS-G graphical notation for the EXPRESS language. EXPRESS-G is defined in annex A of ISO 10303-11.

294 CWA 15556-2:2006 (E)

support_resource_schema.identifier

1, 2 (2) code *code_type support_resource_schema.identifier version *version_type 1, 4 (1) (DER) dic_identifier (ABS) 2, 6 (ABS) dictionary_element dictionary_definition basic_semantic_unit (INV) definition S[0,1] (INV) referenced_by S[0:1] 1, 10 (6)

(ABS) content_item (ABS) supplier_related_BSU

(DER) *absolute_id 1

1, 4 version_type 1, 15 (2, 2, 2, 3, 3, 6) (DER) name_scope 1, 18 (6) (RT) version 2, 12 (ABS) class

supplier_BSU (INV) describes_classes S[0:?] (ABS) class_related_BSU (RT) property_BSU (DER) *absolute_id code 1, 3 (2)

*supplier_code_ (INV) type added_visible_properties S[0:?] (DER) known_visible_ properties S[0:?]

*class_code_type (RT) code defined_by class_BSU support_resource_schema. (DER) *absolute_id identifier

(INV) subclasses S[0:?] 2, 12, (ABS) class

1, 13 (2, 2, 4)

1, 16 (2, 4) (RT) code *data_type_code_type

name_scope (DER) *absolute_id (INV) support_resource_schema. identifier added_visible_ data_type_BSU data_types S[0:?] 2, 12, (ABS) class (INV) defining_classes S[0:1] (DER) known_visible_data_types S[0:?]

Figure G.1 — ISO13584_IEC61360_dictionary_schema - Basic semantic units - EXPRESS-G diagram 1 of 6

295 CWA 15556-2:2006 (E)

identified_by 1, 2 (ABS) basic_semantic_unit support_resource_schema.identifier

time_stamps revision (ABS) 5, 5 dates *revision_type dictionary_element 2, 6 (1)

2, 9 (6) 1

3, 46 data_type_element org person_organization_schema.organization

supplier_element addr person_organization_schema.address

6, 8 (ABS) supplier_BSU_relationship (INV) (RT) associated_items S[0:?] names identified_by 1, 3 supplier_BSU 3, 24 item_names

definition ISO13584_IEC61360_language_ *definition_type resource_schema.translatable_text (ABS) note class_and_property_elements *note_type remark *remark_type

source_doc_of_definiton 3, 27 (ABS) document

1, 13 class_BSU 1 (RT) identified_by 2, 12 (1, 1, 1, 6, 3) described_by L[0:?] 1, 15 property_BSU its_superclass 1, 13 class_BSU

(DER) known_applicable_data_types S[0:?] (DER) known_applicable_properties S[0:?] defined_types S[0:?] (ABS) class 1, 16 data_type_BSU (INV) (DER) subclasses S[0:?] associated_items S[0:?] 6, 17 (ABS) class_BSU_relationship 3, 45 (ABS) property_DET

simplified_drawing sub_class_properties S[0:?] 6, 23 (ABS) graphics 1, 15 property_BSU class_constant_values item_class 6, 30 class_value_assignment S[0:?] coded_name 5, 1 value_code_type 1

component_class material_class

Figure G. 2 — ISO13584_IEC61360_dictionary_schema - Dictionary elements - EXPRESS-G diagram 2 of 6

296 CWA 15556-2:2006 (E)

3, 27 (2, 5, 5)

(ABS) document

document_identifier *source_doc_type identified_document

support_resource_schema.identifier

3, 24 (2, 3, 5, 5) *preferred_name *pref_name_type *synonymous_names S[0:?] 5, 22 syn_name_type

ISO13584_IEC61360_language_ resource_schema.translatable_label item_names *languages ISO13584_IEC61360_language_ resource_schema.present_translations *short_name *short_name_type icon

6, 23 (ABS) graphics

(RT) identified_by 3, 45 (2) 1, 15 property_BSU

synonymous_symbols preferred_symbol S[0:?] 5, 33 mathematical_string 5, 34 mathematical_string figure 6, 23 (ABS) graphics (ABS) det_classification property_DET *DET_classification_type domain 4, 35 (ABS) data_type formula 2, 12 (ABS) class support_resource_schema.identifier (DER) describes_classes S[0:?]

5, 33 mathematical_string

1

depends_on S[1:?] condition_DET 1, 15 property_BSU dependent_P_DET non_dependent_P_DET

3, 46 (2)

names 3, 24 item_names data_type_element type_definition 4, 35 (ABS) data_type

Figure G. 3 — ISO13584_IEC61360_dictionary_schema - EXPRESS-G diagram 3 of 6

297 CWA 15556-2:2006 (E)

4, 35 (3, 3)

(ABS) data_type

1

referred_type (ABS) complex_type 1, 16 data_type_BSU named_type

1

level *L[1:4] domain level_type level class_instance_type 1, 13 class_BSU

value_type type_name S[0:?] STRING

value_format *value_format_type (ABS) entity_instance_type (ABS) simple_type

support_resource_schema.identifier 1

boolean_type number_type string_type

1

non_quantitative_code_type int_type

1 domain

int_currency_type int_measure_type non_quantitative_int_type 5, 42 value_domain

currency unit domain

6, 37 dic_unit 5, 42 value_domain

*currency_code placement_type real_type currency 1 1

real_currency_type real_measure_type axis1_placement_type axis2_placement_2d_type

unit support_resource_schema.identifier 6, 37 dic_unit axis2_placement_3d_type

Figure G. 4 — ISO13584_IEC61360_dictionary_schema - The type system - EXPRESS-G diagram 4 of 6

298 CWA 15556-2:2006 (E)

5, 1 (2, 6)

*value_code_type support_resource_schema.identifier

value_code value_type integer_type INTEGER meaning dic_value 3, 24 item_names source_doc_of_value 3, 27 (ABS) document

5, 42 (4, 4)

its_values L[2:?] source_doc_of_value_domain 3, 27 (ABS) document value_domain terms L[0:?] 3, 24 item_names

*languages ISO13584_IEC61360_language_resource_schema .present_translations

5, 5 (2)

date_of_original_definition date_of_current_version dates

date_of_current_revision

date_ type

STRING

ISO13584_IEC61360_language language 5, 22 (3) resource_schema.language_code

label_with_language *syn_name_type

l support_resource_schema.label

5, 33 (3, 3, 3, 6) mathematical_string

text_representation SGML_representation

ISO13584_IEC61360_language_resource_schema.text

Figure G. 5 — ISO13584_IEC61360_dictionary_schema - EXPRESS-G diagram 5 of 6

299 CWA 15556-2:2006 (E)

6, 30 (2)

super_class_defined_property assigned_value class_value_assignment

1, 15 property_BSU 5, 1 value_code_type

measure_schema.named_unit

name non_si_unit support_resource_schema.label

6, 37 (4, 4)

structured_representation string_representation dic_unit

measure_schema.unit 5, 33, mathematical_string

6, 17 (2)

relating_class related_tokens S[1:?] (ABS) class_BSU_relationship

2, 12, (ABS) class 1, 18, (ABS) class_related_BSU

6, 8 (2)

relating_supplier related_tokens S[1:?] (ABS) supplier_BSU_relationship

2, 9, suplier_element 1, 10, (ABS) supplier_related_BSU

6, 23 (2, 3, 3)

(ABS) graphics

Figure G. 6 — ISO13584_IEC61360_dictionary_schema - EXPRESS-G diagram 6 of 6

300 CWA 15556-2:2006 (E)

translatable_label support_resource_schema.label

support_resource_schema.label

languages translated_label labels L[1:?] present_translations

language_codes languages *L[1:?]

translatable_text

language_code

support_resource_schema.text language

translated_text global_language_assignment texts L[1:?]

Figure G. 7 - ISO13584_IEC61360_language_resource_schema - EXPRESS-G diagram 1 of 1

301 CWA 15556-2:2006 (E)

referenced_dictionaries S[0:?]

*identified_by

*updates 1, 1 (6) 6, 2 dictionary_identification

ISO13584_external ISO13584_IEC61360 base_protocols S[0:?] _files_schema _dictionary_schema remark .external_file_protocol .remark_type

*responsible_supplier ISO13584_IEC61360 ISO13584_IEC61360 names _dictionary_schema dictionary _dictionary_schema .supplier_BSU .item_names referred_suppliers S[1:?] ISO13584_IEC61360 note *is_complete _dictionary_schema BOOLEAN .note_type *contained_classes a_posteriori_semantic_ *L[0:?] ISO13584_IEC61360 relationships _dictionary_schema S[0:?] .class_BSU 6, 1 (ABS) a_posteriori_semantic_relationship *update_agreement support_resource _schema.identifier

library_ supported_vep structure S[0:?] dictionary_in_ standard_format

level source_document_identifier support_resource _schema.identifier application

support_resource support_resource name _schema.identifier status _schema.label (ABS) data_exchange_ specification_identification date_time_schema date ISO13584_external_files .year_number external_file_protocols _schema. 1 S[0:?] _external_file_protocol

library_iim_ view_exchange_ identification protocol_identification

referenced_ISO10303_AP

application_context_schema .application_protocol_definition

Figure G.8 — ISO13584_extended_dictionary_schema diagram 1 of 7

302 CWA 15556-2:2006 (E)

ISO13584_IEC61360 ISO13584_IEC61360 ISO13584_IEC61360 _dictionary_schema _dictionary_schema _dictionary_schema .supplier_BSU .supplier_related_BSU .supplier_BSU_relationship

defined_by

(RT) related_tokens supplier_ program_ S[1:?] program_library_ *program_library (RT) code library_BSU (INV) relationship _code_type associated_to_supplier

ISO13584_IEC61360 2, 1 (7) _dictionary_schema .code_type (DER) absolute_id*

support_resource ISO13584_table _schema.identifier _resource_schema .table_identification

ISO13584_IEC61360 2, 2 (3,3,3,4,4,4,4,5,5,7) _dictionary_schema .class_related_BSU (RT) code *document _code_type 2, 3 (3,3,3,4,4,4,4,6,6,7)

(DER) absolute_id* name_scope name_scope ISO13584_IEC61360 table_BSU document_BSU _dictionary_schema (RT) code .code_type

ISO13584_IEC61360 (DER) _dictionary_schema absolute_id* *table_code_type (RT) .class_BSU related_tokens S[1:?] (RT) support_resource related_tokens _schema.identifier S[1:?] ISO13584_IEC61360 class_table class_document _dictionary_schema _relationship _relationship .code_type

ISO13584_IEC61360 _dictionary_schema .class_BSU_relationship Figure G.9 — ISO13584_extended_dictionary_schema diagram 2 of 7

303 CWA 15556-2:2006 (E)

ISO13584_IEC61360 _dictionary_schema .class *referenced_tables SET [0:?] 2,3 table_BSU

2,2 document_BSU *referenced_properties *referenced_documents ISO13584_IEC61360 LIST [0:?] _dictionary_schema SET [0:?] .data_type_BSU ISO13584_IEC61360 _dictionary_schema .class_BSU ISO13584_IEC61360 (ABS) _dictionary_schema a_priori_semantic .property_BSU *referenced_data_types relationship *referenced_classes SET [0:?] SET [1:?] 1

4,1 functional_model_class 4,2 fm_class_view_of

ISO13584_IEC61360 *imported_tables _dictionary_schema SET [0:?] .item_class 2,3 table_BSU

2,3 table_BSU (DER)(RT) 2,2 document_BSU referenced_tables * imported _documents SET [0:?] SET [0:?]

2,2 document_BSU (DER)(RT) referenced _documents SET [0:?] (DER) (RT) ISO13584_IEC61360 referenced_properties *imported_properties ISO13584_IEC61360 _dictionary_schema LIST [0:?] L[0:?] _dictionary_schema .property_BSU .property_BSU item_class_case_of *imported_types S[0:?] ISO13584_IEC61360 ISO13584_IEC61360 (DER) (RT) _dictionary_schema _dictionary_schema referenced_data_types .data_type_BSU .data_type_BSU SET [0:?] *is_case_of ISO13584_IEC61360 ISO13584_IEC61360 S[1:?] _dictionary_schema _dictionary_schema . class_BSU (DER) (RT) . class_BSU referenced_classes SET [1:?]

ISO13584_IEC61360 ISO13584_IEC61360 _dictionary_schema _dictionary_schema 1 .component_class .material_class

component_class_ 5,1 feature_class_ material_class_ case_of case_of case_of

Figure G.10 — ISO13584_extended_dictionary_schema diagram 3 of 7

304 CWA 15556-2:2006 (E)

305 CWA 15556-2:2006 (E)

ISO13584_IEC61360 _dictionary_schema .class *imported_tables _from_view SET [0:?] ISO13584_IEC61360 *parameter_type 2,3 table_BSU _dictionary_schema *imported_tables_ .property_BSU from_models SET [0:?] *imported_documents _from_view SET [0:?] *range_lobound 2,2 document_BSU INTEGER view_control_ *imported_documents_from_models SET [0:?] variable_range *imported_properties _from_view L[0:?] ISO13584_IEC61360 range_hibound *imported_properties _dictionary_schema _from_models .property_BSU *v_c_v_range S [0:?] L[0:?]

case_of S [0:?] (ABS) *imported_types_ ISO13584_IEC61360 ISO13584_IEC61360 abstract_functional_ from_view S[0:?] _dictionary_schema _dictionary_schema model_class .data_type_BSU .class_BSU *created_view *imported_types_ from_models S[0:?] ISO13584_IEC61360 ISO13584_IEC61360 _dictionary_schema _dictionary_schema 4, 1 (3) 4, 2 (3) .property_BSU 1 .property_BSU

(DER) (RT) *imported_properties_ referenced_properties from_item LIST [0:?] L[0:?] functional_ fm_class_ model_class view_of *imported_types_ (DER) (RT) from_item referenced_data_types S[0:?] SET [0:?] ISO13584_IEC61360 _dictionary_schema ISO13584_IEC61360 .data_type_BSU _dictionary_schema .data_type_BSU (DER)(RT) *imported_tables referenced_tables _from_item SET [0:?] SET [0:?] 2,3 table_BSU 2,3 table_BSU (DER)(RT) *imported_documents referenced_documents _from_item SET [0:?] SET [0:?] 2,2 document_BSU 2,2 document_BSU

(DER) (RT) *view_of ISO13584_IEC61360 referenced_classes ISO13584_IEC61360 _dictionary_schema SET [1:?] _dictionary_schema (DER) (RT) .class_BSU . class_BSU referenced_properties LIST [0:?] ISO13584_IEC61360 (DER) (RT) _dictionary_schema referenced_data_types ISO13584_IEC61360 .property_BSU SET [0:?] _dictionary_schema (DER)(RT) .data_type_BSU referenced_tables SET [0:?] (DER) (RT) 2,3 table_BSU referenced_classes ISO13584_IEC61360 SET [2:2] (DER)(RT) _dictionary_schema referenced_documents . class_BSU SET [0:?] 2,2 document_BSU Figure G.11 — ISO13584_extended_dictionary_schema diagram 4 of 7

306 CWA 15556-2:2006 (E)

ISO13584_IEC61360 _dictionary_schema. entity_instance_type

geometric_ representation_ program_ representation_type representation_ reference_ reference_ context_type type type

ISO13584_IEC61360 ISO13584_IEC61360 ISO13584_IEC61360 _dictionary_schema _dictionary_schema _dictionary_schema. .graphics .document item_class

referenced_ graphics_reference document_reference referenced_ feature_class graphics document 5,1 (3) 2,2 document_BSU 2,2 document_BSU

feature_class _case_of

ISO13584_IEC61360 _dictionary_schema .class

*view_control_variables *L[0:?]

view_properties ISO13584_IEC61360 *representation_type *L[0:?] STRING functional_ _dictionary_schema view_class .property_BSU

(DER) described_by *L[0:?]

(DER) view_properties ISO13584_IEC61360 non_instanciable *L[0:?] _functional_ _dictionary_schema view_class .property_BSU

Figure G.12 — ISO13584_extended_dictionary_schema diagram 5 of 7

307 CWA 15556-2:2006 (E)

ISO13584_IEC61360 _dictionary_schema 6, 2 (1, 1, 1) .code_type ISO13584_IEC61360 _dictionary_schema. defined_by code supplier_bsu *dictionary_code_type dictionary_identification revision version ISO13584_IEC61360 ISO13584_IEC61360 _dictionary_schema. _dictionary_schema. revision_type version_type (DER) *absolute_id (INV) definition S[0:1] support_resource_schema.identifier 2, 6 dictionary

(ABS) a_posteriori_ 6, 1 (1) semantic_ relationship

1 *source *functional_model

ISO13584_IEC61360 a_posteriori_ a_posteriori_ ISO13584_IEC61360 _dictionary_schema *is_case_of case_of view_of *is_view_of _dictionary_schema . class_BSU . class_BSU

corresponding_properties corresponding_properties L[0:?] OF L[2:2] L[0:?] OF L[2:2]

ISO13584_IEC61360 ISO13584_IEC61360 _dictionary_schema _dictionary_schema . property_BSU . property_BSU

ISO13584_IEC61360 _dictionary_schema .property_DET

representation _P_DET

ISO13584_table ISO13584_IEC61360 ISO13584_table _resource_schema _dictionary_schema _resource_schema .RDB_table_extension .content_item .table_extension

(RT) (DER) *dictionary_definition table_identifier 2,3 table_BSU table_content 2,3 table_BSU

RDB_table_content

Figure G.13 — ISO13584_extended_dictionary_schema diagram 6 of 7

308 CWA 15556-2:2006 (E)

ISO13584_IEC61360 _dictionary_schema ISO13584_IEC61360 .dictionary_element _dictionary_schema ISO13584_IEC61360 .supplier_related_BSU _dictionary_schema ISO13584_IEC61360 .class_related_BSU _dictionary_schema names names .item_names (ABS) (ABS) (RT) class_related_ supplier_related_ identified_by definition definition dictionary_element (RT) _dictionary_element ISO13584_IEC61360 identified_by _dictionary_schema .definition_type

note note ISO13584_IEC61360 _dictionary_schema .note_type ISO13584_table remark _resource_schema remark ISO13584_IEC61360 .table_specification _dictionary_schema .remark_type 1

authors publishing_ person_organization person_organization L[1:?] organisation document _schema _schema.person _element .organization program_library (RT) identified_by _element 1 2, 2 document_BSU

(RT) document_element document_element_with identified_by _with_http_access _translated_http_access 2,1 program_library_BSU languages absolute_ remote_ URL_type remote_ ISO13584_IEC61360_ location locations language_ressource_schema. L [1:?] present_translations support_ressource (RT) identified_by table _schema. 2, 3 table_BSU _element identifier (RT) *column_meaning *L[1:?] ISO13584_variable _semantics_schema (RT) .self_property_semantics key S[1:?] (DER) ISO13584_table table_identifier _resource_schema .table_identification ISO13584_table _resource_schema .RDB_table_ specification

RDB_table _element Figure G.14 — ISO13584_extended_dictionary_schema diagram 7 of 7

309 CWA 15556-2:2006 (E)

country 1, 1 (2) level support_resource _schema.identifier ISO13584_IEC61360 designation *protocol_name _dictionary_schema .item_names *protocol_version (ABS) organisation external_file person_organization _protocol _schema.organization base_protocol 1

(ABS) 1, 3 (2, 2) program_protocol

1 1

language support_resource 1, 2 (2, 2, 2) *compiler_name _schema.identifier

(ABS) (ABS) (ABS) *status (ABS) program_status linked_interface data_protocol standard non_standard simple_ _program_protocol _protocol _protocol program_protocol

*compiler_version_type *compiler _version link_ 1 *compiler person_organization libraries _supplier S[1:?] 1 _schema.organization

1 1

ISO13584_extended standard non_standard standard_simple_ non_standard_simple_ _dictionary_schema data_protocol data_protocol program_protocol program_protocol .program_library_BSU

http_RFC http_protocol 3, 2 IAB_RFC

Figure G.15 — ISO13584_external_file_schema diagram 1 of 3

310 CWA 15556-2:2006 (E)

used_protocol (ABS) 1, 1 (ABS) external_file_protocol external_item content 3, 1 (ABS) external_content (INV) describes

1 ISO13584_library ISO13584_IEC61360 _content_schema.model _dictionary_schema ISO13584_IEC61360 _class_extension .content_item _dictionary_schema .revision_type referenced_external_item (INV) *belongs_to revision (ABS) (ABS) property_value *code *external_item dictionary_ class_extension_ external_item _code_type external_item external_item

1 1 support_resource _schema.identifier

in_parameters 1, 2 (ABS) data_protocol L[0:?] (RT) (RT) used_protocol used_protocol out_ parameters ISO13584_instance L[0:?] _resource_schema .property_or (ABS) (ABS) _datatype_BSU (ABS) supplier_BSU class_BSU (ABS) program_ representation _related_content _related_content dialogue_resource reference _reference inout_parameters (RT) (RT) L[0:?] dictionary dictionary representation_id syntactical_ _definition _definition name ISO13584_extended ISO13584_extended ISO13584_IEC1360 program_reference _dictionary_schema _dictionary_schema _dictionary_schema _name_type .supplier_related_BSU .class_related_BSU .graphics 1 program_ document_ _library_content content support_resource message illustration _schema.identifier (RT) (RT) dictionary dictionary _definition _definition kind_of_content support_resource ISO13584_extended ISO13584_extended _schema.label _dictionary_schema _dictionary_schema .document_BSU .program_library_BSU *width (RT) used_protocol *height (RT) 1, 3 (ABS) program_protocol (RT) used_protocol illustration_type measure_schema. used_protocol 1, 2 (ABS) data_protocol length_measure_ with_unit 1, 3 (ABS) program_protocol 1 A6_illustration A9_illustration

Figure G.16 — ISO13584_external_file_schema diagram 2 of 3

311 CWA 15556-2:2006 (E)

(ABS) *consists_of L[1:?] 3, 1 (2) (INV) external_content (INV) content_of content_of

1

not_translatable_ translated_ not_translated_ external_content external_content external_content

*languages character_ language_ encoding specific_ character_set_type ISO13584_IEC61360 content _language_resource_schema. present_translations (INV) unit_of support_resource _schema.identifier

*main_file file *external_file_address external_ file_unit content_files S[1:?]

content_encoding support_resource *content_encoding_type _schema.identifier

mime 3, 2 (1) *MIME_type

exchange_format format_RFC *IAB_RFC http_file *MIME_subtype *http_file_name *http_file_name_type INTEGER

ISO13584_extended remote_access _dictionary_schema *http_directory .absolute_URL_type

name ISO13584_IEC61360_ class http_class *http_directory_name_type dictionary_schema _directory .class_BSU Figure G.17 — ISO13584_external_file_schema diagram 3 of 3

312 CWA 15556-2:2006 (E)

ISO13584_IEC6136 _dictionary_schema _entity_instance_type.

ISO13584_IEC6136 entity_instance_type _dictionary_schema _data_type.

type_structure value_type (ABS) aggregate_type bound_1 INTEGER bound_2 1

(RT)

set_with_subset_ array_type bag_type list_type set_typ INTEGER (RT) cardinal_min* are_optional uniqueness uniqueness

cardinal_max* BOOLEAN BOOLEAN

Figure G.18 — ISO13584_IEC61630_dictionary_aggregate_extension_schema diagram 1 of 1

313 CWA 15556-2:2006 (E)

Index a_posteriori_case_of...... 170 a_posteriori_semantic_relationship...... 169 a_posteriori_view_of ...... 171 a_priori_semantic_relationship...... 156 A6_illustration...... 251 A9_illustration...... 251 absolute_URL_type...... 131 abstract_functional_model_class ...... 159 aggregate_type...... 266 allowed_named_type_usage_rule...... 175 applicable_documents...... 187 applicable_properties ...... 183 applicable_properties_for_applicable_tables ...... 215 applicable_tables...... 185 applicable_types...... 184 array_type...... 268 assert_oneof_for_class_rule ...... 176 assert_oneof_for_table_rule ...... 176 bag_type...... 268 character_set_type...... 234 check_is_case_of_referenced_classes_definition...... 219 check_view_of_instance_datatype...... 217 Class attributes Applicable Properties...... 41 Applicable Types ...... 40 Class Value Assignement...... 41 Code ...... 38 Date of Current Revision ...... 43 Date of Current Version...... 43 Date of Original Definition...... 43 Definition...... 42 Note ...... 42 Preferred Name ...... 39 Remark ...... 42 Revision Number ...... 44 Short Name...... 39 Simplified Drawing ...... 43 Source Document of Definition...... 42 Sub-class Selection Properties...... 40 Superclass...... 38 Synonymous name ...... 39 Version Number...... 44 Visible Properties...... 41 Visible Types ...... 40

314 CWA 15556-2:2006 (E) class_BSU_related_content...... 245 class_document_relationship...... 148 class_extension_external_item ...... 247 class_related_dictionary_element ...... 150 class_table_relationship ...... 147 compatible_content_and_specification ...... 217 compatible_list_library_types_and_columns...... 209 compatible_subclass...... 203 compatible_types ...... 205 compiler_version_length ...... 229 compiler_version_type ...... 235 complex_type_data_type...... 203 component_class_case_of...... 168 content_encoding_type ...... 234 control_compiler_version_format...... 263 created_view_is_functional_view ...... 218 data_exchange_specification_identification...... 139 data_protocol...... 238 data_type_class_of ...... 197 data_type_level_spec...... 199 data_type_level_value_typeof ...... 201 data_type_named_type...... 195 data_type_non_quantitative_code_type...... 214 data_type_non_quantitative_int_type...... 213 data_type_type_name...... 198 data_type_typeof ...... 196 Definitions basic semantic unit ...... 19 class valued property...... 19 common dictionary schema...... 19 data element type ...... 20 data type ...... 20 dictionary data...... 20 dictionary element...... 20 information...... 18 information model ...... 18 item ...... 20 non-quantitative data element type...... 20 property...... 20 quantitative data element type...... 20 standardized identification hierarchy...... 20 dialogue_resource...... 249 dictionary ...... 136 dictionary_code_len...... 130 dictionary_code_type...... 132 dictionary_external_item ...... 244 dictionary_identification ...... 133 dictionary_in_standard_format...... 139 document_BSU ...... 146 document_code_type ...... 130 document_content...... 246 document_element...... 152 document_element_with_http_access ...... 153 document_element_with_translated_http_access ...... 154 element_code_len...... 130 entity_instance_type_for_aggregate ...... 266 EXPRESS resources acyclic_superclass_relationship ...... 98 all_class_descriptions_reachable...... 105 assert_ONEOF ...... 87 axis1_placement_type ...... 84

315 CWA 15556-2:2006 (E)

axis2_placement_2d_type ...... 84 axis2_placement_3d_type ...... 84 basic_semantic_unit ...... 57 boolean_type ...... 80 check_datatypes_applicability ...... 110 check_label_length...... 114 check_properties_applicability...... 109 check_syn_length ...... 99 check_text_length...... 115 class...... 66 class_and_property_elements...... 66 class_BSU ...... 64 class_BSU_relationship...... 61 class_code_len...... 55 class_code_type ...... 89 class_instance_type ...... 82 class_related_BSU ...... 61 class_value_assignment ...... 74 code_type ...... 89 codes_are_unique ...... 99 complex_type...... 81 component_class...... 70 compute_known_applicable_data_types...... 108 compute_known_applicable_properties ...... 107 compute_known_visible_data_types ...... 107 compute_known_visible_properties ...... 106 condition_DET ...... 73 content_item ...... 59 currency_code ...... 90 data_type ...... 77 data_type_BSU...... 75 data_type_code_len...... 55 data_type_code_type...... 90 data_type_element ...... 76 date_type ...... 90 dates ...... 95 definition_available_implies ...... 100 definition_type...... 90 dependent_P_DET ...... 73 DET_classification_len ...... 55 DET_classification_type ...... 91 dic_unit ...... 88 dic_value...... 87 dictionary_element...... 58 document...... 95 entity_instance_type ...... 83 global_language_assignment...... 112 graphics ...... 95 identified_document...... 96 int_currency_type...... 79 int_measure_type ...... 78 int_type ...... 78 integer_type ...... 86 is_subclass ...... 100 ISO13584_IEC61360_dictionary_schema...... 54 ISO13584_IEC61360_language_resource_schema ...... 111 item_class...... 69 item_names ...... 96 label_with_language ...... 97 language_code ...... 111 level ...... 82

316 CWA 15556-2:2006 (E) level_type...... 82 list_to_set...... 109 material_class...... 70 mathematical_string ...... 98 named_type ...... 85 non_dependent_P_DET ...... 74 non_quantitative_code_type...... 81 non_quantitative_int_type ...... 79 non_si_unit ...... 87 note_type ...... 91 number_type...... 78 placement_type ...... 83 pref_name_len...... 55 pref_name_type...... 91 present_translations ...... 112 property_BSU ...... 70 property_code_len ...... 55 property_code_type ...... 92 property_DET ...... 71 real_currency_type ...... 80 real_measure_type ...... 80 real_type ...... 79 remark_type...... 92 revision_len...... 55 revision_type...... 92 sep_cv ...... 55 sep_id ...... 55 short_name_len...... 55 short_name_type ...... 92 simple_type...... 77 single_language_assignment ...... 115 source_doc_len ...... 55 source_doc_type ...... 94 string_for_derived_unit ...... 101 string_for_named_unit...... 103 string_for_SI_unit...... 103 string_for_unit...... 105 string_type ...... 81 supplier_BSU...... 62 supplier_BSU_relationship ...... 61 supplier_code_len...... 55 supplier_code_type...... 93 supplier_element ...... 63 supplier_related_BSU...... 61 syn_name_len ...... 55 syn_name_type...... 93 translatable_label...... 112 translatable_text ...... 113 translated_label ...... 113 translated_text ...... 113 value_code_len...... 55 value_code_type...... 93 value_domain ...... 86 value_format_len ...... 55 value_format_type ...... 94 value_type...... 86 version_len ...... 55 version_type...... 94

317 CWA 15556-2:2006 (E) external_content...... 256 external_file_address ...... 231 external_file_address_length ...... 230 external_file_protocol ...... 236 external_file_unit ...... 259 external_item...... 243 external_item_code_length ...... 230 external_item_code_type ...... 231 feature_class...... 155 feature_class_case_of ...... 169 fm_class_view_of...... 162 functional_model_class...... 161 functional_view_class...... 164 functional_view_v_c_v ...... 193 geometric_representation_context_type ...... 142 get_property_BSU_from_property_semantics ...... 209 http_class_directory ...... 261 http_directory_name_length...... 230 http_directory_name_type...... 232 http_directory_refers_to_bsu_related_class_rule ...... 254 http_directory_refers_to_class_extension_rule...... 254 http_file...... 260 http_file_name_length...... 230 http_file_name_type ...... 231 http_protocol...... 242 IAB_RFC ...... 233 illustration ...... 250 illustration_is_not_a_referenced_graphics_rule...... 255 illustration_type...... 236 imported_data_types_are_visible_or_applicable_rule ...... 178 imported_documents_are_visible_or_applicable_rule ...... 179 imported_properties_are_visible_or_applicable_rule...... 177 imported_tables_are_visible_or_applicable_rule ...... 179 ISO13584_25_IEC61360_5_liim_schema ...... 274 ISO13584_extended_dictionary_schema ...... 123 ISO13584_external_file_schema ...... 221 item_class_case_of...... 167 language_specific_content...... 258 library_iim_identification ...... 140 linked_interface_program_protocol...... 241 list_type ...... 267 makes_reference_outside...... 189 makes_sub_list ...... 208 material_class_case_of...... 169 message...... 249 MIME_subtype...... 233 MIME_type ...... 232 nesting_level_aggregate_limit_rule...... 284 no_forward_reference_from_table_rule...... 177 no_http_directory_for_supplier_related_file_rule ...... 253 non_instantiable_functional_view_class ...... 166 non_standard_data_protocol...... 242 non_standard_protocol...... 238 non_standard_simple_program_protocol...... 240 not_translatable_external_content ...... 258 not_translated_external_content...... 257 ordered_index_value...... 207 prefix_ordered_class_list ...... 191 program_library_BSU...... 143 program_library_code_type...... 131 program_library_content ...... 245

318 CWA 15556-2:2006 (E) program_library_element ...... 150 program_protocol ...... 239 program_reference...... 248 program_reference_name_type...... 235 program_reference_type...... 143 program_status ...... 235 Property attributes Code ...... 28 Condition...... 32 Data type...... 28 Date of Current Revision ...... 34 Date of Current Version...... 34 Date of Original Definition...... 34 Definition...... 30 Definition Class...... 28 Formula...... 32 Note ...... 31 Preferred Letter Symbol...... 29 Preferred Name ...... 29 Property Type Classification ...... 30 Remark ...... 31 Revision Number ...... 35 Short Name...... 29 Source Document of Definition...... 31 Synonymous Letter Symbol...... 29 Synonymous Name ...... 30 Unit ...... 31 Value Format ...... 32 Version Number...... 34 property_value_external_item ...... 252 RDB_table_content ...... 173 RDB_table_element ...... 152 referenced_document ...... 154 referenced_graphics ...... 155 representation_P_DET...... 149 representation_property_for_model_and_view...... 174 representation_reference ...... 248 representation_reference_type ...... 142 representation_type...... 141 retrieve_documents...... 188 retrieve_functional_view_v_c_v ...... 194 retrieve_tables...... 186 RULES Applicability of inherited properties ...... 26 Choice of properties...... 25 Class valued assignment level ...... 25 Class valued properties ...... 25 Classification...... 24 Field covered by the hierarchy...... 24 Homogeneity of simple family of parts...... 24 Instanciation rule...... 24 Maximum applicability...... 25 Semantic identification...... 25

319 CWA 15556-2:2006 (E) set_type...... 267 set_type_with_subset_constraint ...... 269 simple_program_protocol...... 239 simple_type_data_type...... 202 standard_data_protocol...... 242 standard_protocol...... 237 standard_simple_program_protocol...... 240 sub_list_until...... 208 superclass_of_item_is_item...... 216 supplier_associated_http_files ...... 262 supplier_BSU_related_content...... 244 supplier_program_library_relationship ...... 147 supplier_related_dictionary_element...... 149 table_BSU ...... 145 table_code_type ...... 131 table_content...... 172 table_element...... 151 translated_external_content...... 256 unique_http_directory_name_per_supplier_rule ...... 253 unique_http_file_name_per_supplier_element_rule ...... 252 view_control_variable_range...... 166 view_control_variables_attributes_belong_to_domain...... 218 view_exchange_protocol_identification...... 141 visible_documents...... 182 visible_properties ...... 180 visible_tables...... 181 visible_types...... 181

320 CWA 15556-2:2006 (E) ********* Do Not Delete This Line! ******* Ne Pas Supprimer Cette Ligne ******* Do Not Delete This Line!****

321