A quick review of the pimConfiguration to the pimFeature shows…
So now we have to figure out how to assign attributes to features (pimFeatureType). Keep in mind that we need to consider how to modify how the attribute content of a feature can be modified to add new attributes, change attribute names, and eliminate attributes. And, in a manner like features where it’s categorized by definition and geometry, attributes are categorized by definition and date type.
|ID – The Attribute GUID|
|Name – What it is called|
|Definition – A definition of the Attribute|
|DataType – one of the PIM data types for the attribute|
|CharacterLength – the maximum number of characters in a string/text attribute|
|Code – any short name of code associated with the attribute|
|Constraint – any limit (either range or discrete list) on the values in the attribute|
|User – the userID of the configuration|
|DefaultValue – a prescribed initial value for the attribute|
|Feature – the pimFeature to which this attribute applies|
|Configuration – the pimConfiguration to which this feature applies|
|Version – the pimVersion of the configuration|
A pimAttribute is typically one property or characteristic of a feature. It is independent of the pimFeature; e.g. a given pimAttribute may be applied to many features. Note that the pimAttribute has a Name, but its name can be modified (but the definition MAY NOT be changed) when it is assigned to a pimFeature. The data type of the pimAttribute is fixed, and may NOT be modified. The CharacterLength, Constraint, and DefaultValue can be assigned based on the pimFeature to which the pimAttribute applies.
The table (right) shows the PIM API properties of the pimAttribute. It includes all of the properties that are required to generate and validate included attribution in datasets against the PIM. And the PIM API includes conversions from the PIM data types to all of the current GIS attribution data types.
Note also that any PIM API pimAttribute includes its reference to a pimFeature, and consequently to its pimConfiguration and a pimVersion. But the most important thing to remember about the pimAttribute is that it is rigorously identified by its definition, and not its name; e.g. a definition of ‘The length of a linear feature’ is a single pimAttribute for any linear feature, regardless of name.
Now we have a pimAttribute that needs to be associated with one or more pimFeatures. But these pimFeatures are influenced by the pimConfiguration to which they are associated. Therefore, a pimConfiguration needs to be considered with the pimAttributes as well. Inside the PIM, this happens with two intermediate tables. These are pimFeatureAttribute and pimConfigAttribute. The use of the pimFeatureAttribute performs the same function as the pimConfigFeature; e.g. it associates the many to many of pimAttributes to pimFeatures. But the pimFeatureAttribute table provides additional capability. It permits for Attribute Name changes as well as Character Length changes, Default Value changes, and Constraint changes. The pimConfigAttribute table permits addition of attributes that are NOT in the parent as well as removal of attributes that ARE in the parent. This is ONLY applicable to those features which were inherited from the parent (which might be Gold). The GUID/UUID and definition of the attribute in the parent remain the same but the name may change. This gets somewhat complicated. For now, it is only important to understand the features in a child may included additional attributes (not in the parent) or eliminate attributes that were in the parent. More on this in future posts.
The next post will summarize how constraints are applied to attributes. Constraints may take the form of either ‘range’ (for numeric attributes) or ‘enumerations’ (discrete lists) which can be applied to any attribute. The PIM API will accommodate all of these capabilities. The next post will complete our technical discussion of the PIM, after which we will begin to delve into practical examples.
This post was written by:
For more information on this post, the PIM, Zekiah’s geospatial standards support, or our data configuration management capabilities, please e-mail us at firstname.lastname@example.org