<div dir="ltr"><div><div><div><div><div>Markus,<br><br></div>In this and Mark&#39;s mail, I&#39;m seeing a distinction which maybe has been missed?<br></div>There is nothing preventing one from annotating a cube with &#39;alternate&#39; content and this could be widely usable by clients who don&#39;t care about validating the cube.  <br><br>My objection is to the statements that the model itself should not facilitate validation for the times when it IS desired.  With the loose-non coupled modeling scheme, one could literally put ANYTHING in the CoordSys element and it would be &#39;valid&#39; so long as it is has a vo-dml representation.  I&#39;ll note that this behavior is only true at the model boundaries.. if the elements are in the same model then the vo-dml must resolve to a specific - defined element.<br></div></div><br></div><div><div><div><div><div><div><div><div class="gmail_extra">more below:<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Mar 22, 2017 at 9:20 AM, Markus Demleitner <span dir="ltr">&lt;<a href="mailto:msdemlei@ari.uni-heidelberg.de" target="_blank">msdemlei@ari.uni-heidelberg.de</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
</span>I&#39;m not strictly arguing against saying in an appropriate place<br>
(e.g., a DAL protocol, an endorsed note, or perhaps even a short REC<br>
containing mainly examples): &quot;A fully-compliant spectrum-1 instance has to<br>
have valid annotations for STC-2 (spectral axis; for the record, I still<br>
think the spectral axis should have a separate DM), photometry-1 (flux<br>
axis), Dataset-1, and NDCube (axis organisation).  For observed spectra,<br>
additionally, the Dataset-1 target position annotation and an<br>
Observation-1 annotation&quot;.<br>
<br></blockquote><div>IMO - that is the job of the model... then if you annotate to the model, it is valid.<br></div><div>if you don&#39;t annotate to the model, it is not.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Note that the last clause also provides a nice solution to what were<br>
discussing back in the Spectrum DM 2.0 days, where SDM made the<br>
target position required and it was unclear what to do with<br>
theoretical spectra.<br></blockquote><div><br></div><div>Yeah.. in one of the earlier mails, I agree that we probably want to change this relation so that different types of Dataset could be used.<br></div><div>My favorite being:<br></div><div>  NDCubeDataset<br></div><div>    + reference to Dataset  ( could be ObsDataset, or SimDataset, or whatever )<br></div><div>    + reference to NDCube DataProduct<br></div><div>  which defines the required pieces, but allows more flexibility.<br><br></div><div> &lt;snip&gt;<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class=""></span><span class=""><br>
&gt; The ownership relations are there for various applications which<br>
&gt; implement the model.  When implementing a library, I would want to<br>
&gt; know when it is safe to free the memory space for particular<br>
&gt; elements.  I think this is most true for database applications, but<br>
&gt; that is outside my wheelhouse.<br>
<br>
</span>Hm -- I think memory management, whether reference counting as<br>
proposed here, a conventional garbage collector, or whatever else is<br>
so far removed from data modelling that I doubt the concept of<br>
ownerwhip in data model elements will actually help implementations<br>
in memory management.<br></blockquote><div><br></div><div>My understanding is that defining memory management is one of the primary uses of data models.<br></div><div>That information is not used in all cases, and elements may be flattened/combined on implementation, but the model defines the fundamental relations between objects.<br></div><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
&gt; &gt; &gt; &gt;&gt; If I have a 3D cartesian Space, with coordinate axes x,y,z.. there is<br>
&gt; &gt; 1<br>
&gt; &gt; &gt; &gt;&gt; DataAxis referring to a Position3D in that space.<br>
&gt; &gt;<br>
&gt; &gt; Uh -- that sounds... dangerous.  In the spirit of my preference to<br>
&gt; &gt; ideally reference native entities (i.e., FIELDs here): How does this<br>
&gt; &gt; DataAxis grouping help a client?  What is it supposed to do with it?<br>
&gt; &gt; How does the grouping help it over just having three axis (that, of<br>
&gt; &gt; course, might still be related through one or more separate STC<br>
&gt; &gt; annotations, but I&#39;d like that to be uncorrelated if at all<br>
&gt; &gt; possible).<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; 1 FIELD -&gt; 1 DataAxis (Coordinate) works fine only for the simplest<br>
&gt; case (1D value with no errors).  For the 2D/3D cases, the errors<br>
&gt; may be correlated, so the bundle of FIELDs for the value must be<br>
&gt; grouped above the errors.  And then there is the errors...  A &#39;2D<br>
&gt; Coordinate&#39; with 2 sources of error, both symmetric.. would have 4<br>
&gt; FIELDs feeding the DataAxis/Coordinate content  ( x, y, xy_staterr,<br>
&gt; xy_ranerr ).<br>
<br>
</span>Yes, correlations are a bit of a challenge, but you&#39;ll have<br>
correlated errors in all kinds of contexts, so I&#39;d argue that&#39;s for<br>
quantity again, not for coordinates themselves.</blockquote><div>The Quantity you outline above (value + error) IS what is called Coordinate in these models.  With the distinction that &#39;value&#39; includes the axis/frame reference.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">  Since doing this<br>
kind of advanced annotation right is difficult, my preference would<br>
be to postpone their definition until we have some experience with<br>
the simple cases.  You can compatibly add things later, but taking<br>
them away will probably mean a new major version, which would be<br>
painful even without lots of links between DMs.<br></blockquote><div> </div><div>I think the way we have modeled errors will facilitate growth/change on a minor-version level.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Having said that, I think these correlated errors are a case where DM<br>
objects need to be referenced; but that would be references *within*<br>
(hopefully) quantity, not between different DMs.<br>
<br>
I admit that I don&#39;t really look forward to defining quantity (i.e.,<br>
modelling errors, ranges, and that kind of thing) either, but I<br>
maintain it&#39;s much better to do this once properly (and then<br>
carefully evolve it in this single place) than to solve these<br>
analogous problems in each DM and/or domain separately.<br>
<span class="HOEnZb"></span></blockquote><div><br></div><div>Agreed.. again, since your Quantity == my Coordinate, the &#39;coords&#39; model would be that place.<br></div><div>If we agree on consolidating out the &#39;domain&#39; aspect of that model, it becomes a single set of objects which can be evolved as you suggest.<br></div><div>(the &#39;domain&#39; variations move entirely to the coordsys model.. &#39;values + axis refs&#39; are domain savvy)<br></div><div> <br></div><div>Mark<br><br></div><div><br></div></div></div></div></div></div></div></div></div></div></div>