SCHEMA static_work_environment; REFERENCE FROM epicentre_extensions; REFERENCE FROM epicentre; ENTITY dae_aggregate_type ABSTRACT SUPERTYPE OF (ONEOF( dae_array_type, dae_bag_type, dae_list_type, dae_set_type )) SUBTYPE OF ( dae_base_element_type, dae_base_type ); lower_bound : OPTIONAL ndt_pint4 ; upper_bound : OPTIONAL ndt_pint4 ; element_domain : dae_base_element_type ; subset_flag : OPTIONAL ndt_boolean ; WHERE valid_boundaries : lower_bound <= upper_bound; END_ENTITY; ENTITY dae_angle_type SUBTYPE OF ( dae_quantity_type ); UNIQUE si: name; END_ENTITY; ENTITY dae_anyquantity_type SUBTYPE OF ( dae_epicentre_data_type ); real_precision : ndt_pint1 ; UNIQUE si: name; END_ENTITY; ENTITY dae_application; description : ndt_comment ; name : ndt_name ; vendor : OPTIONAL ndt_name ; version : OPTIONAL ndt_name ; INVERSE preferences : SET[0:?] OF dae_application_preference FOR application ; UNIQUE si: name; END_ENTITY; ENTITY dae_application_preference ABSTRACT SUPERTYPE OF (ONEOF( dae_default_unit )); application : dae_application ; owner : dae_user ; END_ENTITY; ENTITY dae_array_type SUBTYPE OF ( dae_aggregate_type ); sparse_flag : ndt_boolean ; unique_flag : ndt_boolean ; END_ENTITY; ENTITY dae_attribute_authorization SUBTYPE OF ( dae_authorization ); privilege : ndt_privilege ; attribute_definition : dae_attribute_definition ; UNIQUE si: privilege, grantee; WHERE valid_privilege : (privilege = DAE_SELECT) or (privilege = DAE_INSERT) or (privilege = DAE_UPDATE); END_ENTITY; ENTITY dae_attribute_definition ABSTRACT SUPERTYPE OF (ONEOF( dae_explicit_attribute, dae_inverse_attribute, dae_method_definition )); name : ndt_name ; attribute_domain : dae_base_type ; domain_rules : SET[0:?] OF dae_type_where_rule ; parent_entity : dae_entity_definition ; subset_flag : OPTIONAL ndt_boolean ; extension_flag : OPTIONAL ndt_boolean ; INVERSE authorizations : SET[1:?] OF dae_attribute_authorization FOR attribute_definition ; UNIQUE si: name, parent_entity; END_ENTITY; ENTITY dae_authorization ABSTRACT SUPERTYPE OF (ONEOF( dae_attribute_authorization, dae_entity_authorization, dae_role_authorization )); created : ndt_date_tod ; grantable : ndt_boolean ; grantor : dae_user ; grantee : dae_user ; END_ENTITY; ENTITY dae_bag_type SUBTYPE OF ( dae_aggregate_type ); END_ENTITY; ENTITY dae_base_element_type ABSTRACT SUPERTYPE OF (ONEOF( dae_aggregate_type, dae_entity_definition, dae_simple_type )); END_ENTITY; ENTITY dae_base_type ABSTRACT SUPERTYPE OF (ONEOF( dae_aggregate_type, dae_entity_definition, dae_enumeration_type, dae_epicentre_data_type, dae_simple_type )); END_ENTITY; ENTITY dae_binary_type SUBTYPE OF ( dae_simple_type ); fixed_flag : ndt_boolean ; width : OPTIONAL ndt_pint4 ; UNIQUE si: name; WHERE fixed_needs_width : not fixed_flag or exists(width); END_ENTITY; ENTITY dae_boolean_type SUBTYPE OF ( dae_simple_type ); UNIQUE si: name; END_ENTITY; ENTITY dae_complex_type SUBTYPE OF ( dae_epicentre_data_type ); real_precision : ndt_pint1 ; UNIQUE si: name; END_ENTITY; ENTITY dae_data_store; created : ndt_date_tod ; express_filename : OPTIONAL ndt_string_255 ; name : ndt_name ; owner : dae_user ; parent : OPTIONAL dae_data_store ; global_rules : SET[0:?] OF dae_global_rule ; owned_entities : SET[0:?] OF dae_entity_definition ; shared_entities : SET[0:?] OF dae_entity_definition ; data_store_type : ndt_data_store_type ; INVERSE server : dae_server FOR datastores ; children : SET[0:?] OF dae_data_store FOR parent ; UNIQUE si: name, server; WHERE file_or_parent : exists(express_filename) xor exists(parent); END_ENTITY; ENTITY dae_date_type SUBTYPE OF ( dae_epicentre_data_type ); UNIQUE si: name; END_ENTITY; ENTITY dae_daytimeinterval_type SUBTYPE OF ( dae_epicentre_data_type ); fractional_seconds : ndt_pint1 ; UNIQUE si: name; END_ENTITY; ENTITY dae_default_unit SUBTYPE OF ( dae_application_preference ); unit_set : SET[1:?] OF dae_quantity_unit ; UNIQUE si: application, owner; END_ENTITY; ENTITY dae_dimension; count_val : ndt_pint4 ; dae_i_type : ndt_int1 ; lower_bound : ndt_pint4 ; ordinal : ndt_pint1 ; grid_1d : OPTIONAL grid_1d ; INVERSE parent_frame : dae_frame FOR dimensions ; UNIQUE si: ordinal, parent_frame; END_ENTITY; ENTITY dae_element_type SUBTYPE OF ( dae_epicentre_data_type ); grid_element : OPTIONAL ndt_element_kind ; property_precision : ndt_pint1 ; property_types : OPTIONAL ndt_name ; representation_type : OPTIONAL ndt_element_representation ; UNIQUE si: name; END_ENTITY; ENTITY dae_entity_authorization SUBTYPE OF ( dae_authorization ); privilege : ndt_privilege ; search_condition : OPTIONAL ndt_string_255 ; entity_definition : dae_entity_definition ; UNIQUE si: grantee, entity_definition, privilege; WHERE valid_privilege : (privilege = DAE_SELECT) or (privilege = DAE_INSERT) or (privilege = DAE_UPDATE) or (privilege = DAE_DELETE) or (privilege = DAE_EXECUTE); END_ENTITY; ENTITY dae_entity_definition SUBTYPE OF ( dae_base_element_type, dae_base_type ); complex_flag : ndt_boolean ; extension_flag : OPTIONAL ndt_boolean ; independent : ndt_boolean ; instantiable : ndt_boolean ; name : ndt_name ; attribute_list : LIST[0:?] OF UNIQUE dae_attribute_definition ; supertypes : LIST[0:?] OF UNIQUE dae_entity_definition ; uniqueness_rules : SET[0:?] OF dae_uniqueness_rule ; where_rules : SET[0:?] OF dae_where_rule ; subset_flag : OPTIONAL ndt_boolean ; INVERSE authorizations : SET[1:?] OF dae_entity_authorization FOR entity_definition ; owning_datastore : dae_data_store FOR owned_entities ; sharing_datastore : SET[0:?] OF dae_data_store FOR shared_entities ; subtypes : SET[0:?] OF dae_entity_definition FOR supertypes ; UNIQUE si: name, owning_datastore; END_ENTITY; ENTITY dae_enumeration_type SUBTYPE OF ( dae_base_type ); elements : LIST[1:?] OF UNIQUE ndt_string_255 ; name : ndt_name ; UNIQUE si: name; END_ENTITY; ENTITY dae_epicentre_data_type ABSTRACT SUPERTYPE OF (ONEOF( dae_anyquantity_type, dae_complex_type, dae_date_type, dae_daytimeinterval_type, dae_element_type, dae_line_type, dae_location_type, dae_money_type, dae_point_type, dae_quantity_type, dae_ratio_type, dae_rational_type, dae_sample_type, dae_surface_type, dae_time_type, dae_timestamp_type, dae_unstructured_3d_topology, dae_volume_type, dae_yearmonthinterval_type )) SUBTYPE OF ( dae_base_type ); name : ndt_name ; UNIQUE si: name; END_ENTITY; ENTITY dae_explicit_attribute SUBTYPE OF ( dae_attribute_definition ); optional_flag : OPTIONAL ndt_boolean ; UNIQUE si: name, parent_entity; END_ENTITY; ENTITY dae_facility; api_name : ndt_name ; api_vendor : ndt_name ; api_version : ndt_name ; name : ndt_name ; servers : SET[1:?] OF dae_server ; applications : SET[0:?] OF dae_application ; UNIQUE si: name; END_ENTITY; ENTITY dae_frame SUPERTYPE OF (ONEOF( dae_sparse )); attribute_name : ndt_name ; e_type : ndt_pint4 ; f_type : ndt_pint1 ; coordinate_system : OPTIONAL coordinate_system ; grid : OPTIONAL grid_or_mesh ; dimensions : LIST[1:?] OF dae_dimension ; members : LIST[1:?] OF dae_leaf_frame ; instance : e_and_p_data ; vertex : OPTIONAL vertex ; UNIQUE si: attribute_name, instance; END_ENTITY; ENTITY dae_global_rule SUBTYPE OF ( dae_switched_rule ); label : ndt_name ; entities : SET[1:?] OF dae_entity_definition ; INVERSE parent_datastore : dae_data_store FOR global_rules ; UNIQUE si: label, parent_datastore; END_ENTITY; ENTITY dae_integer_type SUBTYPE OF ( dae_simple_type ); UNIQUE si: name; END_ENTITY; ENTITY dae_inverse_attribute SUBTYPE OF ( dae_attribute_definition ); duplicates : ndt_boolean ; max_cardinality : ndt_pint4 ; min_cardinality : ndt_pint4 ; SELF\dae_attribute_definition.attribute_domain : dae_entity_definition ; inverted_attr : dae_explicit_attribute ; UNIQUE si: name, parent_entity; WHERE role_invertible : inverted_attr in attribute_domain.attribute_list; uniqueness_correct : (max_cardinality > 1) or not duplicates; END_ENTITY; ENTITY dae_leaf_frame; bdal_name : OPTIONAL ndt_name ; first_value : OPTIONAL ndt_real4 ; inval_evnt_cnt : OPTIONAL ndt_pint4 ; last_value : OPTIONAL ndt_real4 ; maximum_value : OPTIONAL ndt_real4 ; mean_value : OPTIONAL ndt_real4 ; minimum_value : OPTIONAL ndt_real4 ; population_count : OPTIONAL ndt_pint4 ; rec_key : OPTIONAL ndt_name ; standard_dev : OPTIONAL ndt_real4 ; property_axis : OPTIONAL coordinate_system_axis ; property_type : ref_property_kind ; unit_acronym : OPTIONAL ref_unit_of_measure ; value_formula : OPTIONAL ndt_string_255 ; INVERSE parent_frame : dae_frame FOR members ; UNIQUE si: parent_frame, property_type; END_ENTITY; ENTITY dae_line_type SUBTYPE OF ( dae_epicentre_data_type ); coordinate_systems : OPTIONAL ndt_name ; coord_precision : ndt_pint1 ; representation_type : OPTIONAL ndt_line_representation ; UNIQUE si: name; END_ENTITY; ENTITY dae_list_type SUBTYPE OF ( dae_aggregate_type ); unique_flag : ndt_boolean ; END_ENTITY; ENTITY dae_location_type SUBTYPE OF ( dae_epicentre_data_type ); coordinate_systems : OPTIONAL ndt_name ; coord_precision : ndt_pint1 ; UNIQUE si: name; END_ENTITY; ENTITY dae_logical_type SUBTYPE OF ( dae_simple_type ); UNIQUE si: name; END_ENTITY; ENTITY dae_method_definition SUBTYPE OF ( dae_attribute_definition ); arguments : LIST[0:?] OF dae_base_type ; UNIQUE si: name, parent_entity; END_ENTITY; ENTITY dae_money_type SUBTYPE OF ( dae_epicentre_data_type ); currency : OPTIONAL ndt_short_name ; UNIQUE si: name; END_ENTITY; ENTITY dae_point_type SUBTYPE OF ( dae_epicentre_data_type ); coordinate_systems : OPTIONAL ndt_name ; coord_precision : ndt_pint1 ; property_precision : ndt_pint1 ; property_types : OPTIONAL ndt_name ; UNIQUE si: name; END_ENTITY; ENTITY dae_quantity_type SUPERTYPE OF (ONEOF( dae_angle_type )) SUBTYPE OF ( dae_epicentre_data_type ); real_precision : ndt_pint1 ; ref_quantity_type : ndt_name ; UNIQUE si: name; END_ENTITY; ENTITY dae_quantity_unit; quantity_type : ndt_name ; unit : ndt_name ; UNIQUE si: quantity_type, unit; END_ENTITY; ENTITY dae_ratio_type SUBTYPE OF ( dae_epicentre_data_type ); real_precision : ndt_pint1 ; UNIQUE si: name; END_ENTITY; ENTITY dae_rational_type SUBTYPE OF ( dae_epicentre_data_type ); UNIQUE si: name; END_ENTITY; ENTITY dae_real_type SUBTYPE OF ( dae_simple_type ); real_precision : OPTIONAL ndt_pint1 ; UNIQUE si: name; END_ENTITY; ENTITY dae_role; created : ndt_date_tod ; name : ndt_name ; role_privilege : SET[0:?] OF dae_role_privilege ; INVERSE authorizations : SET[0:?] OF dae_role_authorization FOR user_role ; UNIQUE si: name; END_ENTITY; ENTITY dae_role_authorization SUBTYPE OF ( dae_authorization ); user_role : dae_role ; UNIQUE si: grantee, user_role; END_ENTITY; ENTITY dae_role_privilege; privilege : ndt_privilege ; attribute_definition : OPTIONAL dae_attribute_definition ; entity_definition : OPTIONAL dae_entity_definition ; search_condition : OPTIONAL ndt_string_255 ; INVERSE dae_role : dae_role FOR role_privilege ; UNIQUE si: privilege, attribute_definition, entity_definition, dae_role; WHERE valid_entity_privilege : (exists(entity_definition) and ((privilege = DAE_SELECT) or (privilege = DAE_INSERT) or (privilege = DAE_UPDATE) or (privilege = DAE_DELETE) or (privilege = DAE_EXECUTE)) ) or not exists(entity_definition); attribute_or_entity : exists(attribute_definition) xor exists(entity_definition); valid_attribute_privilege : (exists(attribute_definition) and ((privilege = 'DAE_SELECT') or (privilege = 'DAE_INSERT') or (privilege = 'DAE_UPDATE')) ) or not exists(attribute_definition); END_ENTITY; ENTITY dae_sample_type SUBTYPE OF ( dae_epicentre_data_type ); property_precision : ndt_pint1 ; property_types : OPTIONAL ndt_name ; UNIQUE si: name; END_ENTITY; ENTITY dae_server; name : ndt_name ; vendor : ndt_name ; version : ndt_name ; users : SET[1:?] OF dae_user ; datastores : SET[0:?] OF dae_data_store ; UNIQUE si: name; END_ENTITY; ENTITY dae_set_type SUBTYPE OF ( dae_aggregate_type ); END_ENTITY; ENTITY dae_simple_type ABSTRACT SUPERTYPE OF (ONEOF( dae_binary_type, dae_boolean_type, dae_integer_type, dae_logical_type, dae_real_type, dae_string_type )) SUBTYPE OF ( dae_base_element_type, dae_base_type ); name : ndt_name ; UNIQUE si: name; END_ENTITY; ENTITY dae_sparse SUBTYPE OF ( dae_frame ); bdal_name : ndt_name ; rec_key : ndt_name ; UNIQUE si: attribute_name, instance; END_ENTITY; ENTITY dae_string_type SUBTYPE OF ( dae_simple_type ); fixed_flag : ndt_boolean ; width : OPTIONAL ndt_pint4 ; UNIQUE si: name; WHERE fixed_needs_width : not fixed_flag or exists(width); END_ENTITY; ENTITY dae_surface_type SUBTYPE OF ( dae_epicentre_data_type ); coordinate_systems : OPTIONAL ndt_name ; coord_precision : ndt_pint1 ; representation_type : OPTIONAL ndt_surface_representation ; UNIQUE si: name; END_ENTITY; ENTITY dae_switched_rule ABSTRACT SUPERTYPE OF (ONEOF( dae_global_rule, dae_type_where_rule, dae_uniqueness_rule, dae_where_rule )); failure_action : ndt_fail_state ; fixup_name : OPTIONAL ndt_name ; test_name : ndt_name ; test_status : ndt_test_state ; END_ENTITY; ENTITY dae_time_type SUBTYPE OF ( dae_epicentre_data_type ); fractional_seconds : ndt_pint1 ; UNIQUE si: name; END_ENTITY; ENTITY dae_timestamp_type SUBTYPE OF ( dae_epicentre_data_type ); fractional_seconds : ndt_pint1 ; UNIQUE si: name; END_ENTITY; ENTITY dae_type_where_rule SUBTYPE OF ( dae_switched_rule ); label : OPTIONAL ndt_name ; type_name : OPTIONAL ndt_name ; END_ENTITY; ENTITY dae_uniqueness_rule SUBTYPE OF ( dae_switched_rule ); label : OPTIONAL ndt_name ; secondary_identifier : ndt_boolean ; attribute_list : LIST[1:?] OF dae_attribute_definition ; parent_entity : dae_entity_definition ; UNIQUE si: label, parent_entity; END_ENTITY; ENTITY dae_unstructured_3d_topology SUBTYPE OF ( dae_epicentre_data_type ); UNIQUE si: name; END_ENTITY; ENTITY dae_user; created : ndt_date_tod ; create_data_store : ndt_boolean ; identifier : ndt_name ; INVERSE servers : SET[1:?] OF dae_server FOR users ; application_preferences : SET[0:?] OF dae_application_preference FOR owner ; authorizations : SET[0:?] OF dae_authorization FOR grantee ; data_stores : SET[0:?] OF dae_data_store FOR owner ; UNIQUE si: identifier; END_ENTITY; ENTITY dae_volume_type SUBTYPE OF ( dae_epicentre_data_type ); coordinate_systems : OPTIONAL ndt_name ; coord_precision : ndt_pint1 ; representation_type : OPTIONAL ndt_volume_representation ; UNIQUE si: name; END_ENTITY; ENTITY dae_where_rule SUBTYPE OF ( dae_switched_rule ); label : OPTIONAL ndt_name ; parent_entity : dae_entity_definition ; subset_flag : OPTIONAL ndt_boolean ; UNIQUE si: label, parent_entity; END_ENTITY; ENTITY dae_yearmonthinterval_type SUBTYPE OF ( dae_epicentre_data_type ); UNIQUE si: name; END_ENTITY; END_SCHEMA;