<div dir="ltr"><div class="gmail_extra"><p class="gmail-MsoPlainText">Hi Markus<span></span></p>

<p class="gmail-MsoPlainText"><span> </span></p>

<p class="gmail-MsoPlainText">Tl,dr: In the mapping spec for LITERAL we must pay
careful attention to the serialization of LITERAL values, and may want to
&quot;just&quot; use PARAM.<span></span></p>

<p class="gmail-MsoPlainText">Details to be worked out, but we may not be able to keep
the separation between a VOTable and separate vo-dml-maping schema.<span></span></p>

<p class="gmail-MsoPlainText">More comments below.<span></span></p>

<p class="gmail-MsoPlainText"><span> </span></p>

<p class="gmail-MsoPlainText">&gt; -----Original Message-----<span></span></p>

<p class="gmail-MsoPlainText">&gt; From: <a href="mailto:dm-bounces@ivoa.net">dm-bounces@ivoa.net</a> [<a href="mailto:dm-bounces@ivoa.net">mailto:dm-bounces@ivoa.net</a>] On Behalf Of <span></span></p>

<p class="gmail-MsoPlainText">&gt; Markus Demleitner<span></span></p>

<p class="gmail-MsoPlainText">&gt; Sent: Thursday, April 13, 2017 5:18 AM<span></span></p>

<p class="gmail-MsoPlainText">&gt; To: <a href="mailto:dm@ivoa.net">dm@ivoa.net</a><span></span></p>

<p class="gmail-MsoPlainText">&gt; Subject: Re: ivoa: DM type system<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; Hi Gerard,<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; On Wed, Apr 12, 2017 at 10:45:38AM -0400, Gerard
Lemson wrote:<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; It seems that at least it is agreed that we
should distinguish the <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; VO-DML spec from the serialization/mapping
spec.<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt;<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; And that the issue Markus brings up is one for
the latter only, <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; apart from possible discussions on the contents
of the ivoa model, <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; which belongs to the RFC page?<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; Well, I&#39;ve put it there, and as regards pulling the
ivoa data model <span></span></p>

<p class="gmail-MsoPlainText">&gt; out of VO- DML proper, I think there still is a
point.  Keeping what <span></span></p>

<p class="gmail-MsoPlainText">&gt; it specifies fluid until we have actual experience
how these things <span></span></p>

<p class="gmail-MsoPlainText">&gt; work out while fundamental things like stc and
whatever we use to <span></span></p>

<p class="gmail-MsoPlainText">&gt; model value+error are in flux would seem wise to me.<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">Will have a look at RFC page again and reply there as
well.<span></span></p>

<p class="gmail-MsoPlainText"><span> </span></p>

<p class="gmail-MsoPlainText">&gt; But you&#39;re right, my primary concern here is LITERAL
within VOTable, <span></span></p>

<p class="gmail-MsoPlainText">&gt; and thus a mapping issue.<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">And especially a serialization issue I think. For indeed
VO-DML says NOTHING about how to serialize instances.<span></span></p>

<p class="gmail-MsoPlainText">So you&#39;re right that when using a LITERAL value, only
specifying its VO-DML primitive type may not be sufficient in general.<span></span></p>

<p class="gmail-MsoPlainText">It would be nice to have a common way to specify this,
which so far in the mapping doc we did not do.<span></span></p>

<p class="gmail-MsoPlainText">Whether VOTable elements would suffice I don&#39;t know,
maybe it is up to protocols to define this as you seem to be doing below in
DALI?<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; &gt; Markus Demleitner &lt;Wednesday, April 12,
2017 5:04 AM&gt; Are there <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; &gt; any other cases except ENUMs?<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt;<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; datetime! 
Any custom primitive types some model defines. For <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; example Mark CD has been wanting to add a URL
type as separate from anyURI).<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; I feared it would come to this.  After long contortions, we eventually <span></span></p>

<p class="gmail-MsoPlainText">&gt; reached agreement on using<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt;   datatype=&quot;char&quot;,
arraysize=&quot;*&quot;, xtype=&quot;timestamp&quot;<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; in DALI, sect. 3.3.3, for these.<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">Ok, sorry for not keeping up with that. Is it DALI 3.1.2?<span></span></p>

<p class="gmail-MsoPlainText">Does this mean you&#39;re 
favoring passing such choices off to the protocols then? <span></span></p>

<p class="gmail-MsoPlainText">For interpreters that do not know that protocol this
would not help. <span></span></p>

<p class="gmail-MsoPlainText">But if this is allowed, could this not extend to the
VO-DML literal serializations as well?<span></span></p>

<p class="gmail-MsoPlainText"><span> </span></p>

<p class="gmail-MsoPlainText"><span> </span></p>

<p class="gmail-MsoPlainText">&gt; &gt; Fields outside of astronomy introduce
&quot;zip-code&quot; type as a string <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; obeying certain restrictions.<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt;<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; Similarly decimal can be seen as a rational
with denominator a power of 10.<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt;<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; No doubt there are many others.<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; Sure. 
Geometries in VOTable.<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; I appreciate it would be great if we could introduce
some clean, well- <span></span></p>

<p class="gmail-MsoPlainText">&gt; thought-out system for doing what&#39;s now done
(admittedly<span></span></p>

<p class="gmail-MsoPlainText">&gt; suboptimally) with xtypes in VOTable.<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; But if the price for this is that people, within one
VOTable, have to <span></span></p>

<p class="gmail-MsoPlainText">&gt; recognise timestamps in LITERALs by seeing it&#39;s <span></span></p>

<p class="gmail-MsoPlainText">&gt; vodml-type=&quot;ivoa:datetime&quot; and using one
literal parser, while having <span></span></p>

<p class="gmail-MsoPlainText">&gt; to check xtype and use a different literal parser
when it&#39;s in PARAM makes me cringe.<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; Plus, it won&#39;t stop with datetimes.<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">Sure. So are you arguing we should rely on xtype as a
kind of free-for-all label plus a protocol-based serialization prescription? For datatype, even with arraysize will in general not be sufficient.</p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; Introduction of such custom primitives is
easily accommodated in our <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; VO-DML mechanism, where the basic primitives
are explicitly defined <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; as types and<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; I have no doubts that it&#39;s easy in VO-DML.  If it stays there, I don&#39;t <span></span></p>

<p class="gmail-MsoPlainText">&gt; have a major problem with this.  If it bleeds out into other <span></span></p>

<p class="gmail-MsoPlainText">&gt; standards, that&#39;s a different matter; if we&#39;re not
careful there, the <span></span></p>

<p class="gmail-MsoPlainText">&gt; complete system will be an inconsistent mess of
duplicate <span></span></p>

<p class="gmail-MsoPlainText">&gt; specifications. 
And people will hate us or, worse, ignore us.<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; Yes, it sucks to always have to compromise.  But the alternative is worse.<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText"><span> </span></p>

<p class="gmail-MsoPlainText"><span> </span></p>

<p class="gmail-MsoPlainText">&gt; &gt; Also, VO-DML aims to be representation neutral,
hence restricts for <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; example its numeric types to the mathematical
number systems <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; (N,Z,Q,R,C), rather than using the software
representations,<span></span></p>

<p class="gmail-MsoPlainText">&gt; short/int/long(/longer/longest?).<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; This is one reason why rational is included.
Also it is datetime, <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; not date, or time, or MJD, UTC, or whatever.
Again, those are deemed <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; to be serialization issues and it completely
proper for VOTable to <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; define those, but no need to do so in VO-DML.<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; Again, it&#39;s great if VO-DML has conceptual clarity
here, but if <span></span></p>

<p class="gmail-MsoPlainText">&gt; VOTable implementors have to support another type
system with lots of <span></span></p>

<p class="gmail-MsoPlainText">&gt; rules of its own that&#39;s a major implemenation
liability.  And given <span></span></p>

<p class="gmail-MsoPlainText">&gt; there&#39;s CONSTANT and LITERAL, somehow the mapping
document will still <span></span></p>

<p class="gmail-MsoPlainText">&gt; have to talk about VOTable types and literals.<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">It will, it is &quot;only&quot; in the formal definition
that it might be nice to be able to separate out the schemas.<span></span></p>

<p class="gmail-MsoPlainText"><span> </span></p>

<p class="gmail-MsoPlainText">&gt; &gt; &gt; (a) normal clients just mind that they can
parse the thing.  For <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; &gt; that, they just need the VOTable datatype
(and they already have <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; &gt; parsers for<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; &gt; that)<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt;<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; I expect with &#39;normal clients&#39; you mean those
that will ignore the <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; whole VODML element? If so there is no issue as
only there LITERALs <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; will occur<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; No.  Since
we&#39;re using VO-DML to annotate basic STC, I don&#39;t think <span></span></p>

<p class="gmail-MsoPlainText">&gt; there should be clients ignoring VODML at all.  A normal client, for <span></span></p>

<p class="gmail-MsoPlainText">&gt; instance, is one that just wants to figure out what
Epoch and Frame a <span></span></p>

<p class="gmail-MsoPlainText">&gt; coordinate is for, but has built-in knowledge about
STC and hence does <span></span></p>

<p class="gmail-MsoPlainText">&gt; not need to retrieve and parse the VO-DML data model
itself.<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; Call it &quot;non-validating&quot; if you will.<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; &gt; -- which of course begs the question
whether we can&#39;t scupper <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; &gt; LITERAL again and just use PARAMs instead
of them.<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt;<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; That was what I originally used in th rewrite
of the mapping syntax, <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; but we (focus team) decided, I think correctly,
that we&#39;d like to <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; remove any dependency on VOTable elements,
something Laurent and<span></span></p>

<p class="gmail-MsoPlainText">&gt; Mark<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; touched upon in their replies I think.<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt;<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; Doing so makes it possible to separate the
schema for VO-DML mapping <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; elements out from the main VOTable schema.<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; Is that a benefit proportional to forcing VOTable
implementors to <span></span></p>

<p class="gmail-MsoPlainText">&gt; supporting a second, incompatible type system with
its own rules for serialisation?<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; As I said, VODML annotation will do extremely basic
things in the <span></span></p>

<p class="gmail-MsoPlainText">&gt; future.  I
don&#39;t see how any VOTable library could get away with not supporting it.<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; Also, it was decided that the dmtype would be
mandatory even if the <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; type is not being cast to a more specific type
than the one declared <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; for a<span></span></p>

<p class="gmail-MsoPlainText">&gt; Role?<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt;<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; Would you want to remove that requirement form
the mapping?<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; Since the requirement doesn&#39;t seem to be something
that makes client&#39;s <span></span></p>

<p class="gmail-MsoPlainText">&gt; lives easier, I&#39;m all for removing it, yes.<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">Good point for a vote?<span></span></p>

<p class="gmail-MsoPlainText"><span> </span></p>

<p class="gmail-MsoPlainText"><span> </span></p>

<p class="gmail-MsoPlainText"><span> </span></p>

<p class="gmail-MsoPlainText">&gt; &gt; &gt; &gt; Finally, I do not think that renaming
ivoa types as VOTable <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; &gt; &gt; datatypes will help that much.<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt;<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; &gt; Well, it&#39;s certainly saving clients the
trouble of having to come <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; &gt; up with parsers for all the literals of
the VO-DML types when they <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; &gt; already have parsers for the VOTable
types.  I&#39;d say that&#39;s, if <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; &gt; nothing else, a courtesy to implementors,
and given they&#39;re the <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; &gt; ones that eventually control takeup, that
ain&#39;t so bad.<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt;<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; Main issue seems to be LITERAL-s and the fact
that, being <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; standalone, one can currently not use the
VOTable datatypes.<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt;<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; One solution as you say is to use PARAM, other
is to add the VOTable <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; datatype as an attribute to LITERAL.<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; If you consider dmtype as critical and PARAM really
unsuitable for <span></span></p>

<p class="gmail-MsoPlainText">&gt; your purposes, that would be a solution that at
least would still keep <span></span></p>

<p class="gmail-MsoPlainText">&gt; things manageable (you&#39;d have to copy datatype,
arraysize, and xtype).<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">Ok. Note, arraysize may not be required, as  a LITERAL is ALWAYS inside an ATTRIBUTE spec
and has multiplicity unbounded.<span></span></p>

<p class="gmail-MsoPlainText">(Actually a bit more generic than that even).<span></span></p>

<p class="gmail-MsoPlainText"><span> </span></p>

<p class="gmail-MsoPlainText"><span> </span></p>

<p class="gmail-MsoPlainText">&gt; But it seems a lot of effort for a use case that
we&#39;re not even sure <span></span></p>

<p class="gmail-MsoPlainText">&gt; is terribly common (validating in the case of
derived data models).<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">So choice seems to be between using PARAM as valid
instance inside of an ATTRIBUTE iso new LITERAL, or adding PARAM attributes
&#39;datatype&#39; and &#39;xtype&#39; (and &#39;unit&#39; and &#39;arraysize&#39;)?<span></span></p>

<p class="gmail-MsoPlainText"><span> </span></p>

<p class="gmail-MsoPlainText">Another vote?<span></span></p>

<p class="gmail-MsoPlainText"><span> </span></p>

<p class="gmail-MsoPlainText"><span> </span></p>

<p class="gmail-MsoPlainText">&gt; &gt; Anyway, note also that VOTable mappers will
have the option of using <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; a CONSTANT (i.e. the VO-DML-mapping equivalent
of a PARAMref), i.e.<span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; create a VOTable-typed PARAM somewhere and
refer to it. I would <span></span></p>

<p class="gmail-MsoPlainText">&gt; &gt; definitely NOT propose this as a solution
though.<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; Since you mention it: Why not?  Sure, an extra reference is involved, <span></span></p>

<p class="gmail-MsoPlainText">&gt; which is always bad, but as far as I can see there&#39;s
nothing you can <span></span></p>

<p class="gmail-MsoPlainText">&gt; do with LITERAL that you can&#39;t do with CONSTANT, and
one feature less is always a big win.<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">You&#39;d have to always add PARAMs outside the VODML spec to
be linked to from within.<span></span></p>

<p class="gmail-MsoPlainText">So in spec it may be one element less, but in instances
it&#39;d be one extra element for every literal value.<span></span></p>

<p class="gmail-MsoPlainText"><span> </span></p>

<p class="gmail-MsoPlainText">&gt; $ python -c &quot;import this&quot; | grep
preferably There should be one-- and <span></span></p>

<p class="gmail-MsoPlainText">&gt; preferably only one --obvious way to do it.<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">FWIW, I don&#39;t like CONSTANT very much and would rather do
away with it.<span></span></p>

<p class="gmail-MsoPlainText"><span> </span></p>

<p class="gmail-MsoPlainText"><span> </span></p>

<p class="gmail-MsoPlainText">Gerard<span></span></p>

<p class="gmail-MsoPlainText"><span> </span></p>

<p class="gmail-MsoPlainText"><span> </span></p>

<p class="gmail-MsoPlainText"><span> </span></p>

<p class="gmail-MsoPlainText">&gt;       --
Markus<span></span></p>

<p class="gmail-MsoPlainText">&gt; <span></span></p>

<p class="gmail-MsoPlainText">&gt; (Who apologises for playing the troublemaker all
time; but somehow <span></span></p>

<p class="gmail-MsoPlainText">&gt; almost the entire VO comes together in DaCHS, and so
when conflicts <span></span></p>

<p class="gmail-MsoPlainText">&gt; between different grand or little designs start,
there&#39;s always craters in my front lawn.<span></span></p>

<p class="gmail-MsoPlainText">&gt; Little innocent me, I&#39;d be happy if only I had a way
to tell my <span></span></p>

<p class="gmail-MsoPlainText">&gt; clients that a position is in ICRS for Epoch J2000,
and where the <span></span></p>

<p class="gmail-MsoPlainText">&gt; proper motions are. 
A way the clients actually bother to use, that <span></span></p>

<p class="gmail-MsoPlainText">&gt; is.)<span></span></p></div></div>