<div dir="ltr"><div dir="ltr"><div dir="ltr">Stefan, I think most of us here do not fully understand your hard arguments, but if you could please elaborate a bit more or give some more examples, maybe we could better address your concerns. Anyway, this question sounds a bit orthogonal to the proposal at hand. Could anyone please link to a previous discussion with arguments in this topic? I'm absolutely sure that it comes up annually around here, but I'm newbie here, so I can't tell from the top of my head.<div><br></div><div>On our local list, this argument usually comes up in the other way around: I usually want to endorse a way to use as much semicolons as possible to ease the work of mappers, while everyone else lists counter arguments that boolean alternatives are the upcoming norm.</div><div><br></div><div>The socket key grew up from power_supply, check how they use that in taginfo. Consider the following example:</div><div><div>socket:cee_17_blue=2</div><div>socket:cee_7_3=yes</div></div><div><br></div><div>It indicates that we have 2 sockets of the first, and they also have some of the second kind, but we don't know how many. Perhaps it came from an import, from memory, or there was simply not enough time to count them all. How else would you tag this?</div><div><br></div><div>Getting back to the proposal at hand, how would you map this place?</div><div><br></div><div>top_up:phone:Vodafone=yes</div><div>top_up:phone:Telekom=yes</div><div>top_up:phone:Telenor=yes</div><div>top_up:phone:Blue_mobile=no</div><div>top_up:transport=yes<br></div><div><br></div><div>Which one would cut it instead in your opinion?<br></div><div>top_up:phone=Vodafone;Telekom;Telenor</div><div>top_up:transport=yes</div><div><br></div><div>Or this one:</div><div>top_up=phone:Vodafone;phone:Telekom;phone:Telenor;transport</div><div><br></div><div><div>Or try to translate this example:</div><div><div>top_up:phone=yes</div><div>top_up:transport=yes<br></div></div></div><div><br></div><div>Would it correspond to this?</div><div><div>top_up=phone:transport</div><br class="gmail-Apple-interchange-newline"></div><div>Given proper presets & UI, a mapper simply ticks some boxes and be done with it - no typing needed. And anyway, I use the contact:* schema extensively and I do not feel that to slow me down - it's just a matter of learning to touch type or using proper autocompletion.<br></div><div><br></div><div>From a performance perspective, if one has a Telenor card and wants to top up, geolocating a place is as simple as looking up top_up:phone:Telenor=yes in the granular case using a DB index/map (key-value based bigdata storage also shines here). If we crammed everything into the same top_up or top_up:phone field, we would need regexp lookups that are much less efficient. Although, if this was the only drawback, we would have the option to build an intermediate shadow database from the master OSM just for the purpose of efficient lookups (basically normalizing to the same form as seen above).</div><div><br></div><div>Actually the best solution would be to combine the advantages of both. It would not be really difficult to come up with an editor in which you could enter top_up:phone=Telenor,Vodafone,Telekom and it would automatically expand to the above form on pressing enter (including the missing entries defaulting to *=no!). Namespacing has the added benefit of sorting the keys alphabetically putting them nearby (the same advantage for contact:*=*), although an interface could choose to compress these as they wish.</div><div><br></div><div>Full disclosure: up to now, I was happy to use semicolons in cuisine=*, as I don't expect people to do lookups for these and there's sometimes a dozen of them, but this does cause sleepless night. Fortunately, editors support checkboxes for this field in this scheme.</div><div><br></div></div></div><div class="gmail_quote"><div dir="ltr">On Wed, Dec 26, 2018 at 6:03 PM Stefan Keller <<a href="mailto:sfkeller@gmail.com">sfkeller@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Am Mi., 26. Dez. 2018 um 16:47 Uhr schrieb Martin Koppenhoefer<br>
<<a href="mailto:dieterdreist@gmail.com" target="_blank">dieterdreist@gmail.com</a>>:<br>
> For practical reason, I would expect a scheme<br>
> characteristic_I_need_to_know=yes/no<br>
><br>
> much easier to evaluate than one like:<br>
> some_services=foo;characteristic_I_need_to_know;bar<br>
<br>
No it's not easier. The following<br>
some_services_foo=yes/no<br>
some_services_characteristic_I_need_to_know=yes/no<br>
some_services_bar=yes/no<br>
<br>
is three times more to read and write for humans, as compared to<br>
some_services=foo;characteristic_I_need_to_know;bar<br>
<br>
and - again:<br>
<br>
The form "detail:value:sub_value(:...)=?"<br>
(1.) breaks fundamental(!) assumptions in OSM (assuming tags as a key<br>
and value(s)).<br>
And (2) it breaks programming principles (requiring a attribute-name<br>
having value(s)).<br>
<br>
So it's obvious why the Wiki and taginfo and you name it can't cope<br>
with it. I'm sorry, but it's hard to be more clear and explicit than<br>
that.<br>
<br>
And I hope for OSM that it's not becoming common - even given there<br>
are other bad examples like recycling or service:bicycle [1].<br>
<br>
:Stefan<br>
<br>
P.S. Note that it's the fact that there are alternatives especially to<br>
the boolean yes/no/unkown case and that tagging schemes like "socket"<br>
[2] is acceptable since it's still about a value in the key=value<br>
pair.<br>
<br>
[1] <a href="https://taginfo.openstreetmap.org/search?q=service%3Abicycle" rel="noreferrer" target="_blank">https://taginfo.openstreetmap.org/search?q=service%3Abicycle</a><br>
[2] <a href="https://wiki.openstreetmap.org/wiki/Key:socket" rel="noreferrer" target="_blank">https://wiki.openstreetmap.org/wiki/Key:socket</a><br>
<br>
Am Mi., 26. Dez. 2018 um 16:47 Uhr schrieb Martin Koppenhoefer<br>
<<a href="mailto:dieterdreist@gmail.com" target="_blank">dieterdreist@gmail.com</a>>:<br>
><br>
><br>
><br>
> sent from a phone<br>
><br>
> > On 26. Dec 2018, at 15:08, Stefan Keller <<a href="mailto:sfkeller@gmail.com" target="_blank">sfkeller@gmail.com</a>> wrote:<br>
> ><br>
> > Tag-proposals in the form<br>
> > <tag_attr_name>:<type_value->[:<subtype_value>]=yes/no should be<br>
> > avoided. It's shifting values to attribute names!<br>
><br>
><br>
> it’s not a value, it‘s a property ;-)<br>
> it depends on your interpretation, e.g. motorroad=yes<br>
> oneway=yes<br>
><br>
> aren’t these values and we should tag them<br>
> road_restrictions=motorroad;oneway?<br>
><br>
><br>
> top_up:phone=yes<br>
> means: provides phone top up.<br>
> For practical reason, I would expect a scheme<br>
> characteristic_I_need_to_know=yes/no<br>
><br>
> much easier to evaluate than one like:<br>
> some_services=foo;characteristic_I_need_to_know;bar<br>
><br>
><br>
> Cheers, Martin<br>
> _______________________________________________<br>
> Tagging mailing list<br>
> <a href="mailto:Tagging@openstreetmap.org" target="_blank">Tagging@openstreetmap.org</a><br>
> <a href="https://lists.openstreetmap.org/listinfo/tagging" rel="noreferrer" target="_blank">https://lists.openstreetmap.org/listinfo/tagging</a><br>
<br>
_______________________________________________<br>
Tagging mailing list<br>
<a href="mailto:Tagging@openstreetmap.org" target="_blank">Tagging@openstreetmap.org</a><br>
<a href="https://lists.openstreetmap.org/listinfo/tagging" rel="noreferrer" target="_blank">https://lists.openstreetmap.org/listinfo/tagging</a><br>
</blockquote></div></div>