| 1 | # JOSM TagChecker validator file | 
|---|
| 2 |  | 
|---|
| 3 | # Format: | 
|---|
| 4 | # Each line specifies a certain error to be reported | 
|---|
| 5 | # <data type> : messagetype : <key><expression><value> | 
|---|
| 6 | # | 
|---|
| 7 | # Data type can be: | 
|---|
| 8 | #  node        - a node point | 
|---|
| 9 | #  way         - a way | 
|---|
| 10 | #  relation    - a relation | 
|---|
| 11 | #  *           - all data types | 
|---|
| 12 | # | 
|---|
| 13 | # Message type can be: | 
|---|
| 14 | # E            - an error | 
|---|
| 15 | # W            - a warning | 
|---|
| 16 | # I            - an low priority informational warning | 
|---|
| 17 | # | 
|---|
| 18 | # Key and value are expressions describing certain keys and values of these keys. | 
|---|
| 19 | # Regulator expressions are supported. In this case the expressions starts and | 
|---|
| 20 | # ends with // signs. If an 'i' is appended, the regular expression is | 
|---|
| 21 | # case insensitive. | 
|---|
| 22 | # | 
|---|
| 23 | # The * sign indicates any string. | 
|---|
| 24 | # The texts BOOLEAN_TRUE and BOOLEAN_FALSE in the value part indicate a special | 
|---|
| 25 | # handling for boolean values (yes, true, 0, false, no, ...). | 
|---|
| 26 | # | 
|---|
| 27 | # Expression can be: | 
|---|
| 28 | #  !=          - the key/value combination does not match | 
|---|
| 29 | #  ==          - the key/value combination does match | 
|---|
| 30 | # | 
|---|
| 31 | # To have more complicated expressions, multiple elements can be grouped together | 
|---|
| 32 | # with an logical and (&&). | 
|---|
| 33 | # | 
|---|
| 34 | # The comment at the end of a rule is displayed in validator description | 
|---|
| 35 | # | 
|---|
| 36 | # Empty lines and space signs are ignored | 
|---|
| 37 |  | 
|---|
| 38 | way  : W : highway == * && name == /.* (Ave|Blvd|Cct|Cir|Cl|Cr|Crct|Cres|Crt|Ct|Dr|Drv|Esp|Espl|Hwy|Ln|Mw|Mwy|Pl|Rd|Qy|Qys|Sq|St|Str|Ter|Tce|Tr|Wy)\.?$/i               # abbreviated street name | 
|---|
| 39 |  | 
|---|
| 40 | node : W : oneway == *                                         # oneway tag on a node | 
|---|
| 41 | node : W : bridge == BOOLEAN_TRUE                              # bridge tag on a node | 
|---|
| 42 | node : W : highway == tertiary                                 # wrong highway tag on a node | 
|---|
| 43 | node : W : highway == secondary                                # wrong highway tag on a node | 
|---|
| 44 | node : W : highway == residential                              # wrong highway tag on a node | 
|---|
| 45 | node : W : highway == unclassified                             # wrong highway tag on a node | 
|---|
| 46 | node : W : highway == track                                    # wrong highway tag on a node | 
|---|
| 47 | way  : I : highway == unclassified && name != *                # Unnamed unclassified highway | 
|---|
| 48 | way  : I : highway == secondary && ref != *                    # highway without a reference | 
|---|
| 49 | way  : I : highway == tertiary && ref != *                     # highway without a reference | 
|---|
| 50 | way  : I : highway == motorway && nat_ref != *                 # highway without a reference | 
|---|
| 51 | *    : W : highway == road                                     # temporary highway type | 
|---|
| 52 | *    : W : / *name */i == * && name != *                       # misspelled key name | 
|---|
| 53 |  | 
|---|
| 54 | # The following could replace unnamed way check. Still at the moment we keep it as it is | 
|---|
| 55 | #way  : W : junction == roundabout && highway == /motorway|trunk|primary|secondary|tertiary|residential|pedestrian/ && /name|ref|(name:.*)|(.*_name)|(.*_ref)/ != * # Unnamed junction | 
|---|
| 56 | #way  : W : highway == /motorway|trunk|primary|secondary|tertiary|residential|pedestrian/ && /name|ref|(name:.*)|(.*_name)|(.*_ref)/ != * # Unnamed | 
|---|
| 57 |  | 
|---|
| 58 | way  : W : highway == cycleway && bicycle == BOOLEAN_FALSE     # cycleway with tag bicycle | 
|---|
| 59 | way  : W : highway == footway && foot == BOOLEAN_FALSE         # footway with tag foot | 
|---|
| 60 | #way  : I : highway == cycleway && bicycle == *                 # cycleway with tag bicycle | 
|---|
| 61 | #way  : I : highway == footway && foot == *                     # footway with tag foot | 
|---|
| 62 | way  : W : highway == cycleway && cycleway == lane             # separate cycleway as lane on a cycleway | 
|---|
| 63 | way  : W : highway == * && barrier == *                        # barrier used on a way | 
|---|
| 64 |  | 
|---|
| 65 | #way  : I : waterway == * && layer != *                         # waterway without layer tag | 
|---|
| 66 | way  : I : highway == footway && maxspeed == *                 # maxspeed used for footway | 
|---|
| 67 | way  : I : highway == steps && maxspeed == *                   # maxspeed used for footway | 
|---|
| 68 |  | 
|---|
| 69 | *    : W : layer == /\+.*/                                     # layer tag with + sign | 
|---|
| 70 |  | 
|---|
| 71 | *    : I : name == /.*Strasse.*/i                              # street name contains ss | 
|---|
| 72 |  | 
|---|
| 73 | relation : E : type != *                                       # relation without type | 
|---|
| 74 |  | 
|---|
| 75 | node : I : amenity == /restaurant|cafe|fast_food/ && name != * # restaurant without name | 
|---|
| 76 | #way  : I : highway != * && railway != * && waterway != * && name == * # unusual named way type | 
|---|
| 77 | #*    : W : natural == water && waterway == *                   # unusual tag combination | 
|---|
| 78 | *    : W : highway == * && waterway == *                       # unusual tag combination | 
|---|
| 79 | *    : W : highway == * && natural == *                        # unusual tag combination | 
|---|