POSC Specifications: Epicentre Version 3.0 | Logical Data Model |
Make Topological Object a subtype of Business Object. Move some spatial related behavior up to Spatial Object.
CHANGE ERP_topological_object ALTER ENTITY topological_object ADD SUBTYPE OF (business_object); END_ENTITY; ALTER ENTITY temporal_object DROP SUBTYPE OF (technical_object); END_ENTITY; ADD ENTITY locatable_object ABSTRACT SUPERTYPE OF (ONEOF( facility, earth_feature, material )) SUBTYPE OF (topological_object); (*<DESC>The abstract supertype of all entities which can be spatially located or described.*) INVERSE located_by : SET[0:?] OF spatial_object FOR located_object (*<DESC>The set of spatial objects which represent alternative spatial natures of this object.*) (*<VERB>be located by*); pty_element_value : SET[0:?] OF pty_element_value FOR locatable_object (*<DESC>These are the spatially distributed properties which have been defined for this object.*) (*<VERB>have a property of*); END_ENTITY; ALTER ENTITY pty_element_value; ALTER geologic_fault AS locatable_object ALTER TYPE AS locatable_object; DROP material (*<CHANGE>Redundant to Pty_element_value.locatable_object.*); DROP rock_fluid_feature (*<CHANGE>Redundant to Pty_element_value.locatable_object.*); DROP seismic_facility_track (*<CHANGE>Redundant to Pty_element_value.locatable_object.*); DROP seismic_feature (*<CHANGE>Redundant to Pty_element_value.locatable_object.*); DROP stratigraphic_marker (*<CHANGE>Redundant to Pty_element_value.locatable_object.*); UNIQUE ALTER si DROP material, rock_fluid_feature, Seismic_facility_track, seismic_feature, stratigraphic_marker; END_ENTITY; ALTER ENTITY geologic_fault; INVERSE DROP pty_element_value; END_ENTITY; ALTER ENTITY material; INVERSE DROP pty_element_value; END_ENTITY; ALTER ENTITY rock_fluid_feature; INVERSE DROP pty_element_value; END_ENTITY; ALTER ENTITY seismic_facility_track; INVERSE DROP pty_element_value; END_ENTITY; ALTER ENTITY seismic_feature; INVERSE DROP pty_element_value; END_ENTITY; ALTER ENTITY stratigraphic_marker; INVERSE DROP pty_element_value; END_ENTITY; ALTER ENTITY spatial_object; (*<DESC>Spatial objects are topological elements, such as region, face, edge, and vertex, which can have geometrical representation. Each spatial object represents one opinion of the spatial nature of something. All associated geometrical properties are different representations of the same opinion.*) ADD identifier : OPTIONAL ndt_identifier (*<DESC>The identifier of the spatial object.*); ADD description : OPTIONAL ndt_comment (*<DESC>A description of the object.*); ADD creating_activity : OPTIONAL activity (*<DESC>The activity which created the spatial opinion.*) (*<VERB>be created by*) (*<CHANGE>This replaces Earth_model_object.geoscience_interpretation.*); ADD located_activity : OPTIONAL activity (*<DESC>The activity which is (at least partially) located by this spatial opinion. This allows the spatial opinions of locatable objects to be versioned within the context of the activity.*) (*<VERB>located*) (*<CHANGE>This replaces Wellbore_activity.position_in_wellbore.*); ADD identifying_whole : OPTIONAL composite_spatial_object (*<DESC>The composite objects within whose context this object is unique.*) (*<VERB>be identified by*) (*<CHANGE>This replaces Earth_position_simple.identifying_whole.*); ADD located_object : OPTIONAL locatable_object (*<DESC>The locatable object that is represented by this spatial nature.*) (*<VERB>locate*) (*<CHANGE>This replaces Well_surface_point.well, Position_in_wellbore.wellbore_completion, Position_in_wellbore.geologic_feature, Position_in_wellbore.fluid_system, Position_in_wellbore.other_material, Position_in_wellbore.wellbore_component_facility, Position_on_earth_surface.material_collection_station, Position_on_earth_surface.other_material, Position_on_earth_surface.earth_surface_feature, Position_on earth_surface.geologic_feature, Position_in_earth_model.geologic_feature, Earth_model_object.rock_feature_part, Earth_point.Local_vertical_datum.*); INVERSE ADD component_whole : SET[0:?] OF composite_spatial_object_composition FOR spatial_object (*<DESC>The composites which are constructed using this spatial object as a part.*) (*<VERB>be part of*); WHERE ADD ose : not ( exists (creating_activity ) and exists ( located_activity ) ) (*<DESC>Each instance may specify either CREATING ACTIVITY or LOCATED ACTIVITY but not both.*) (*<RULETYPE>OSE*); ADD sri : sizeof ( query ( ix <* component_whole | ix.composite_spatial_object :=: identifying_whole ) ) > 0 (*<DESC>Each instance which is identified by a COMPOSITE SPATIAL OBJECT must be part of that COMPOSITE SPATIAL OBJECT.*) (*<RULETYPE>SRI*); ADD mse : EXISTS ( identifying_whole ) XOR EXISTS ( located_object ) (*<DESC>Each instance must represent a LOCATED OBJECT or be identified by an IDENTIFYING WHOLE but not both.*) (*<RULETYPE>MSE*); END_ENTITY; DROP ENTITY simple_spatial_object; ALTER ENTITY vertex ADD SUBTYPE OF (spatial_object) DROP ABSTRACT; ADD on_surface : OPTIONAL ndt_logical (*<DESC>TRUE asserts that the vertex is "on" (as opposed to near) the surface of the earth. All objects on the surface of the earth which have the same x,y location are asserted to coincide (i.e., have the same elevation). FALSE asserts that it is not on the surface of the earth or is only near it.*); UNIQUE ADD si : identifier, located_object, identifying_whole, creating_activity, located_activity; END_ENTITY; ALTER ENTITY edge ADD SUBTYPE OF (spatial_object) DROP ABSTRACT; ADD on_surface : OPTIONAL ndt_logical (*<DESC>TRUE asserts that the edge is "on" (as opposed to near) the surface of the earth. All objects on the surface of the earth which have the same x,y location are asserted to coincide (i.e., have the same elevation). FALSE asserts that it is not on the surface of the earth or is only near it.*); UNIQUE ADD si : identifier, located_object, identifying_whole, creating_activity, located_activity; END_ENTITY; ALTER ENTITY ring ADD SUBTYPE OF (spatial_object) DROP ABSTRACT; ADD on_surface : OPTIONAL ndt_logical (*<DESC>TRUE asserts that the ring is "on" (as opposed to near) the surface of the earth. All objects on the surface of the earth which have the same x,y location are asserted to coincide (i.e., have the same elevation). FALSE asserts that it is not on the surface of the earth or is only near it.*); UNIQUE ADD si : identifier, located_object, identifying_whole, creating_activity, located_activity; END_ENTITY; ALTER ENTITY face ADD SUBTYPE OF (spatial_object) DROP ABSTRACT; ADD on_surface : OPTIONAL ndt_logical (*<DESC>TRUE asserts that the face is "on" (as opposed to near) the surface of the earth. All objects on the surface of the earth which have the same x,y location are asserted to coincide (i.e., have the same elevation). FALSE asserts that it is not on the surface of the earth or is only near it.*); UNIQUE ADD si : identifier, located_object, identifying_whole, creating_activity, located_activity; END_ENTITY; ALTER ENTITY shell ADD SUBTYPE OF (spatial_object) DROP ABSTRACT; UNIQUE ADD si : identifier, located_object, identifying_whole, creating_activity, located_activity; END_ENTITY; ALTER ENTITY region ADD SUBTYPE OF (spatial_object) DROP ABSTRACT; UNIQUE ADD si : identifier, located_object, identifying_whole, creating_activity, located_activity; END_ENTITY; ALTER ENTITY composite_spatial_object DROP ABSTRACT; ADD on_surface : OPTIONAL ndt_logical (*<DESC>TRUE asserts that the spatial collection is "on" (as opposed to near) the surface of the earth. All objects on the surface of the earth which have the same x,y location are asserted to coincide (i.e., have the same elevation). FALSE asserts that it is not on the surface of the earth or is only near it.*); INVERSE ADD component_parts : SET[0:?] OF composite_spatial_object_composition FOR composite_spatial_object (*<DESC>The spatial objects which represent the parts of the composite.*) (*<VERB>be composed of*) (*<CHANGE>This replaces earth_position_composite.part, other_spatial_object.composite_object and wellbore_composite_position.position_in_wellbore.*); ADD identify_part : SET [0:?] OF spatial_object FOR identifying_whole (*<DESC>The component parts whose identity is defined in the context of this object.*) (*<VERB>identify*); UNIQUE ADD si : identifier, located_object, identifying_whole, creating_activity, located_activity; END_ENTITY; ADD ENTITY composite_spatial_object_composition SUBTYPE OF (association); (*<DESC>Associates the whole composite object with its parts.*) spatial_object : spatial_object (*<DESC>The spatial object which is part of the composite object.*) (*<VERB>have as the part*); composite_spatial_object : composite_spatial_object (*<DESC>The spatial object which represents the whole object.*) (*<VERB>have as the whole*); UNIQUE SI : spatial_object, composite_spatial_object; END_ENTITY; DROP ENTITY geopolitical_association (*<CHANGE>Since features are now topological_objects, this is redundant to Topological_relationship.*); ALTER ENTITY geopolitical_feature; DROP part_in_association (*<CHANGE>Replaced by Topological_object.secondary_topological_relationship.*); DROP container_in_association (*<CHANGE>Replaced by Topological_object.primary_topological_relationship.*); END_ENTITY; ALTER ENTITY activity; INVERSE ADD created_spatial_object : SET[0:?] OF spatial_object FOR creating_activity (*<DESC>The spatial opinions which were created as a result of this activity.*) (*<VERB>create*); ADD located_by_spatial_object : SET[0:?] OF spatial_object FOR located_activity (*<DESC>Spatial locations of this activity. This allows the spatial opinions of locatable objects to be versioned within the context of the activity.*) (*<VERB>be located by*); END_ENTITY; ALTER ENTITY topological_relationship; DROP boundary_overlap (*<CHANGE>Replaced by spatial_predicate.*); ADD de9im : OPTIONAL ndt_de9im (*<DESC>The OpenGis specification for the Dimensionally Extended Nine-Intersection Model (DE-9IM). Each value in the list represents the maximum dimension (-1, 0, 1 or 2) of the intersection of the primary and secondary objects where -1 indicates disjoint. The values are in the order of: PI-SI, PI-SB, PI-SE, PB-SI, PB-SB, PB-SE, PE-SI, PE-SB, PE-SE. Where P=Primary_object, S=Secondary_object, I=Interior, B=Boundary, E=exterior.*); ALTER ref_object_intersection AS spatial_predicate ALTER TYPE AS ndt_spatial_predicate (*<DESC>The results of the OpenGis spatial predicate based on the Dimensionally Extended Nine-Intersection Model (DE-9IM). This indicates which mutually exclusive predicate was true.*) (*<CHANGE>This semantically replaces the former combination of ref_object_intersection and boundary_overlap.*); UNIQUE ALTER si DROP boundary_overlap; END_ENTITY; ADD TYPE ndt_de9im = LIST[9:9] OF INTEGER (*<DESC>The OpenGis specification for the Dimensionally Extended Nine-Intersection Model (DE-9IM). Each value in the list represents the maximum dimension (-1, 0, 1 or 2) of the intersection of the primary and secondary objects where -1 indicates disjoint. The values are in the order of: PI-SI, PI-SB, PI-SE, PB-SI, PB-SB, PB-SE, PE-SI, PE-SB, PE-SE. Where P=Primary_object, S=Secondary_object, I=Interior, B=Boundary, E=exterior.*); END_TYPE; ADD TYPE ndt_spatial_predicate = ENUMERATION OF ( disjoint, touch, cross, within, overlap ) (*<DESC>The OpenGis spatial predicates based on the Dimensionally Extended Nine-Intersection Model (DE-9IM).*); END_TYPE; DROP ENTITY ref_object_intersection (*<CHANGE>Replaced by ndt_spatial_predicate.*); ALTER ENTITY well_surface_feature_role; (*<DESC>This describes the different relationships between earth surface features and wells over time. These do not include topological assertions.*) END_ENTITY; ALTER ENTITY ref_well_surface_feature_role; (*<DESC>The reference entity that defines the different roles that a well may have for an earth surface feature. For example, is subject to regulations defined for.*) END_ENTITY; END_CHANGE;