# [Tagging] Reviving the conditions debate

Tobias Knerr osm at tobias-knerr.de
Wed Jun 13 16:45:56 BST 2012

```On 13.06.2012 17:18, Martin Vonwald wrote:
>
>> :forward, :backward, ...
>
> I don't think of them as conditions, but more a selection of a part of
> a way. Just like :lanes is to me not a condition.

I think we've discussed this several times already, and as you know I do
not think this "part of a way" interpretation of forward/backward is
appropriate. You could easily place signs with different restrictions
for each direction on a one-lane road.

>> I also doubt whether the distinction between a "subkey" and a
>> "condition" would always be obvious to mappers.

As promptly illustrated by the fact that we can't even agree that
forward/backwards are "conditions".

> Is "lanes" a condition? I don't think so.

I don't think so either. The point I was trying to make was a different
one, as I'm trying to explain below.

>> For example, if there is only one lane that changes maxspeed when wet,
>> one might want to write that as follows:
>>
>> maxspeed:lanes = 80|80|80
>> maxspeed:lanes?wet = ||50
>
> I would instead use maxspeed=80 for the first tag. Simpler. Compatible.

Yes. Simpler, compatible and all that, but irrelevant for the example.

>> Yes, you could evaluate this without any knowledge about the semantics
>> of the base key. But doing so would result in "the value of
>> 'maxspeed:lanes' is '||50' when the road is wet". That's not actually
>> what we want - we do want the keep the '80' for the first two lanes.
>
> Actually it is what we want. Because:
> 1) Either the application knows, what ":lanes" means. Then "the value
> of 'maxspeed:lanes' is '||50' when the road is wet" means that the
> first two lanes don't change the maxspeed value if the road is wet,
> but the third changes it to 50.
[...]
> To me it seems perfectly consistent.

This means I didn't explain well enough. Let's update the example to
make this more clear:

maxspeed=80
maxspeed:lanes = 60|80|80
maxspeed:lanes?wet = ||50

First step: Evaluate the conditions without regard for the semantics of
the rest of the keys. "wet" is true, so this tagging changes to

maxspeed=80
maxspeed:lanes = ||50

for the purpose of further evaluation. Remember: We did not take the
semantics of "maxspeed:lanes" into account here, instead we relied on
the ? separator to treat the front part of the keys in a generic way.

This means that the maxspeed for the first lane will be 80 - there is no
lane-specific value, so the road's general maxspeed is used. But it
should of course be 60.

Tobias

```