| 108 | [[Image(road_example.png)]] |
| 109 | |
| 110 | These two classes are related through their primary identifiers. |
| 111 | |
| 112 | Road.!FeatId == !RoadAnnotation.!ParentId |
| 113 | |
| 114 | Road features can be related n times to !RoadAnnotation objects through a combination of matching primary identifiers and the !RoadAnnotation !SequenceId. The full primary key on !RoadAnnotation is therefore a combination of the !ParentId and !SequenceId. The !SequenceId column is used to order the text elements associated to Road. Any sortable type is valid for this column in the table, although integers would be the obvious choice. |
| 115 | |
| 116 | The !RoadAnnotation table contains a set of properties that are in form (not name) mandated by the OGC specification. These properties, taken together, represent a complete Annotation Text Element. Each Text Element is defined by its Location or spatial geometry, a textual display Value, a textual description of its display model Attributes, and the geographic Leader Line that is used to place the Text Value in relation to its owner or neighboring features. |
| 117 | |
| 118 | The optional “Text” properties defined on the Road table are also mandated by the OGC Specification. Implementing applications may optionally provide a means of capturing the overall Text Envelope, a Default Text Value and a set of Default Text Attributes to be used to describe all instances of Annotation Text associated to the parent feature. The Default values are used if no values (NULL) are specified for a individual instance of an Annotation object. The Text Default Value may be a text string or a query expression. Text Default Attributes are typically serialized XML documents that describe how to symbolize text entities and their leader lines. |
| 119 | |
| 120 | In the example above, I show these properties defined on the parent Road table, however, they could in fact be located in any schema:table in the data store and their location and property names described using metadata. |