<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body style='font-size: 10pt; font-family: Verdana,Geneva,sans-serif'>
<p>Hi Marc,</p>
<p>On 2016-01-27 20:30, Marc Gemis wrote:</p>
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0">
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">On Wed, Jan 27, 2016 at 6:58 PM, Colin Smale <<a href="mailto:colin.smale@xs4all.nl">colin.smale@xs4all.nl</a>> wrote:
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0">Excluding the argument that "that's the way it is now, why change", are<br /> there any arguments in favour of a value-based approach? If we were looking<br /> at this problem as if we were designing OSM on a clean whiteboard, what<br /> reasons are there to say that that the "multivalued keys" problem is best<br /> addressed in the Value domain?</blockquote>
<br /> For destination:lanes you could have Paris|Rome;Milan|Berlin;Munich<br /> for 3 lanes with different destinations. The middle lane has<br /> destinations Rome and Milan.  I have no idea how you can solve this<br /> with a key based approach:  destination_1:lane_2 = Rome ??</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace"> </div>
</blockquote>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">I would definitely start with the lane, and let the destination be an attribute of the lane rather than the other way round.</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace"> </div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">One way, using a "subscript syntax" with a "data structure" construct using a "." as a separator":</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">lane[1].destination=Paris</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">lane[2].destination[1]=Rome</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">lane[2].destination[2]=Milan</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">lane[3].destination[1]=Berlin</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">lane[3].destination[2]=Munich</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace"> </div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">Alternatively, using a "suffix syntax", something like you suggest</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">lane_1:destination=Paris</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">lane_2:destination_1=Rome</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">lane_2:destination_2=Milan</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">etc.</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace"> </div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">Thirdly, using the "seamark" construction:</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">lane:1:destination:1=Paris</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">lane:2:destination:1=Rome</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">lane:2:destination:2=Milan</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">etc.</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace"> </div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">The "lane" is a definite candidate here for a "data structure" definition - each lane has many attributes: width, access/vehicle types, destination, turn direction,.....</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace"> </div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace"> </div>
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0">
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">Also the semi-colon is used a lot as separator in the opening_hours tag.<br /><br /> Even if we are not considering solutions, please add the functional<br /> specification for destination:lanes and all xxx:lanes (e.g.<br /> turn:lanes) to the list of things to consider.</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace"> </div>
</blockquote>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">Do any of these present any unique issues? I suspect they can be addressed in the same way as with the destination-per-lane above.</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace"> </div>
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0">
<div class="pre" style="margin: 0; padding: 0; font-family: monospace"><br /> I thought of some extra examples of things needing multiple values<br /><br /> sport=multi needs a solution<br /> traffic_calming in case  of e.g. a table + choker combination</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace"> </div>
</blockquote>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">Good examples, I will add them to the list</div>
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0">
<div class="pre" style="margin: 0; padding: 0; font-family: monospace"><br /> street names for streets that form the border between 2 villages and<br /> have different names on both sides<br /> surface, e.g. concrete lanes with cobblestones in the middle, or a<br /> track that is half dirt half asphalt for cyclists.</div>
</blockquote>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">I am not sure I agree with you here. The two names/surfaces do not refer to the same bit of road, and I think you should solve this by splitting the road into lanes, and having a single name and a single surface for each lane.</div>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace"> </div>
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0">
<div class="pre" style="margin: 0; padding: 0; font-family: monospace"><br /><br /> _______________________________________________<br /> Tagging mailing list<br /><a href="mailto:Tagging@openstreetmap.org">Tagging@openstreetmap.org</a><br /><a href="https://lists.openstreetmap.org/listinfo/tagging">https://lists.openstreetmap.org/listinfo/tagging</a></div>
</blockquote>
</body></html>