<p>Is it not possible to assign PKs to get the following?</p>
<div class="highlight highlight-text-xml"><pre><<span class="pl-ent">osmChange</span> <span class="pl-e">version</span>=<span class="pl-s"><span class="pl-pds">"</span>0.6<span class="pl-pds">"</span></span> <span class="pl-e">generator</span>=<span class="pl-s"><span class="pl-pds">"</span>iD<span class="pl-pds">"</span></span>>
   <<span class="pl-ent">create</span>>
      <<span class="pl-ent">node</span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">"</span>1<span class="pl-pds">"</span></span> <span class="pl-e">lon</span>=<span class="pl-s"><span class="pl-pds">"</span>11.625506992810122<span class="pl-pds">"</span></span> <span class="pl-e">lat</span>=<span class="pl-s"><span class="pl-pds">"</span>46.866699181636555<span class="pl-pds">"</span></span> <span class="pl-e">version</span>=<span class="pl-s"><span class="pl-pds">"</span>0<span class="pl-pds">"</span></span> <span class="pl-e">changeset</span>=<span class="pl-s"><span class="pl-pds">"</span>3<span class="pl-pds">"</span></span>>
         <<span class="pl-ent">tag</span> <span class="pl-e">k</span>=<span class="pl-s"><span class="pl-pds">"</span>highway<span class="pl-pds">"</span></span> <span class="pl-e">v</span>=<span class="pl-s"><span class="pl-pds">"</span>bus_stop<span class="pl-pds">"</span></span> />
      </<span class="pl-ent">node</span>>
      <<span class="pl-ent">node</span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">"</span>2<span class="pl-pds">"</span></span> <span class="pl-e">lon</span>=<span class="pl-s"><span class="pl-pds">"</span>11.62686047585252<span class="pl-pds">"</span></span> <span class="pl-e">lat</span>=<span class="pl-s"><span class="pl-pds">"</span>46.86730122861715<span class="pl-pds">"</span></span> <span class="pl-e">version</span>=<span class="pl-s"><span class="pl-pds">"</span>0<span class="pl-pds">"</span></span> <span class="pl-e">changeset</span>=<span class="pl-s"><span class="pl-pds">"</span>3<span class="pl-pds">"</span></span>>
         <<span class="pl-ent">tag</span> <span class="pl-e">k</span>=<span class="pl-s"><span class="pl-pds">"</span>highway<span class="pl-pds">"</span></span> <span class="pl-e">v</span>=<span class="pl-s"><span class="pl-pds">"</span>bus_stop<span class="pl-pds">"</span></span> />
      </<span class="pl-ent">node</span>>
      <<span class="pl-ent">relation</span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">"</span>1<span class="pl-pds">"</span></span> <span class="pl-e">version</span>=<span class="pl-s"><span class="pl-pds">"</span>0<span class="pl-pds">"</span></span> <span class="pl-e">changeset</span>=<span class="pl-s"><span class="pl-pds">"</span>3<span class="pl-pds">"</span></span>>
         <<span class="pl-ent">member</span> <span class="pl-e">type</span>=<span class="pl-s"><span class="pl-pds">"</span>node<span class="pl-pds">"</span></span> <span class="pl-e">role</span>=<span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span> <span class="pl-e">ref</span>=<span class="pl-s"><span class="pl-pds">"</span>1<span class="pl-pds">"</span></span> />
         <<span class="pl-ent">tag</span> <span class="pl-e">k</span>=<span class="pl-s"><span class="pl-pds">"</span>type<span class="pl-pds">"</span></span> <span class="pl-e">v</span>=<span class="pl-s"><span class="pl-pds">"</span>route<span class="pl-pds">"</span></span> />
         <<span class="pl-ent">tag</span> <span class="pl-e">k</span>=<span class="pl-s"><span class="pl-pds">"</span>name<span class="pl-pds">"</span></span> <span class="pl-e">v</span>=<span class="pl-s"><span class="pl-pds">"</span>AtoB<span class="pl-pds">"</span></span> />
      </<span class="pl-ent">relation</span>>
      <<span class="pl-ent">relation</span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">"</span>2<span class="pl-pds">"</span></span> <span class="pl-e">version</span>=<span class="pl-s"><span class="pl-pds">"</span>0<span class="pl-pds">"</span></span> <span class="pl-e">changeset</span>=<span class="pl-s"><span class="pl-pds">"</span>3<span class="pl-pds">"</span></span>>
         <<span class="pl-ent">member</span> <span class="pl-e">type</span>=<span class="pl-s"><span class="pl-pds">"</span>node<span class="pl-pds">"</span></span> <span class="pl-e">role</span>=<span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span> <span class="pl-e">ref</span>=<span class="pl-s"><span class="pl-pds">"</span>2<span class="pl-pds">"</span></span> />
         <<span class="pl-ent">tag</span> <span class="pl-e">k</span>=<span class="pl-s"><span class="pl-pds">"</span>type<span class="pl-pds">"</span></span> <span class="pl-e">v</span>=<span class="pl-s"><span class="pl-pds">"</span>route<span class="pl-pds">"</span></span> />
         <<span class="pl-ent">tag</span> <span class="pl-e">k</span>=<span class="pl-s"><span class="pl-pds">"</span>name<span class="pl-pds">"</span></span> <span class="pl-e">v</span>=<span class="pl-s"><span class="pl-pds">"</span>BtoA<span class="pl-pds">"</span></span> />
      </<span class="pl-ent">relation</span>>
      <<span class="pl-ent">relation</span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">"</span>3<span class="pl-pds">"</span></span> <span class="pl-e">version</span>=<span class="pl-s"><span class="pl-pds">"</span>0<span class="pl-pds">"</span></span> <span class="pl-e">changeset</span>=<span class="pl-s"><span class="pl-pds">"</span>3<span class="pl-pds">"</span></span>>
         <<span class="pl-ent">member</span> <span class="pl-e">type</span>=<span class="pl-s"><span class="pl-pds">"</span>relation<span class="pl-pds">"</span></span> <span class="pl-e">role</span>=<span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span> <span class="pl-e">ref</span>=<span class="pl-s"><span class="pl-pds">"</span>1<span class="pl-pds">"</span></span> />
         <<span class="pl-ent">member</span> <span class="pl-e">type</span>=<span class="pl-s"><span class="pl-pds">"</span>relation<span class="pl-pds">"</span></span> <span class="pl-e">role</span>=<span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span> <span class="pl-e">ref</span>=<span class="pl-s"><span class="pl-pds">"</span>2<span class="pl-pds">"</span></span> />
         <<span class="pl-ent">tag</span> <span class="pl-e">k</span>=<span class="pl-s"><span class="pl-pds">"</span>type<span class="pl-pds">"</span></span> <span class="pl-e">v</span>=<span class="pl-s"><span class="pl-pds">"</span>route_master<span class="pl-pds">"</span></span> />
         <<span class="pl-ent">tag</span> <span class="pl-e">k</span>=<span class="pl-s"><span class="pl-pds">"</span>name<span class="pl-pds">"</span></span> <span class="pl-e">v</span>=<span class="pl-s"><span class="pl-pds">"</span>master<span class="pl-pds">"</span></span> />
      </<span class="pl-ent">relation</span>>
   </<span class="pl-ent">create</span>>
</<span class="pl-ent">osmChange</span>></pre></div>
<p>This can be done within any <code><create></code> block via the algorithm I gave earlier. More extensive reordering might be possible, although the explosion of different interactions is giving me a headache.</p>
<p>I think it would be good to have a patch for <code><create></code>-reordering, and it would help to have this in one place (i.e: the API) rather than in every editor, as long as it's not computationally onerous.</p>
<p>A significant downside, in my opinion, is that it makes it much harder to understand or explain what the upload call is doing. At the moment, it seems fairly easy to understand that it processes the elements in the order they appear in the upload. Reordering some kinds of changes and not others adds complexity and requires explanation, making the API more baffling. And some would say it's already plenty baffling enough.</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/openstreetmap/openstreetmap-website/issues/1465#issuecomment-282699734">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABWnLT6xC_OumPvPi6LNCxM7KMOkCU-_ks5rgrhugaJpZM4MLUZv">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/ABWnLc8chph_rzGg9o-pcJ88nkaH757uks5rgrhugaJpZM4MLUZv.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/openstreetmap/openstreetmap-website/issues/1465#issuecomment-282699734"></link>
  <meta itemprop="name" content="View Issue"></meta>
</div>
<meta itemprop="description" content="View this Issue on GitHub"></meta>
</div>

<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/openstreetmap/openstreetmap-website","title":"openstreetmap/openstreetmap-website","subtitle":"GitHub repository","main_image_url":"https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/openstreetmap/openstreetmap-website"}},"updates":{"snippets":[{"icon":"PERSON","message":"@zerebubuth in #1465: Is it not possible to assign PKs to get the following?\r\n\r\n```xml\r\n\u003cosmChange version=\"0.6\" generator=\"iD\"\u003e\r\n   \u003ccreate\u003e\r\n      \u003cnode id=\"1\" lon=\"11.625506992810122\" lat=\"46.866699181636555\" version=\"0\" changeset=\"3\"\u003e\r\n         \u003ctag k=\"highway\" v=\"bus_stop\" /\u003e\r\n      \u003c/node\u003e\r\n      \u003cnode id=\"2\" lon=\"11.62686047585252\" lat=\"46.86730122861715\" version=\"0\" changeset=\"3\"\u003e\r\n         \u003ctag k=\"highway\" v=\"bus_stop\" /\u003e\r\n      \u003c/node\u003e\r\n      \u003crelation id=\"1\" version=\"0\" changeset=\"3\"\u003e\r\n         \u003cmember type=\"node\" role=\"\" ref=\"1\" /\u003e\r\n         \u003ctag k=\"type\" v=\"route\" /\u003e\r\n         \u003ctag k=\"name\" v=\"AtoB\" /\u003e\r\n      \u003c/relation\u003e\r\n      \u003crelation id=\"2\" version=\"0\" changeset=\"3\"\u003e\r\n         \u003cmember type=\"node\" role=\"\" ref=\"2\" /\u003e\r\n         \u003ctag k=\"type\" v=\"route\" /\u003e\r\n         \u003ctag k=\"name\" v=\"BtoA\" /\u003e\r\n      \u003c/relation\u003e\r\n      \u003crelation id=\"3\" version=\"0\" changeset=\"3\"\u003e\r\n         \u003cmember type=\"relation\" role=\"\" ref=\"1\" /\u003e\r\n         \u003cmember type=\"relation\" role=\"\" ref=\"2\" /\u003e\r\n         \u003ctag k=\"type\" v=\"route_master\" /\u003e\r\n         \u003ctag k=\"name\" v=\"master\" /\u003e\r\n      \u003c/relation\u003e\r\n   \u003c/create\u003e\r\n\u003c/osmChange\u003e\r\n```\r\n\r\nThis can be done within any `\u003ccreate\u003e` block via the algorithm I gave earlier. More extensive reordering might be possible, although the explosion of different interactions is giving me a headache.\r\n\r\nI think it would be good to have a patch for `\u003ccreate\u003e`-reordering, and it would help to have this in one place (i.e: the API) rather than in every editor, as long as it's not computationally onerous.\r\n\r\nA significant downside, in my opinion, is that it makes it much harder to understand or explain what the upload call is doing. At the moment, it seems fairly easy to understand that it processes the elements in the order they appear in the upload. Reordering some kinds of changes and not others adds complexity and requires explanation, making the API more baffling. And some would say it's already plenty baffling enough.\r\n\r\n"}],"action":{"name":"View Issue","url":"https://github.com/openstreetmap/openstreetmap-website/issues/1465#issuecomment-282699734"}}}</script>