<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">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 gmail_quote_container"><div dir="ltr" class="gmail_attr">On Thu, Apr 3, 2025 at 7:33 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’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="color:rgb(0,0,0);font-size:11.05px;margin-left:25px">I want 2 more fields beyond MetadataSet, below.</pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px">I want a MetadataVersion to call it out as different from MetadataSet.</pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px">I realized that I can give the MetadataSet a "version" name.</pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px">I also want to achieve a crontab-like or scheduling feature.</pre><pre style="color:rgb(0,0,0);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="color:rgb(0,0,0);font-size:11.05px;margin-left:25px">The idea is to create a vector-like object to maintain time series data</pre><pre style="color:rgb(0,0,0);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="color:rgb(0,0,0);font-size:11.05px;margin-left:25px">but I've not spotted it yet...CAD?</pre><pre style="color:rgb(0,0,0);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="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><br></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px">If the axes field is unacceptable, can we have a version field in MetadataSet?</pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><br></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px">Basically, I need a way to separate version and dimensional data from ordinary MetadataSets.</pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px">MetadataVersion: MetadataSet</pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px">{<br></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px">  MFNode axes NULL [X3DMetadataObject]</pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px">  MFString version '"0"'</pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px">// Add everything from MetadataSet.</pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px">// Default containerField is axes, not value or metadata.
}</pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px">Possible axes are below:</pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataVersion version='"A"'></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataVersion version='"1" "b"'></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataInteger name="count" value="3"/></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataDouble  name="quantity" value="3.5"/></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataString  name="unit" value='"mg"'/></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataDouble name="mg" value="0.4"/></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataDouble name="x" value="1.0"/></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataDouble name="y" value="4.0"/></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataDouble name="z" value="9.0"/></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataInteger name="century" value="2000"/></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataInteger name="score" value="20"/></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataInteger name="decade" value="20"/></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataInteger name="year" value="2025"/></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataInteger name="decade" value="20"/></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataInteger name="month" value="4"/></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataInteger name="fortnight" value="3"/></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataInteger name="week" value="6"/></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataInteger name="day" value="2"/></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataInteger name="pm" value="10"/></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataInteger name="24" value="22"/></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataInteger name="minute" value="51"/></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataInteger name="second" value="0"/></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"><MetadataDouble name="subsecond" value="0.0025"/></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"></MetadataVersion></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"></MetadataVersion></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"></pre><pre style="color:rgb(0,0,0);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="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"></pre><pre style="color:rgb(0,0,0);font-size:11.05px;margin-left:25px"></pre></div>
</blockquote></div></div>
</blockquote></div></div>