AP scope  |  AP module  |  AP contents  |  AP index
Application module: Product data management ISO/TS 10303-1231:2005(E)
© ISO

Cover page
Table of contents
Copyright
Foreword
Introduction
1 Scope
2 Normative references
3 Terms, definitions and abbreviations

4 Information requirements
   4.1 Required AM ARMs
   4.2 ARM type definitions
5 Module interpreted model
   5.1 Mapping specification
   5.2 MIM EXPRESS short listing
     5.2.1 MIM type definitions

A MIM short names
B Information object registration
C ARM EXPRESS-G   EXPRESS-G
D MIM EXPRESS-G   EXPRESS-G
E Computer interpretable listings
F Application module implementation and usage guide
Bibliography
Index

(*
ISO TC184/SC4/WG3 N1879 - ISO/TS 10303-1231 Product data management - EXPRESS ARM Long form
Supersedes ISO TC184/SC4/WG3 N1486
*)



SCHEMA Product_data_management_arm_lf;


TYPE activity_item = SELECT
   (Item_usage_effectivity,
    Product_version,
    Product_view_definition,
    View_definition_relationship);
END_TYPE;

TYPE affected_item_select = SELECT
   (Assigned_property,
    Product_version,
    Product_view_definition,
    View_definition_relationship);
END_TYPE;

TYPE any_number_value = NUMBER;
END_TYPE;

TYPE any_string_value = STRING;
END_TYPE;

TYPE approval_item = SELECT
   (Activity,
    Applied_activity_assignment,
    Certification,
    Contract,
    Digital_document_definition,
    Document_definition_relationship,
    Document_version,
    Item_usage_effectivity,
    Physical_document_definition,
    Work_request);
END_TYPE;

TYPE assigned_document_select = SELECT
   (Document,
    Document_definition,
    Document_version,
    File);
END_TYPE;

TYPE assigned_name_select = SELECT
   (External_class_library);
END_TYPE;

TYPE cartesian_transformation = SELECT
   (Cartesian_transformation_2d,
    Cartesian_transformation_3d);
END_TYPE;

TYPE certification_item = SELECT
   (Product_version_relationship);
END_TYPE;

TYPE characterized_activity_definition = SELECT
   (Activity,
    Activity_method);
END_TYPE;

TYPE classification_item = SELECT
   (Activity,
    Activity_method,
    Activity_method_assignment,
    Activity_property,
    Activity_relationship,
    Address,
    Address_assignment,
    Affected_items_assignment,
    Alternate_product_relationship,
    Applied_activity_assignment,
    Approval,
    Approval_assignment,
    Approval_relationship,
    Approval_status,
    Approving_person_organization,
    Assembly_relationship_substitution,
    Assigned_property,
    Attribute_translation_assignment,
    Calendar_date,
    Certification,
    Certification_assignment,
    Class,
    Context_dependent_unit,
    Contract,
    Contract_assignment,
    Conversion_based_unit,
    Date_or_date_time_assignment,
    Date_time,
    Derived_unit,
    Digital_document_definition,
    Digital_file,
    Directed_activity,
    Document_assignment,
    Effectivity,
    Event,
    Event_assignment,
    External_source_identification,
    File,
    File_relationship,
    Identification_assignment,
    Independent_property,
    Independent_property_relationship,
    Independent_property_representation,
    Language,
    Numerical_item_with_unit,
    Organization,
    Organization_or_person_in_organization_assignment,
    Organization_relationship,
    Part_view_definition,
    Person,
    Product,
    Product_category,
    Product_concept,
    Product_configuration,
    Product_version,
    Product_version_relationship,
    Product_view_definition,
    Project,
    Project_assignment,
    Project_relationship,
    Representation,
    Representation_context,
    Representation_item,
    Security_classification,
    Security_classification_assignment,
    String_representation_item,
    Uncertainty_with_unit,
    Value_with_unit,
    View_definition_context,
    View_definition_relationship,
    Work_order,
    Work_request,
    Work_request_status);
END_TYPE;

TYPE contract_item = SELECT
   (Document_version);
END_TYPE;

TYPE date_or_date_time_item = SELECT
   (Activity,
    Applied_activity_assignment,
    Certification,
    Contract,
    Digital_document_definition,
    Digital_file,
    Document_definition_relationship,
    Document_version,
    Hardcopy,
    Organization_or_person_in_organization_assignment,
    Physical_document_definition,
    Security_classification_assignment,
    Work_request);
END_TYPE;

TYPE date_or_date_time_select = SELECT
   (Calendar_date,
    Date_time);
END_TYPE;

TYPE date_or_event = SELECT
   (Calendar_date,
    Date_time,
    Event);
END_TYPE;

TYPE day_in_month_number = INTEGER;
WHERE
  WR1: { 1 <= SELF <= 31 } ;
END_TYPE;

TYPE descriptive_or_numerical = SELECT
   (Descriptive_document_property,
    Numerical_document_property);
END_TYPE;

TYPE document_property_item = property_assignment_select;
WHERE
  wr1: NOT ( 'PRODUCT_DATA_MANAGEMENT_ARM.PART_VIEW_DEFINITION' IN TYPEOF ( SELF ) ) ;
  wr2: NOT ( 'PRODUCT_DATA_MANAGEMENT_ARM.PRODUCT_VIEW_DEFINITION' IN TYPEOF ( SELF ) ) ;
  wr3: NOT ( 'PRODUCT_DATA_MANAGEMENT_ARM.VIEW_DEFINITION_RELATIONSHIP' IN TYPEOF ( SELF ) ) ;
END_TYPE;

TYPE documented_element_select = SELECT
   (Activity,
    Activity_method,
    Part,
    Part_version,
    Part_view_definition,
    Product_version_relationship,
    Shape_element,
    Shape_element_relationship,
    Work_request);
END_TYPE;

TYPE effectivity_item = SELECT
   (Product_version,
    Product_view_definition,
    View_definition_relationship);
END_TYPE;

TYPE event_item = SELECT
   (Project);
END_TYPE;

TYPE external_identification_item = SELECT
   (Document_definition,
    File);
END_TYPE;

TYPE geometric_mapping_target = SELECT
   (Axis_placement,
    cartesian_transformation);
END_TYPE;

TYPE hour_in_day = INTEGER;
WHERE
  WR1: { 0 <= SELF < 24 } ;
END_TYPE;

TYPE identification_item = SELECT
   (Approval_status,
    Contract,
    Digital_document_definition,
    Digital_file,
    Document,
    Document_version,
    Hardcopy,
    Organization,
    Physical_document_definition,
    Security_classification,
    Shape_element_relationship);
END_TYPE;

TYPE length_measure = REAL;
END_TYPE;

TYPE limit_qualifier_list = ENUMERATION OF
   (minimum,
    maximum);
END_TYPE;

TYPE measure_value = SELECT
   (any_number_value,
    any_string_value,
    length_measure,
    plane_angle_measure);
END_TYPE;

TYPE minute_in_hour = INTEGER;
WHERE
  WR1: { 0 <= SELF <= 59 } ;
END_TYPE;

TYPE month_in_year_number = INTEGER;
WHERE
  WR1: { 1 <= SELF <= 12 } ;
END_TYPE;

TYPE offset_orientation = ENUMERATION OF
   (ahead,
    exact,
    behind);
END_TYPE;

TYPE organization_or_person_in_organization_item = SELECT
   (Activity,
    Applied_activity_assignment,
    Approval,
    Contract,
    Digital_document_definition,
    Digital_file,
    Document,
    Document_definition,
    Document_version,
    Hardcopy,
    Identification_assignment,
    Part,
    Part_version,
    Part_view_definition,
    Physical_document_definition,
    Product_configuration,
    Security_classification,
    Security_classification_assignment,
    Work_request);
END_TYPE;

TYPE organization_or_person_in_organization_select = SELECT
   (Organization,
    Person_in_organization);
END_TYPE;

TYPE plane_angle_measure = REAL;
END_TYPE;

TYPE project_item = SELECT
   (Activity,
    Product_concept);
END_TYPE;

TYPE property_assignment_select = SELECT
   (Document_definition,
    File,
    Part_view_definition,
    Product_view_definition,
    View_definition_relationship);
END_TYPE;

TYPE second_in_minute = REAL;
WHERE
  WR1: { 0 <= SELF <= 60.0 } ;
END_TYPE;

TYPE security_classification_item = SELECT
   (Assembly_component_relationship,
    Digital_document_definition,
    Digital_file,
    Document,
    Document_version,
    Hardcopy,
    Physical_document_definition);
END_TYPE;

TYPE shape_dependent_select = SELECT
   (Item_shape,
    Shape_element);
END_TYPE;

TYPE shape_model = SELECT
   (External_geometric_model,
    Geometric_model);
END_TYPE;

TYPE shape_select = SELECT
   (Item_shape,
    Shape_element,
    Shape_element_relationship);
END_TYPE;

TYPE shapeable_item = SELECT
   (Characterizable_object,
    Product_view_definition,
    View_definition_usage);
END_TYPE;

TYPE string_select = SELECT
   (Approval,
    Approval_relationship,
    Approval_status,
    Certification,
    Contract,
    Date_or_date_time_assignment,
    Digital_document_definition,
    Document,
    Document_assignment,
    Document_definition_relationship,
    Document_version,
    External_item_identification,
    External_source_identification,
    File_relationship,
    Identification_assignment,
    Organization_relationship,
    Person_in_organization,
    Physical_document_definition,
    Product,
    Product_category,
    Product_version,
    Product_view_definition,
    Project,
    Project_assignment,
    Project_relationship,
    View_definition_relationship);
END_TYPE;

TYPE template_instance = SELECT
   (Mapping_based_template_instance,
    Transformation_based_template_instance);
END_TYPE;

TYPE time_interval_item = SELECT
   (Activity);
END_TYPE;

TYPE version_or_definition = SELECT
   (Product_version,
    Product_view_definition);
END_TYPE;

TYPE year_number = INTEGER;
END_TYPE;

ENTITY Activity;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  chosen_method : Activity_method;
END_ENTITY;

ENTITY Activity_method;
  name : STRING;
  description : OPTIONAL STRING;
  consequence : OPTIONAL STRING;
  purpose : STRING;
END_ENTITY;

ENTITY Activity_method_assignment;
  relation_type : STRING;
  assigned_method : Activity_method;
  associated_request : Work_request;
END_ENTITY;

ENTITY Activity_property;
  name : STRING;
  description : STRING;
  described_element : characterized_activity_definition;
END_ENTITY;

ENTITY Activity_property_representation;
  description : OPTIONAL STRING;
  property : Activity_property;
  rep : Representation;
  role : STRING;
END_ENTITY;

ENTITY Activity_relationship;
  name : STRING;
  description : OPTIONAL STRING;
  relating_activity : Activity;
  related_activity : Activity;
END_ENTITY;

ENTITY Activity_status;
  assigned_activity : Activity;
  status : STRING;
END_ENTITY;

ENTITY Address;
  name : OPTIONAL STRING;
  street_number : OPTIONAL STRING;
  street : OPTIONAL STRING;
  postal_box : OPTIONAL STRING;
  town : OPTIONAL STRING;
  region : OPTIONAL STRING;
  postal_code : OPTIONAL STRING;
  country : OPTIONAL STRING;
  internal_location : OPTIONAL STRING;
  facsimile_number : OPTIONAL STRING;
  telephone_number : OPTIONAL STRING;
  electronic_mail_address : OPTIONAL STRING;
  telex_number : OPTIONAL STRING;
  url : OPTIONAL STRING;
WHERE
  WR1: ( EXISTS ( street_number ) OR EXISTS ( street ) OR EXISTS ( postal_box ) OR EXISTS ( town ) OR EXISTS ( region ) OR EXISTS ( postal_code ) OR EXISTS ( country ) OR EXISTS ( internal_location ) OR EXISTS ( facsimile_number ) OR EXISTS ( telephone_number ) OR EXISTS ( electronic_mail_address ) OR EXISTS ( telex_number ) ) ;
END_ENTITY;

ENTITY Address_assignment;
  address_type : OPTIONAL STRING;
  assigned_address : Address;
  located_person_organizations : SET[1:?] OF organization_or_person_in_organization_select;
END_ENTITY;

ENTITY Affected_items_assignment;
  assigned_work_request : Work_request;
  items : SET[1:?] OF affected_item_select;
END_ENTITY;

ENTITY Alias_identification
  SUBTYPE OF (Identification_assignment);
DERIVE
  SELF\Identification_assignment.role : STRING := 'alias' ;
WHERE
  WR1: SIZEOF ( QUERY ( item <* SELF \ Identification_assignment . items | NOT ( 'PRODUCT_DATA_MANAGEMENT_ARM_LF.ALIAS_IDENTIFICATION_ITEM' IN TYPEOF ( item ) ) ) ) = 0 ;
END_ENTITY;

ENTITY Alternate_part_relationship
  SUBTYPE OF (Alternate_product_relationship);
  SELF\Alternate_product_relationship.alternate_product : Part;
  SELF\Alternate_product_relationship.base_product : Part;
END_ENTITY;

ENTITY Alternate_product_relationship;
  name : OPTIONAL STRING;
  description : OPTIONAL STRING;
  alternate_product : Product;
  base_product : Product;
  criteria : STRING;
UNIQUE
  UR1: SELF\Alternate_product_relationship.alternate_product, SELF\Alternate_product_relationship.base_product;
WHERE
  WR1: alternate_product :<>: base_product ;
END_ENTITY;

ENTITY Amount_of_substance_unit
  SUBTYPE OF (Unit);
END_ENTITY;

ENTITY Applied_activity_assignment;
  assigned_activity : Activity;
  items : SET[1:?] OF activity_item;
  role : STRING;
END_ENTITY;

ENTITY Applied_independent_activity_property
  SUBTYPE OF (Activity_property);
  base_element_property : Independent_property;
DERIVE
  SELF\Activity_property.name : STRING := base_element_property . property_type ;
END_ENTITY;

ENTITY Applied_independent_property
  SUBTYPE OF (Assigned_property);
  base_independent_property : Independent_property;
DERIVE
  SELF\Assigned_property.name : STRING := base_independent_property . property_type ;
END_ENTITY;

ENTITY Approval;
  status : Approval_status;
  purpose : STRING;
  planned_date : OPTIONAL date_or_date_time_select;
  actual_date : OPTIONAL date_or_date_time_select;
END_ENTITY;

ENTITY Approval_assignment;
  assigned_approval : Approval;
  items : SET[1:?] OF approval_item;
  role : OPTIONAL STRING;
END_ENTITY;

ENTITY Approval_relationship;
  relation_type : STRING;
  description : OPTIONAL STRING;
  relating_approval : Approval;
  related_approval : Approval;
END_ENTITY;

ENTITY Approval_status;
  status_name : STRING;
END_ENTITY;

ENTITY Approving_person_organization;
  person_organization : organization_or_person_in_organization_select;
  approval_date : OPTIONAL date_or_date_time_select;
  authorized_approval : Approval;
  role : OPTIONAL STRING;
END_ENTITY;

ENTITY Assembly_component_relationship
  ABSTRACT SUPERTYPE OF (ONEOF (Next_assembly_usage,
                                Promissory_usage,
                                Component_upper_level_identification))
  SUBTYPE OF (View_definition_usage);
  quantity : OPTIONAL Value_with_unit;
  location_indicator : OPTIONAL STRING;
WHERE
  WR1: NOT ( EXISTS ( quantity ) ) OR ( ( NOT ( 'NUMBER' IN TYPEOF ( quantity . value_component ) ) ) XOR ( quantity . value_component > 0 ) ) ;
END_ENTITY;

ENTITY Assembly_relationship_substitution;
  name : OPTIONAL STRING;
  description : OPTIONAL STRING;
  base_relationship : Assembly_component_relationship;
  substitute_relationship : Assembly_component_relationship;
UNIQUE
  UR1: SELF\Assembly_relationship_substitution.base_relationship, SELF\Assembly_relationship_substitution.substitute_relationship;
WHERE
  WR1: base_relationship . relating_view :=: substitute_relationship . relating_view ;
  WR2: base_relationship :<>: substitute_relationship ;
END_ENTITY;

ENTITY Assigned_document_property
  SUBTYPE OF (Assigned_property);
  SELF\Assigned_property.described_element : document_property_item;
DERIVE
  SELF\Assigned_property.name : STRING := 'document property' ;
UNIQUE
  UR1: SELF\Assigned_document_property.described_element;
WHERE
  WR1: SIZEOF ( [ 'PRODUCT_DATA_MANAGEMENT_ARM_LF.DOCUMENT_DEFINITION' , 'PRODUCT_DATA_MANAGEMENT_ARM_LF.FILE' ] * TYPEOF ( SELF \ Assigned_property . described_element ) ) = 1 ;
END_ENTITY;

ENTITY Assigned_property;
  id : OPTIONAL STRING;
  name : STRING;
  description : OPTIONAL STRING;
  described_element : property_assignment_select;
END_ENTITY;

ENTITY Attribute_translation_assignment;
  considered_instance : string_select;
  considered_attribute : STRING;
  translation_text : STRING;
  translation_language : Language;
UNIQUE
  UR1: SELF\Attribute_translation_assignment.considered_instance, SELF\Attribute_translation_assignment.considered_attribute, SELF\Attribute_translation_assignment.translation_language;
END_ENTITY;

ENTITY Axis_placement
  SUBTYPE OF (Detailed_geometric_model_element);
  origin : Cartesian_point;
  x_axis : Direction;
  y_axis : Direction;
DERIVE
  dim : INTEGER := SIZEOF ( origin . coordinates ) ;
WHERE
  WR1: dim > 1 ;
  WR2: dim = SIZEOF ( x_axis . coordinates ) ;
  WR3: dim = SIZEOF ( y_axis . coordinates ) ;
END_ENTITY;

ENTITY Axis_placement_mapping;
  source : Axis_placement;
  target : Axis_placement;
WHERE
  WR1: source \ Axis_placement . dim = target \ Axis_placement . dim ;
END_ENTITY;

ENTITY Axis_placement_transformation_mapping;
  source : Axis_placement;
  target : cartesian_transformation;
WHERE
  WR1: source \ Axis_placement . dim = SIZEOF ( target . translation \ Cartesian_point . coordinates ) ;
END_ENTITY;

ENTITY Calendar_date;
  year_component : year_number;
  month_component : month_in_year_number;
  day_component : day_in_month_number;
END_ENTITY;

ENTITY Cartesian_point
  SUBTYPE OF (Detailed_geometric_model_element);
  coordinates : LIST[1:3] OF length_measure;
END_ENTITY;

ENTITY Cartesian_transformation_2d
  SUBTYPE OF (Detailed_geometric_model_element);
  multiplication_matrix : ARRAY[1:2] OF Direction;
  translation : Cartesian_point;
WHERE
  WR1: SIZEOF ( multiplication_matrix [ 1 ] \ Direction . coordinates ) = 2 ;
  WR2: SIZEOF ( multiplication_matrix [ 2 ] \ Direction . coordinates ) = 2 ;
  WR3: SIZEOF ( translation . coordinates ) = 2 ;
END_ENTITY;

ENTITY Cartesian_transformation_3d
  SUBTYPE OF (Detailed_geometric_model_element);
  multiplication_matrix : ARRAY[1:3] OF Direction;
  translation : Cartesian_point;
WHERE
  WR1: SIZEOF ( multiplication_matrix [ 1 ] \ Direction . coordinates ) = 3 ;
  WR2: SIZEOF ( multiplication_matrix [ 2 ] \ Direction . coordinates ) = 3 ;
  WR3: SIZEOF ( multiplication_matrix [ 3 ] \ Direction . coordinates ) = 3 ;
  WR4: SIZEOF ( translation . coordinates ) = 3 ;
END_ENTITY;

ENTITY Certification;
  name : STRING;
  description : OPTIONAL STRING;
  kind : STRING;
END_ENTITY;

ENTITY Certification_assignment;
  assigned_certification : Certification;
  items : SET[1:?] OF certification_item;
  role : STRING;
END_ENTITY;

ENTITY Characterizable_object;
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Class
  SUPERTYPE OF (ONEOF (Class_by_extension,
                       Class_by_intension));
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Class_by_extension
  SUBTYPE OF (Class);
END_ENTITY;

ENTITY Class_by_intension
  SUBTYPE OF (Class);
END_ENTITY;

ENTITY Classification_assignment;
  assigned_class : Class;
  items : SET[1:?] OF classification_item;
  role : OPTIONAL STRING;
END_ENTITY;

ENTITY Component_upper_level_identification
  SUBTYPE OF (Assembly_component_relationship);
  upper_assembly_relationship : Assembly_component_relationship;
  sub_assembly_relationship : Next_assembly_usage;
UNIQUE
  UR1: SELF\Component_upper_level_identification.upper_assembly_relationship, SELF\Component_upper_level_identification.sub_assembly_relationship;
WHERE
  WR1: SELF :<>: upper_assembly_relationship ;
  WR2: SELF \ View_definition_relationship . relating_view :=: upper_assembly_relationship \ View_definition_relationship . relating_view ;
  WR3: SELF \ View_definition_relationship . related_view :=: sub_assembly_relationship \ View_definition_relationship . related_view ;
  WR4: ( upper_assembly_relationship \ View_definition_relationship . related_view :=: sub_assembly_relationship \ View_definition_relationship . relating_view ) OR ( SIZEOF ( QUERY ( pdr <* USEDIN ( upper_assembly_relationship \ View_definition_relationship . related_view , 'PRODUCT_DATA_MANAGEMENT_ARM_LF.VIEW_DEFINITION_RELATIONSHIP.RELATED_VIEW' ) | pdr . relating_view :=: sub_assembly_relationship \ View_definition_relationship . relating_view ) ) = 1 ) ;
  WR5: SIZEOF ( [ 'PRODUCT_DATA_MANAGEMENT_ARM_LF.NEXT_ASSEMBLY_USAGE' , 'PRODUCT_DATA_MANAGEMENT_ARM_LF.COMPONENT_UPPER_LEVEL_IDENTIFICATION' ] * TYPEOF ( upper_assembly_relationship ) ) = 1 ;
END_ENTITY;

ENTITY Context_dependent_unit
  SUBTYPE OF (Unit);
WHERE
  WR1: EXISTS ( SELF \ Unit . name ) ;
END_ENTITY;

ENTITY Contextual_item_shape
  SUBTYPE OF (Item_shape);
  SELF\Item_shape.described_element : View_definition_usage;
DERIVE
  shaped_product : Product_view_definition := described_element \ View_definition_relationship . related_view ;
END_ENTITY;

ENTITY Contextual_shape_representation_inclusion;
  contextual_shape : Contextual_item_shape;
  context_representation : Geometric_model;
  positioned_representation : template_instance;
END_ENTITY;

ENTITY Contract;
  id : STRING;
  purpose : STRING;
  kind : STRING;
END_ENTITY;

ENTITY Contract_assignment;
  assigned_contract : Contract;
  items : SET[1:?] OF contract_item;
END_ENTITY;

ENTITY Conversion_based_unit
  SUBTYPE OF (Unit);
  conversion_factor : Value_with_unit;
WHERE
  WR1: EXISTS ( SELF \ Unit . name ) ;
END_ENTITY;

ENTITY Date_or_date_time_assignment;
  assigned_date : date_or_date_time_select;
  role : STRING;
  items : SET[1:?] OF date_or_date_time_item;
END_ENTITY;

ENTITY Date_time;
  date_component : Calendar_date;
  time_component : Local_time;
END_ENTITY;

ENTITY Dated_effectivity
  SUBTYPE OF (Effectivity);
  start_bound : date_or_event;
  end_bound : OPTIONAL date_or_event;
END_ENTITY;

ENTITY Derived_unit
  SUBTYPE OF (Unit);
  elements : SET[1:?] OF Derived_unit_element;
END_ENTITY;

ENTITY Derived_unit_element;
  base_unit : Unit;
  exponent : REAL;
END_ENTITY;

ENTITY Descriptive_document_property
  SUBTYPE OF (String_representation_item);
INVERSE
  valued_characteristic : SET[1:1] OF Document_property_representation FOR items;
END_ENTITY;

ENTITY Detailed_geometric_model_element
  ABSTRACT SUPERTYPE OF (ONEOF (Cartesian_point,
                                Direction,
                                Axis_placement,
                                Cartesian_transformation_2d,
                                Cartesian_transformation_3d))
  SUBTYPE OF (Representation_item);
END_ENTITY;

ENTITY Digital_document_definition
  SUBTYPE OF (Document_definition);
  files : SET[0:?] OF Digital_file;
END_ENTITY;

ENTITY Digital_file
  SUBTYPE OF (File);
END_ENTITY;

ENTITY Directed_activity
  SUBTYPE OF (Activity);
  directive : Work_order;
END_ENTITY;

ENTITY Direction
  SUBTYPE OF (Detailed_geometric_model_element);
  coordinates : LIST[2:3] OF length_measure;
END_ENTITY;

ENTITY Document
  SUBTYPE OF (Product);
END_ENTITY;

ENTITY Document_assignment;
  assigned_document : assigned_document_select;
  is_assigned_to : documented_element_select;
  role : STRING;
END_ENTITY;

ENTITY Document_definition
  SUPERTYPE OF (ONEOF (Digital_document_definition,
                       Physical_document_definition))
  SUBTYPE OF (Product_view_definition);
  SELF\Product_view_definition.defined_version : Document_version;
DERIVE
  associated_document_version : Document_version := SELF \ Product_view_definition . defined_version ;
  description : STRING := SELF \ Product_view_definition . name ;
END_ENTITY;

ENTITY Document_definition_relationship;
  relation_type : STRING;
  description : OPTIONAL STRING;
  relating_document_definition : Document_definition;
  related_document_definition : Document_definition;
WHERE
  WR1: relating_document_definition :<>: related_document_definition ;
END_ENTITY;

ENTITY Document_location_identification
  SUBTYPE OF (External_source_identification);
WHERE
  WR1: 'PRODUCT_DATA_MANAGEMENT_ARM_LF.DOCUMENT_DEFINITION' IN TYPEOF ( SELF \ External_source_identification . item ) ;
END_ENTITY;

ENTITY Document_property_representation
  SUBTYPE OF (Representation);
  SELF\Representation.items : SET[1:?] OF descriptive_or_numerical;
WHERE
  WR1: SIZEOF ( QUERY ( pr <* USEDIN ( SELF , 'PRODUCT_DATA_MANAGEMENT_ARM_LF.PROPERTY_REPRESENTATION.REP' ) | 'PRODUCT_DATA_MANAGEMENT_ARM_LF.ASSIGNED_PROPERTY' IN TYPEOF ( pr . property ) ) ) > 0 ;
  WR2: SELF \ Representation . context_of_items . kind = 'document parameters' ;
  WR3: valid_document_property_representation ( SELF ) ;
  WR4: SIZEOF ( QUERY ( it1 <* SELF \ Representation . items | SIZEOF ( QUERY ( it2 <* SELF \ Representation . items | it1 . name = it2 . name ) ) > 1 ) ) = 0 ;
END_ENTITY;

ENTITY Document_version
  SUBTYPE OF (Product_version);
  SELF\Product_version.of_product : Document;
END_ENTITY;

ENTITY Duration
  SUBTYPE OF (Value_with_unit);
WHERE
  WR1: 'PRODUCT_DATA_MANAGEMENT_ARM_LF.' + 'TIME_UNIT' IN TYPEOF ( SELF \ Value_with_unit . unit ) ;
END_ENTITY;

ENTITY Effectivity
  SUPERTYPE OF (ONEOF (Serial_effectivity,
                       Dated_effectivity,
                       Lot_effectivity,
                       Time_interval_effectivity));
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Effectivity_assignment;
  assigned_effectivity : Effectivity;
  role : STRING;
  items : SET[1:?] OF effectivity_item;
END_ENTITY;

ENTITY Effectivity_relationship;
  relation_type : STRING;
  description : OPTIONAL STRING;
  relating_effectivity : Effectivity;
  related_effectivity : Effectivity;
END_ENTITY;

ENTITY Electric_current_unit
  SUBTYPE OF (Unit);
END_ENTITY;

ENTITY Event;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  actual_start_date : OPTIONAL date_or_date_time_select;
  planned_start_date : OPTIONAL date_or_date_time_select;
END_ENTITY;

ENTITY Event_assignment;
  assigned_event : Event;
  items : SET[1:?] OF event_item;
  role : STRING;
END_ENTITY;

ENTITY Event_relationship;
  relation_type : STRING;
  description : OPTIONAL STRING;
  relating_event : Event;
  related_event : Event;
END_ENTITY;

ENTITY External_class
  SUBTYPE OF (Class);
  external_source : External_class_library;
END_ENTITY;

ENTITY External_class_library;
  id : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY External_geometric_model
  SUBTYPE OF (Geometric_model);
  SELF\Representation.items : SET[1:1] OF Axis_placement;
  external_file : Digital_file;
WHERE
  WR1: SELF \ Representation . context_of_items . dimension_count = 3 ;
  WR2: SELF \ Representation . context_of_items . kind = 'external' ;
END_ENTITY;

ENTITY External_item_identification
  SUBTYPE OF (External_source_identification);
  external_id : STRING;
END_ENTITY;

ENTITY External_source_identification;
  source_id : STRING;
  source_type : STRING;
  item : external_identification_item;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY File
  ABSTRACT SUPERTYPE OF (ONEOF (Digital_file,
                                Hardcopy));
  id : STRING;
  version : OPTIONAL STRING;
  contained_data_type : OPTIONAL STRING;
END_ENTITY;

ENTITY File_location_identification
  SUBTYPE OF (External_item_identification);
WHERE
  WR1: 'PRODUCT_DATA_MANAGEMENT_ARM_LF.FILE' IN TYPEOF ( SELF \ External_source_identification . item ) ;
END_ENTITY;

ENTITY File_relationship;
  relation_type : STRING;
  description : OPTIONAL STRING;
  relating_document_file : File;
  related_document_file : File;
WHERE
  WR1: relating_document_file :<>: related_document_file ;
END_ENTITY;

ENTITY Geometric_coordinate_space
  SUBTYPE OF (Numerical_representation_context);
  dimension_count : INTEGER;
WHERE
  WR1: dimension_count > 0 ;
END_ENTITY;

ENTITY Geometric_model
  SUBTYPE OF (Representation);
  version_id : OPTIONAL STRING;
  model_extent : OPTIONAL length_measure;
  SELF\Representation.context_of_items : Geometric_coordinate_space;
  SELF\Representation.items : SET[1:?] OF Detailed_geometric_model_element;
END_ENTITY;

ENTITY Hardcopy
  SUBTYPE OF (File);
END_ENTITY;

ENTITY Identification_assignment;
  identifier : STRING;
  role : STRING;
  description : OPTIONAL STRING;
  items : SET[1:?] OF identification_item;
END_ENTITY;

ENTITY Incomplete_reference_marking
  SUBTYPE OF (Classification_assignment);
WHERE
  WR1: SIZEOF ( QUERY ( item <* SELF \ Classification_assignment . items | NOT ( 'PRODUCT_DATA_MANAGEMENT_ARM_LF.IDRM_MARKED_ITEM' IN TYPEOF ( item ) ) ) ) = 0 ;
  WR2: SELF \ Classification_assignment . assigned_class . id = 'reference' ;
END_ENTITY;

ENTITY Independent_property;
  id : STRING;
  property_type : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Independent_property_relationship;
  relation_type : STRING;
  description : OPTIONAL STRING;
  relating : Independent_property;
  related : Independent_property;
END_ENTITY;

ENTITY Independent_property_representation;
  description : OPTIONAL STRING;
  property : Independent_property;
  rep : Representation;
  role : OPTIONAL STRING;
END_ENTITY;

ENTITY Item_design_association;
  configuration : Product_configuration;
  design : version_or_definition;
UNIQUE
  UR1: SELF\Item_design_association.configuration, SELF\Item_design_association.design;
END_ENTITY;

ENTITY Item_shape;
  id : OPTIONAL STRING;
  description : OPTIONAL STRING;
  described_element : shapeable_item;
END_ENTITY;

ENTITY Item_usage_effectivity;
  effectivity_domain : Effectivity;
  item_usage_relationship : View_definition_usage;
  resolved_configuration : Item_design_association;
END_ENTITY;

ENTITY Language;
  language_code : STRING;
  country_code : OPTIONAL STRING;
UNIQUE
  UR1: SELF\Language.language_code;
END_ENTITY;

ENTITY Language_indication;
  considered_instance : string_select;
  considered_attribute : STRING;
  used_language : Language;
END_ENTITY;

ENTITY Length_unit
  SUBTYPE OF (Unit);
END_ENTITY;

ENTITY Local_time;
  hour_component : hour_in_day;
  minute_component : OPTIONAL minute_in_hour;
  second_component : OPTIONAL second_in_minute;
  zone : Time_offset;
END_ENTITY;

ENTITY Lot_effectivity
  SUBTYPE OF (Effectivity);
  lot_id : STRING;
  lot_size : Value_with_unit;
END_ENTITY;

ENTITY Luminous_intensity_unit
  SUBTYPE OF (Unit);
END_ENTITY;

ENTITY Make_from_relationship
  SUBTYPE OF (View_definition_usage);
  SELF\View_definition_relationship.relating_view : Part_view_definition;
  SELF\View_definition_relationship.related_view : Part_view_definition;
  quantity : OPTIONAL Value_with_unit;
  priority : OPTIONAL INTEGER;
WHERE
  WR1: SELF \ View_definition_relationship . relating_view :<>: SELF \ View_definition_relationship . related_view ;
  WR2: NOT ( EXISTS ( quantity ) ) XOR ( ( NOT ( 'NUMBER' IN TYPEOF ( quantity . value_component ) ) ) XOR ( quantity . value_component > 0 ) ) ;
END_ENTITY;

ENTITY Mapping_based_template_instance
  SUBTYPE OF (Detailed_geometric_model_element);
  replicated_model : shape_model;
  source : Axis_placement;
  target : geometric_mapping_target;
END_ENTITY;

ENTITY Market;
  name : STRING;
  market_segment_type : OPTIONAL STRING;
END_ENTITY;

ENTITY Mass_unit
  SUBTYPE OF (Unit);
END_ENTITY;

ENTITY Measure_item
  ABSTRACT SUPERTYPE OF (ONEOF (Measure_item_with_precision,
                                Numerical_item_with_global_unit,
                                Numerical_item_with_unit,
                                Value_limit,
                                Value_limit_with_global_unit,
                                Value_list,
                                Value_range,
                                Value_range_with_global_unit,
                                Value_set,
                                Value_with_tolerances))
  SUBTYPE OF (Representation_item);
WHERE
  WR1: SIZEOF ( USEDIN ( SELF , 'PRODUCT_DATA_MANAGEMENT_ARM_LF.REPRESENTATION.ITEMS' ) ) > 0 ;
END_ENTITY;

ENTITY Measure_item_with_precision
  SUBTYPE OF (Measure_item);
  significant_digits : INTEGER;
END_ENTITY;

ENTITY Name_assignment;
  name : STRING;
  role : STRING;
  items : assigned_name_select;
END_ENTITY;

ENTITY Next_assembly_usage
  SUBTYPE OF (Assembly_component_relationship);
END_ENTITY;

ENTITY Numerical_document_property
  SUBTYPE OF (Numerical_item_with_unit);
INVERSE
  valued_characteristic : SET[1:1] OF Document_property_representation FOR items;
END_ENTITY;

ENTITY Numerical_item_with_global_unit
  SUBTYPE OF (Measure_item);
  value_component : measure_value;
WHERE
  WR1: SIZEOF ( QUERY ( pvr <* QUERY ( r <* USEDIN ( SELF , 'PRODUCT_DATA_MANAGEMENT_ARM_LF.REPRESENTATION.ITEMS' ) | 'PRODUCT_DATA_MANAGEMENT_ARM_LF.PROPERTY_VALUE_REPRESENTATION' IN TYPEOF ( r ) ) | EXISTS ( pvr . context_of_items . units ) ) ) > 0 ;
END_ENTITY;

ENTITY Numerical_item_with_unit
  SUBTYPE OF (Measure_item, Value_with_unit);
END_ENTITY;

ENTITY Numerical_representation_context
  SUBTYPE OF (Representation_context);
  units : OPTIONAL SET[1:?] OF Unit;
  accuracies : OPTIONAL SET[1:?] OF Uncertainty_with_unit;
END_ENTITY;

ENTITY Organization;
  id : OPTIONAL STRING;
  name : STRING;
END_ENTITY;

ENTITY Organization_or_person_in_organization_assignment;
  assigned_entity : organization_or_person_in_organization_select;
  role : STRING;
  items : SET[1:?] OF organization_or_person_in_organization_item;
END_ENTITY;

ENTITY Organization_relationship;
  relation_type : STRING;
  description : OPTIONAL STRING;
  relating_organization : Organization;
  related_organization : Organization;
END_ENTITY;

ENTITY Part
  SUBTYPE OF (Product);
WHERE
  WR1: SIZEOF ( [ 'part' , 'raw material' , 'tool' ] * types_of_product ( SELF ) ) = 1 ;
END_ENTITY;

ENTITY Part_version
  SUBTYPE OF (Product_version);
  SELF\Product_version.of_product : Part;
END_ENTITY;

ENTITY Part_view_definition
  SUBTYPE OF (Product_view_definition);
  SELF\Product_view_definition.defined_version : Part_version;
END_ENTITY;

ENTITY Partial_document_assignment
  SUBTYPE OF (Document_assignment);
  document_portion : STRING;
END_ENTITY;

ENTITY Person;
  last_name : STRING;
  first_name : OPTIONAL STRING;
  middle_names : OPTIONAL LIST[1:?] OF STRING;
  prefix_titles : OPTIONAL LIST[1:?] OF STRING;
  suffix_titles : OPTIONAL LIST[1:?] OF STRING;
END_ENTITY;

ENTITY Person_in_organization;
  concerned_person : Person;
  containing_organization : Organization;
  role : STRING;
END_ENTITY;

ENTITY Physical_document_definition
  SUBTYPE OF (Document_definition);
  components : SET[0:?] OF Hardcopy;
END_ENTITY;

ENTITY Plane_angle_unit
  SUBTYPE OF (Unit);
END_ENTITY;

ENTITY Product;
  id : STRING;
  name : OPTIONAL STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Product_category;
  id : OPTIONAL STRING;
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Product_category_assignment;
  category : Product_category;
  products : SET[1:?] OF Product;
END_ENTITY;

ENTITY Product_category_hierarchy;
  super_category : Product_category;
  sub_category : Product_category;
END_ENTITY;

ENTITY Product_concept;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  target_market : OPTIONAL Market;
UNIQUE
  UR1: SELF\Product_concept.id;
END_ENTITY;

ENTITY Product_configuration;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  item_context : Product_concept;
INVERSE
  corresponding_design : SET[0:1] OF Item_design_association FOR configuration;
END_ENTITY;

ENTITY Product_version;
  id : STRING;
  description : OPTIONAL STRING;
  of_product : Product;
END_ENTITY;

ENTITY Product_version_relationship;
  relation_type : STRING;
  description : OPTIONAL STRING;
  relating_version : Product_version;
  related_version : Product_version;
WHERE
  WR1: relating_version :<>: related_version ;
END_ENTITY;

ENTITY Product_view_definition;
  id : STRING;
  name : OPTIONAL STRING;
  additional_characterization : OPTIONAL STRING;
  initial_context : View_definition_context;
  additional_contexts : SET[0:?] OF View_definition_context;
  defined_version : Product_version;
WHERE
  WR1: NOT ( initial_context IN additional_contexts ) ;
END_ENTITY;

ENTITY Project;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
  responsible_organizations : SET[0:?] OF Organization;
  planned_start_date : OPTIONAL date_or_event;
  planned_end_date : OPTIONAL date_or_event;
  actual_start_date : OPTIONAL date_or_date_time_select;
  actual_end_date : OPTIONAL date_or_date_time_select;
END_ENTITY;

ENTITY Project_assignment;
  assigned_project : Project;
  role : STRING;
  items : SET[0:?] OF project_item;
END_ENTITY;

ENTITY Project_relationship;
  relation_type : STRING;
  description : OPTIONAL STRING;
  relating_project : Project;
  related_project : Project;
END_ENTITY;

ENTITY Promissory_usage
  SUBTYPE OF (Assembly_component_relationship);
END_ENTITY;

ENTITY Property_representation;
  description : OPTIONAL STRING;
  property : Assigned_property;
  rep : Representation;
  role : OPTIONAL STRING;
END_ENTITY;

ENTITY Property_value_representation
  SUBTYPE OF (Representation);
  SELF\Representation.context_of_items : Numerical_representation_context;
END_ENTITY;

ENTITY Qualified_property_value_representation
  SUBTYPE OF (Property_value_representation);
  value_determination : OPTIONAL STRING;
  qualifier : OPTIONAL STRING;
END_ENTITY;

ENTITY Ratio_unit
  SUBTYPE OF (Unit);
END_ENTITY;

ENTITY Relative_event
  SUBTYPE OF (Event);
  base_event : Event;
  offset : Duration;
END_ENTITY;

ENTITY Representation;
  id : OPTIONAL STRING;
  name : STRING;
  description : OPTIONAL STRING;
  context_of_items : Representation_context;
  items : SET[1:?] OF Representation_item;
END_ENTITY;

ENTITY Representation_context;
  id : STRING;
  kind : STRING;
INVERSE
  representations_in_context : SET[1:?] OF Representation FOR context_of_items;
END_ENTITY;

ENTITY Representation_item
  ABSTRACT SUPERTYPE ;
  name : STRING;
END_ENTITY;

ENTITY Representation_relationship;
  relation_type : STRING;
  description : STRING;
  rep_1 : Representation;
  rep_2 : Representation;
END_ENTITY;

ENTITY Security_classification;
  classification_level : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Security_classification_assignment;
  classification : Security_classification;
  items : SET[1:?] OF security_classification_item;
END_ENTITY;

ENTITY Serial_effectivity
  SUBTYPE OF (Effectivity);
  start_id : STRING;
  end_id : OPTIONAL STRING;
END_ENTITY;

ENTITY Shape_dependent_property_representation;
  characteristic_type : STRING;
  description : OPTIONAL STRING;
  described_element : shape_dependent_select;
  property_representation : Representation;
END_ENTITY;

ENTITY Shape_description_association;
  represented_characteristic : shape_select;
  representation : shape_model;
  role : OPTIONAL STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Shape_element;
  id : OPTIONAL STRING;
  element_name : STRING;
  description : OPTIONAL STRING;
  containing_shape : Item_shape;
END_ENTITY;

ENTITY Shape_element_relationship;
  relation_type : STRING;
  description : OPTIONAL STRING;
  relating : Shape_element;
  related : Shape_element;
END_ENTITY;

ENTITY Solid_angle_unit
  SUBTYPE OF (Unit);
END_ENTITY;

ENTITY String_representation_item
  SUBTYPE OF (Representation_item);
  string_value : STRING;
END_ENTITY;

ENTITY Supplied_part_relationship
  SUBTYPE OF (Product_version_relationship);
WHERE
  WR1: SELF \ Product_version_relationship . relation_type IN [ 'supplied item' , 'supplied document' ] ;
END_ENTITY;

ENTITY Thermodynamic_temperature_unit
  SUBTYPE OF (Unit);
END_ENTITY;

ENTITY Time_interval;
  id : STRING;
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Time_interval_assignment;
  assigned_time_interval : Time_interval;
  role : Time_interval_role;
  items : SET[1:?] OF time_interval_item;
END_ENTITY;

ENTITY Time_interval_effectivity
  SUBTYPE OF (Effectivity);
  effectivity_period : Time_interval;
END_ENTITY;

ENTITY Time_interval_relationship;
  relation_type : STRING;
  description : STRING;
  relating_time_interval : Time_interval;
  related_time_interval : Time_interval;
END_ENTITY;

ENTITY Time_interval_role;
  name : STRING;
  description : STRING;
END_ENTITY;

ENTITY Time_interval_with_bounds
  SUBTYPE OF (Time_interval);
  primary_bound : OPTIONAL date_or_event;
  secondary_bound : OPTIONAL date_or_event;
  duration_from_primary_bound : OPTIONAL Duration;
WHERE
  WR1: NOT ( EXISTS ( secondary_bound ) AND EXISTS ( duration_from_primary_bound ) ) ;
  WR2: EXISTS ( primary_bound ) OR EXISTS ( secondary_bound ) ;
END_ENTITY;

ENTITY Time_offset;
  hour_offset : INTEGER;
  minute_offset : OPTIONAL INTEGER;
  sense : offset_orientation;
DERIVE
  actual_minute_offset : INTEGER := NVL ( minute_offset , 0 ) ;
WHERE
  WR1: { 0 <= hour_offset < 24 } ;
  WR2: { 0 <= actual_minute_offset <= 59 } ;
  WR3: NOT ( ( ( hour_offset <> 0 ) OR ( actual_minute_offset <> 0 ) ) AND ( sense = exact ) ) ;
END_ENTITY;

ENTITY Time_unit
  SUBTYPE OF (Unit);
END_ENTITY;

ENTITY Transformation_based_template_instance
  SUBTYPE OF (Detailed_geometric_model_element);
  replicated_model : shape_model;
  replication_transformation : cartesian_transformation;
END_ENTITY;

ENTITY Uncertainty_with_unit
  SUBTYPE OF (Value_with_unit);
  name : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY Unit
  SUPERTYPE OF (ONEOF (Amount_of_substance_unit,
                       Electric_current_unit,
                       Length_unit,
                       Luminous_intensity_unit,
                       Mass_unit,
                       Plane_angle_unit,
                       Ratio_unit,
                       Solid_angle_unit,
                       Thermodynamic_temperature_unit,
                       Time_unit));
  name : STRING;
  si_unit : BOOLEAN;
END_ENTITY;

ENTITY Value_limit
  SUBTYPE OF (Measure_item);
  limit_qualifier : limit_qualifier_list;
  limit : Value_with_unit;
END_ENTITY;

ENTITY Value_limit_with_global_unit
  SUBTYPE OF (Measure_item);
  limit : Numerical_item_with_global_unit;
  limit_qualifier : limit_qualifier_list;
END_ENTITY;

ENTITY Value_list
  SUBTYPE OF (Measure_item);
  values : LIST[1:?] OF Measure_item;
END_ENTITY;

ENTITY Value_range
  SUBTYPE OF (Measure_item);
  lower_limit : Numerical_item_with_unit;
  upper_limit : Numerical_item_with_unit;
END_ENTITY;

ENTITY Value_range_with_global_unit
  SUBTYPE OF (Measure_item);
  lower_limit : Numerical_item_with_global_unit;
  upper_limit : Numerical_item_with_global_unit;
END_ENTITY;

ENTITY Value_set
  SUBTYPE OF (Measure_item);
  values : SET[1:?] OF Measure_item;
END_ENTITY;

ENTITY Value_with_tolerances
  SUBTYPE OF (Measure_item);
  item_value : Numerical_item_with_unit;
  lower_limit : REAL;
  upper_limit : REAL;
END_ENTITY;

ENTITY Value_with_unit;
  unit : Unit;
  value_component : measure_value;
END_ENTITY;

ENTITY View_definition_context;
  application_domain : STRING;
  life_cycle_stage : STRING;
  description : OPTIONAL STRING;
END_ENTITY;

ENTITY View_definition_relationship;
  id : OPTIONAL STRING;
  relation_type : OPTIONAL STRING;
  description : OPTIONAL STRING;
  relating_view : Product_view_definition;
  related_view : Product_view_definition;
END_ENTITY;

ENTITY View_definition_usage
  SUBTYPE OF (View_definition_relationship);
END_ENTITY;

ENTITY Work_order;
  name : STRING;
  description : OPTIONAL STRING;
  in_response_to : SET[0:?] OF Work_request;
END_ENTITY;

ENTITY Work_request;
  request_id : STRING;
  version_id : STRING;
  description : OPTIONAL STRING;
  purpose : STRING;
END_ENTITY;

ENTITY Work_request_status;
  status : STRING;
  work_request : Work_request;
END_ENTITY;

RULE document_definition_constraint FOR
(Product_view_definition);
WHERE
  WR1: SIZEOF ( QUERY ( dd <* Product_view_definition | ( NOT ( 'PRODUCT_DATA_MANAGEMENT_ARM_LF.' + 'DOCUMENT_DEFINITION' IN TYPEOF ( dd ) ) ) AND ( 'PRODUCT_DATA_MANAGEMENT_ARM_LF.' + 'DOCUMENT_VERSION' IN TYPEOF ( dd . defined_version ) ) ) ) = 0 ;
END_RULE;

RULE document_version_constraint FOR
(Product_version);
WHERE
  WR1: SIZEOF ( QUERY ( pv <* Product_version | ( NOT ( 'PRODUCT_DATA_MANAGEMENT_ARM_LF.' + 'DOCUMENT_VERSION' IN TYPEOF ( pv ) ) ) AND ( 'PRODUCT_DATA_MANAGEMENT_ARM_LF.' + 'DOCUMENT' IN TYPEOF ( pv . of_product ) ) ) ) = 0 ;
END_RULE;

RULE part_version_constraint FOR
(Product_version);
WHERE
  WR1: SIZEOF ( QUERY ( pv <* Product_version | ( NOT ( 'PRODUCT_DATA_MANAGEMENT_ARM_LF.' + 'PART_VERSION' IN TYPEOF ( pv ) ) ) AND ( 'PRODUCT_DATA_MANAGEMENT_ARM_LF.' + 'PART' IN TYPEOF ( pv . of_product ) ) ) ) = 0 ;
END_RULE;

RULE part_view_definition_constraint FOR
(Product_view_definition);
WHERE
  WR1: SIZEOF ( QUERY ( pvd <* Product_view_definition | ( NOT ( 'PRODUCT_DATA_MANAGEMENT_ARM_LF.' + 'PART_VIEW_DEFINITION' IN TYPEOF ( pvd ) ) ) AND ( 'PRODUCT_DATA_MANAGEMENT_ARM_LF.' + 'PART_VERSION' IN TYPEOF ( pvd . defined_version ) ) ) ) = 0 ;
END_RULE;

FUNCTION types_of_product
 (obj : Product) : SET[0:?] OF STRING;
 LOCAL category_assignments : BAG OF Product_category_assignment ; categories : SET OF STRING := [ ] ; i : INTEGER ; END_LOCAL ; category_assignments := USEDIN ( obj , 'PRODUCT_DATA_MANAGEMENT_ARM_LF.' + 'PRODUCT_CATEGORY_ASSIGNMENT.PRODUCTS' ) ; REPEAT i := LOINDEX ( category_assignments ) TO HIINDEX ( category_assignments ) BY 1 ; categories := categories + category_assignments [ i ] . category . name ; END_REPEAT ; RETURN ( categories ) ; 
END_FUNCTION;

FUNCTION valid_document_property_representation
 (rep : Document_property_representation) : LOGICAL;
 CASE rep . name OF 'document content' : BEGIN RETURN ( SIZEOF ( QUERY ( items <* rep \ Representation . items | NOT ( items . name IN [ 'detail level' , 'geometry type' , 'real world scale' ] ) ) ) = 0 ) ; END ; 'document creation' : BEGIN IF NOT ( SIZEOF ( QUERY ( items <* rep \ Representation . items | NOT ( items . name IN [ 'creating interface' , 'creating system' , 'operating system' ] ) ) ) = 0 ) THEN RETURN ( FALSE ) ; END_IF ; IF NOT ( SIZEOF ( QUERY ( items <* rep \ Representation . items | NOT ( items . name IN [ 'creating system' ] ) ) ) = 1 ) THEN RETURN ( FALSE ) ; ELSE RETURN ( TRUE ) ; END_IF ; END ; 'document format' : BEGIN RETURN ( SIZEOF ( QUERY ( items <* rep \ Representation . items | NOT ( items . name IN [ 'character code' , 'data format' , 'size format' , 'size format standard' ] ) ) ) = 0 ) ; END ; 'document size' : BEGIN RETURN ( SIZEOF ( QUERY ( items <* rep \ Representation . items | NOT ( items . name IN [ 'file size' , 'page count' ] ) ) ) = 0 ) ; END ; OTHERWISE : RETURN ( UNKNOWN ) ; END_CASE ; 
END_FUNCTION;

END_SCHEMA;  -- Product_data_management_arm_lf


© ISO 2005 — All rights reserved