Another class, SpatialObject, contains two objects, one from GeometricObject and the other from SpatialReferencing. Thus, a member of the class SpatialObject carries information on both pure geometry and the interpretion of the geometry in the context of a real world framework. For example, a two dimensional coordinate (x,y) value may be interpreted as longitude and latitude, Easting and Northing, etc., depending upon the value for spatial referencing.
At the level of GeometricObject, topologic considerations (e.g. adjacency, inclusion, dimensionality, etc.) may be directly addressed; at the level of SpatialObject, both metric (e.g. distance from, neighbourhood, etc.) and non-metric (e.g. topology) spatial constructs can be determined. A spatial object is used to establish the real world position of a real world phenomenon. It may also be used as part of a query or as input or output with respect to a spatial function.
Users are not permitted to define new subclasses of SpatialObject or of GeometricObject.