Proposed features/Tag structures

From OpenStreetMap Wiki
Jump to: navigation, search
Tag structures
Status: Draft (under way)
Proposed by: Driver2
Tagging: *=*
Applies to: *
Definition: well-defined Tag structure
Rendered as: *
Drafted on: 2008-12-27
RFC start: *
Vote start: *
Vote end: *

Key structures

There are basicially three different types of ways that a simple key can be extended with.


A parameter defines a special part of the key to be set. For example name:fr=* sets the french name for something. The parameter by itself usually has no meaning. 'fr' by itself only says that something is 'french', but not what (of course there could be a key called 'fr' that means something, but thats another story).

Another way to look at it: You don't set a value for 'fr' but for 'name'. 'fr' just describes in more detail what kind of 'name' we want to set.


Keys can also be divided into substructures. For example the 'addr'-namespace contains several subkeys ('street','housenumber',..) that are also valid on their own (you could also just tag street=Goethestraße, but are structured under 'addr' to keep them more organized.

Another way to look at it: You set a value for 'street' that is part of an 'addr' (address).


Keys sometimes need to be structured to define properties for tags. For example if you defined a cycleway beside the street with cycleway=right you can define it's width with cycleway.width=*. 'width' might be a valid key without 'cycleway' in front of it, but will have a different meaning. width=* for example would define the width of the street it is put on, while cycleway.width=* would define the width of the cycleway that runs beside the street.

Another way to look at it: You set a value for 'width', that might or might not be a valid tag on its own, but depends on the preceding tags to have the right meaning (set the width for the cycleway not the street).

Value structures

Sometimes multiple values for the same key are given by dividing the values with ';' (semicolon).