<div dir="auto">Versioning might be a good addition to the JSON and XML, like adding a version to elements, objects and arrays. One can already add versions to HTML elements, but there’s no way to BOM them yet, there’s no inline/include versions for HTML that I know of</div><div dir="auto"><br></div><div dir="auto">What this means for programming, IDK, seems like dependencies are already handled.</div><div dir="auto"><br></div><div dir="auto">If I could choose which BOM version of animations I want to use…, or customize a web page by client.</div><div dir="auto"><br></div><div dir="auto">I’m not sure if OpenUSD or glTF has this.</div><div dir="auto"><br></div><div dir="auto">John </div><div dir="auto"><br><div class="gmail_quote gmail_quote_container" dir="auto"><div dir="ltr" class="gmail_attr">On Thu, Apr 3, 2025 at 8:57 AM John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto">I guess what I’m saying is, it would be nice to have npm/package.json/versioning/dependencies in X3D.</div><div dir="auto"><br></div><div dir="auto">John </div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Apr 3, 2025 at 8:51 AM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto">Understood, I just have a need to separate out normal MetadataSets from versioned MetadataSets. See proposal for adding optional versions alongside DEF/USE/id/ROUTE.</div><div dir="auto"><br></div><div dir="auto">Of course, adding a hierarchical bill of materials (BOM) becomes relevant once one has versions.</div><div dir="auto"><br></div><div dir="auto">Perhaps a MetadataSet can do a BOM.</div><div dir="auto"><br></div><div dir="auto">John </div><div dir="auto"><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">On Thu, Apr 3, 2025 at 8:38 AM Holger Seelig <<a href="mailto:holger.seelig@yahoo.de" target="_blank">holger.seelig@yahoo.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="line-break:after-white-space"><div>The metadata system is actually already so universal that all data structures can be represented with it.</div><div><br></div><div>Several versions of data can be displayed with MetadataSet, for example:</div><div><br></div><div><div>MetadataSet {</div><div> name "versions"</div><div> value [</div><div> MetadataSet {</div><div> name "version A"</div><div> value MetadataInteger {</div><div> name "count"</div><div> value 3</div><div> }</div><div> }</div><div> MetadataSet {</div><div> name "version B"</div><div> value MetadataInteger {</div><div> name "count"</div><div> value 4</div><div> }</div><div> }</div><div> ]</div><div>}</div></div><div><br></div><div>Best regards,</div><div>Holger</div><div><br></div><div>
<div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;line-break:after-white-space"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;line-break:after-white-space"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;line-break:after-white-space"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;line-break:after-white-space"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;line-break:after-white-space"><div dir="auto" style="text-align:start;text-indent:0px;line-break:after-white-space"><div style="color:rgb(0,0,0);letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">--</div><div style="color:rgb(0,0,0);letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">Holger Seelig</div><div style="color:rgb(0,0,0);letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">Leipzig, Germany</div><div style="color:rgb(0,0,0);letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><br></div><div style="color:rgb(0,0,0);letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><a href="mailto:holger.seelig@yahoo.de" target="_blank">holger.seelig@yahoo.de</a></div><div><a href="https://create3000.github.io/x_ite/" target="_blank">https://create3000.github.io/x_ite/</a></div></div></div></div></div></div></div>
</div>
<div><br><blockquote type="cite"></blockquote></div></div><div style="line-break:after-white-space"><div><blockquote type="cite"><div>Am 03.04.2025 um 15:27 schrieb John Carlson via x3d-public <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>>:</div><br></blockquote></div></div><div style="line-break:after-white-space"><div><blockquote type="cite"><div></div></blockquote></div></div><div style="line-break:after-white-space"><div><blockquote type="cite"><div><div dir="auto">One can also think about providing different versions to prototypes and protoinstances.</div><div dir="auto"><br></div><div dir="auto">Hmm!</div><div dir="auto"><br></div><div dir="auto">John </div><div dir="auto"><br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">On Thu, Apr 3, 2025 at 8:00 AM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto">This seems relevant: </div><div dir="auto"><br></div><div dir="auto"><div><a href="https://3drepo.com/wp-content/uploads/2022/02/xml3drepo.pdf" target="_blank">https://3drepo.com/wp-content/uploads/2022/02/xml3drepo.pdf</a></div><br></div><div dir="auto">I’m interested in versioning some objects, not necessarily a whole document. The question is, how to define a versioned collection of objects in an X3D encoding, particularly JSON.</div><div dir="auto"><br></div><div dir="auto">I’m also interested in temporal logic for a 3D graph (humanoid), potentially for HIPAA data.</div><div dir="auto"><br></div><div dir="auto">John </div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Apr 3, 2025 at 7:33 AM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto">I’m thinking that adding a sequence or index field to MetadataVersion may be appropriate, if not MetadataInteger.. Also, add a MetadataTime node/statement as well, but a generic set of fields for metadata rears its head again, but I’m not doing it yet.</div><div dir="auto"><br></div><div dir="auto">Ideally, we could store events in a time series data store, potentially gathered from multiple sources. Scripts might do that, but a way to replay events might be needed/ helpful.</div><div dir="auto"><br></div><div dir="auto">Traditional source code repositories are line oriented. I’m aiming for a versioned object store, like recording animation. If a program is an AST, I’m working on saving changes to the AST.</div><div dir="auto"><br></div><div dir="auto">Think about it.</div><div dir="auto"><br></div><div dir="auto">John</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Apr 2, 2025 at 11:49 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><pre style="font-size:11.05px;margin-left:25px">I want 2 more fields beyond MetadataSet, below.</pre><pre style="font-size:11.05px;margin-left:25px">I want a MetadataVersion to call it out as different from MetadataSet.</pre><pre style="font-size:11.05px;margin-left:25px">I realized that I can give the MetadataSet a "version" name.</pre><pre style="font-size:11.05px;margin-left:25px">I also want to achieve a crontab-like or scheduling feature.</pre><pre style="font-size:11.05px;margin-left:25px">Ideally, I could provide field-like nodes or statements for version information separate from axes.</pre><pre style="font-size:11.05px;margin-left:25px">The idea is to create a vector-like object to maintain time series data</pre><pre style="font-size:11.05px;margin-left:25px">and version data, and for building information, bill or materials, etc. There may already be something in X3D,</pre><pre style="font-size:11.05px;margin-left:25px">but I've not spotted it yet...CAD?</pre><pre style="font-size:11.05px;margin-left:25px">The goal is to put this into a SQL database, such that I can input and output different versions of the JSON or JSON objects and arrays, watch the JSON change through time, etc. The whole history of the document is stored.</pre><pre style="font-size:11.05px;margin-left:25px"><br></pre><pre style="font-size:11.05px;margin-left:25px">If the axes field is unacceptable, can we have a version field in MetadataSet?</pre><pre style="font-size:11.05px;margin-left:25px"><br></pre><pre style="font-size:11.05px;margin-left:25px">Basically, I need a way to separate version and dimensional data from ordinary MetadataSets.</pre><pre style="font-size:11.05px;margin-left:25px">MetadataVersion: MetadataSet</pre><pre style="font-size:11.05px;margin-left:25px">{<br></pre><pre style="font-size:11.05px;margin-left:25px"> MFNode axes NULL [X3DMetadataObject]</pre><pre style="font-size:11.05px;margin-left:25px"> MFString version '"0"'</pre><pre style="font-size:11.05px;margin-left:25px">// Add everything from MetadataSet.</pre><pre style="font-size:11.05px;margin-left:25px">// Default containerField is axes, not value or metadata.
}</pre><pre style="font-size:11.05px;margin-left:25px">Possible axes are below:</pre><pre style="font-size:11.05px;margin-left:25px"><MetadataVersion version='"A"'></pre><pre style="font-size:11.05px;margin-left:25px"><MetadataVersion version='"1" "b"'></pre><pre style="font-size:11.05px;margin-left:25px"><MetadataInteger name="count" value="3"/></pre><pre style="font-size:11.05px;margin-left:25px"><MetadataDouble name="quantity" value="3.5"/></pre><pre style="font-size:11.05px;margin-left:25px"><MetadataString name="unit" value='"mg"'/></pre><pre style="font-size:11.05px;margin-left:25px"><MetadataDouble name="mg" value="0.4"/></pre><pre style="font-size:11.05px;margin-left:25px"><MetadataDouble name="x" value="1.0"/></pre><pre style="font-size:11.05px;margin-left:25px"><MetadataDouble name="y" value="4.0"/></pre><pre style="font-size:11.05px;margin-left:25px"><MetadataDouble name="z" value="9.0"/></pre><pre style="font-size:11.05px;margin-left:25px"><MetadataInteger name="century" value="2000"/></pre><pre style="font-size:11.05px;margin-left:25px"><MetadataInteger name="score" value="20"/></pre><pre style="font-size:11.05px;margin-left:25px"><MetadataInteger name="decade" value="20"/></pre><pre style="font-size:11.05px;margin-left:25px"><MetadataInteger name="year" value="2025"/></pre><pre style="font-size:11.05px;margin-left:25px"><MetadataInteger name="decade" value="20"/></pre><pre style="font-size:11.05px;margin-left:25px"><MetadataInteger name="month" value="4"/></pre><pre style="font-size:11.05px;margin-left:25px"><MetadataInteger name="fortnight" value="3"/></pre><pre style="font-size:11.05px;margin-left:25px"><MetadataInteger name="week" value="6"/></pre><pre style="font-size:11.05px;margin-left:25px"><MetadataInteger name="day" value="2"/></pre><pre style="font-size:11.05px;margin-left:25px"><MetadataInteger name="pm" value="10"/></pre><pre style="font-size:11.05px;margin-left:25px"><MetadataInteger name="24" value="22"/></pre><pre style="font-size:11.05px;margin-left:25px"><MetadataInteger name="minute" value="51"/></pre><pre style="font-size:11.05px;margin-left:25px"><MetadataInteger name="second" value="0"/></pre><pre style="font-size:11.05px;margin-left:25px"><MetadataDouble name="subsecond" value="0.0025"/></pre><pre style="font-size:11.05px;margin-left:25px"></MetadataVersion></pre><pre style="font-size:11.05px;margin-left:25px"></MetadataVersion></pre><pre style="font-size:11.05px;margin-left:25px"></pre><pre style="font-size:11.05px;margin-left:25px"><pre style="font-size:11.05px;margin-left:25px"><pre style="font-size:11.05px;margin-left:25px"><br style="font-size:11.05px">
</pre>
</pre>
</pre><pre style="font-size:11.05px;margin-left:25px"></pre><pre style="font-size:11.05px;margin-left:25px"></pre></div>
</blockquote></div></div>
</blockquote></div></div>
</blockquote></div></div></div></blockquote></div></div><div style="line-break:after-white-space"><div><blockquote type="cite"><div>
_______________________________________________<br>x3d-public mailing list<br><a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br><a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br></div></blockquote></div><br></div></blockquote></div></div>
</blockquote></div></div>
</blockquote></div></div>