<div dir="ltr"><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">ObsCore can have multiple result rows from the same &quot;observation&quot;, eg with different calib_level, and iirc the purpose of obs_id is that that set of rows would have the same obs_id and thus users would know they are different &quot;products&quot; of the same observation (aka same <strike>photons</strike> messengers).</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">In practice, obs_id could be null if that were not the case, eg if every record was a different observation. I expect it could be OK for some records to have null and others have a value that occurred 1+ times in the table even within a single OsbCore as obs_id is a specific kind of &quot;part of this group of records&quot; and null(s) would mean &quot;not part of a group&quot;. <br></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">Having said that, this has a clear meaning to me because our ObsCore impl is a view on CAOM and CAOM is normalised wrt. this obs_id concept (where ObsCore is denormalised), but I expect it is not so simple to specify use of nulls here and clearly deal with other variations of underlying models.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"></div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div>--<br></div><div>Patrick Dowler<br></div>Canadian Astronomy Data Centre<br></div>Victoria, BC, Canada<br></div></div></div></div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 7 Mar 2022 at 09:56, Markus Demleitner &lt;<a href="mailto:msdemlei@ari.uni-heidelberg.de">msdemlei@ari.uni-heidelberg.de</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Dear DAL, dear Ops,<br>
<br>
[Ops: I&#39;m cc-ing you because I&#39;m linking to a praise of validation,<br>
while the thread leading up to this is perhaps not very relevant to<br>
you; discussion on obs_id should probably happen on DAL exclusively]<br>
<br>
On Fri, Mar 04, 2022 at 11:43:29AM +0000, Mark Taylor wrote:<br>
&gt; I&#39;m not generally in favour of MUST rather than SHOULD constraints<br>
&gt; for non-NULL column values, on the grounds that data producers<br>
&gt; who don&#39;t have sensible values to put in there may end up giving<br>
&gt; useless or nonsense values just to comply with the standards,<br>
&gt; which doesn&#39;t provide value to anybody.<br>
&gt; <br>
&gt; However, it may be that the best answer to Markus&#39;s problem is<br>
&gt; for me to drop that taplint query, which could be reasonable.<br>
&gt; The intention is that taplint doesn&#39;t place unreasonable demands<br>
&gt; on the services that it validates, and I&#39;m happy to take advice<br>
&gt; in cases where that&#39;s not happening.<br>
<br>
When I tried to compose an answer to this this morning, I quickly<br>
realised it was turning into a philosophical piece.  Which I then<br>
turned into a blog post this afternoon:<br>
&lt;<a href="https://blog.g-vo.org/requirements-and-validators.html" rel="noreferrer" target="_blank">https://blog.g-vo.org/requirements-and-validators.html</a>&gt;<br>
<br>
The TL;DR would be: Thanks, but no thanks.<br>
<br>
Let&#39;s figure out whether we really have to require obs_id to be<br>
non-NULL.  If we find a reason for that, I&#39;ll bite the bullet and<br>
make the taplint query fast.  If we don&#39;t, let&#39;s drop the requirement<br>
(I volunteer for writing an erratum, which should be quick and easy<br>
after we&#39;ve done the thinking here).<br>
<br>
Thanks,<br>
<br>
             Markus<br>
</blockquote></div>