Preston Maness ☭<p><span class="h-card" translate="no"><a href="https://expressional.social/@LinusWeidickFrische" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>LinusWeidickFrische</span></a></span> <span class="h-card" translate="no"><a href="https://en.osm.town/@MapAmore" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>MapAmore</span></a></span> </p><p>[Fair warning: I am speaking in an confident tone below; however, my accumulated knowledge of the data modeling philosophy behind OSM has largely occurred via osmosis, as I have slowly contributed and read more and more. I have not had formal, foundational education/training on the matter, so what follows might actually be somewhat scatterbrained.]</p><p>Presumably, the `_ref` bit was intended as an indicator of a "reference" value for the aforementioned `crossing`. E.g., `crossing_ref=zebra` where `crossing_ref` is the key, and `zebra` is the value, of the tag. In today's tag schema though, such tag keys are "flat" or "flattened," when they could instead be scoped/namespaced with colons: `crossing:markings=zebra` (presumably, one could have done `crossing:ref=zebra` as well, though `ref` has less meaning than `crossing`).</p><p>However, <a href="https://tenforward.social/tags/osm" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>osm</span></a> eventually coalesced around a tree structure for their tag keys, with branches indicated by the colon (`:`) character and its subsequent string, and values for the last descendant/child node encoded as the tag's value. (I mean, the tags *might* be more general? Maybe there are cyclic graphs? But so far I haven't seen them (or at least, have not recognized them as such)). In theory, the underscore character (`_`) could have served the purpose of indicating branches as well, but... the English language uses spaces; tags cannot have spaces; underscores come closest to indicating spaces; ergo, use underscores as spaces and not as an indicator for a branch.</p><p>Incidentally, this approach also permitted: </p><p>1. namespacing of tags. E.g., one could namespace/scope specific tags so as to organize data. E.g., `us:tx:tarrant` could indicate the anything following (perhaps, `:parcel` to indicate a parcel number) relates to Tarrant county, in the state of Texas, in the United States.<br>2. having specific "branches" contain common semantic intent regardless of where in a tag's key tree they fall, such as `:height`. I.e., `building:height` or `antenna:height` or `building:antenna:height`.</p><p><a href="https://tenforward.social/tags/OpenStreetMap" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>OpenStreetMap</span></a> <a href="https://tenforward.social/tags/osm" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>osm</span></a> <a href="https://tenforward.social/tags/DataModeling" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>DataModeling</span></a></p>