<div dir="ltr"><div class="gmail_extra"><p class="gmail-MsoPlainText">HI Mark<span></span></p>
<p class="gmail-MsoPlainText"><a name="_MailEndCompose"> </a></p>
<p class="gmail-MsoPlainText"><a name="_MailOriginal">> -----Original Message-----<span></span></a></p>
<p class="gmail-MsoPlainText">> From:
CresitelloDittmar, Mark [mailto:<a href="mailto:mdittmar@cfa.harvard.edu">mdittmar@cfa.harvard.edu</a>]<span></span></p>
<p class="gmail-MsoPlainText">> Sent:
Monday, April 17, 2017 10:46 AM<span></span></p>
<p class="gmail-MsoPlainText">> To: Gerard
Lemson <<a href="mailto:gerard.lemson@gmail.com">gerard.lemson@gmail.com</a>><span></span></p>
<p class="gmail-MsoPlainText">> Cc:
Laurino, Omar <<a href="mailto:olaurino@cfa.harvard.edu">olaurino@cfa.harvard.edu</a>>; <<a href="mailto:dm@ivoa.net">dm@ivoa.net</a>><span></span></p>
<p class="gmail-MsoPlainText">> <<a href="mailto:dm@ivoa.net">dm@ivoa.net</a>><span></span></p>
<p class="gmail-MsoPlainText">> Subject:
Re: ivoa: DM type system<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">> .....<span></span></p>
<p class="gmail-MsoPlainText">> <span></span></p>
<p class="gmail-MsoPlainText">> Yes.. this
is similar. We are wanting to go this
way so that there is common<span></span></p>
<p class="gmail-MsoPlainText">> vo-dml
annotation for these base (CoordValue) elements which can be<span></span></p>
<p class="gmail-MsoPlainText">> found by
generic utilities.<span></span></p>
<p class="gmail-MsoPlainText">> <span></span></p>
<p class="gmail-MsoPlainText"><span style="color:black">I will not comment on the model here, though I want to
reiterate that model evaluation should be part of the evaluation of
requirements/requests on the modelling language.<span></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">> ...<span></span></p>
<p class="gmail-MsoPlainText">> <span></span></p>
<p class="gmail-MsoPlainText">> <span></span></p>
<p class="gmail-MsoPlainText">> There are,
of course, a couple different solutions.<span></span></p>
<p class="gmail-MsoPlainText">> <span></span></p>
<p class="gmail-MsoPlainText">> The
proposed modeling is using the anyType here:<span></span></p>
<p class="gmail-MsoPlainText">> <a href="https://volute.g-vo.org/svn/trunk/projects/dm/STC-2.0/doc/diagrams/alt/base%20diagram.png"><span style="color:windowtext;text-decoration-line:none">https://volute.g-vo.org/svn/trunk/projects/dm/STC-<span></span></span></a></p>
<p class="gmail-MsoPlainText"><a href="https://volute.g-vo.org/svn/trunk/projects/dm/STC-2.0/doc/diagrams/alt/base%20diagram.png"><span style="color:windowtext;text-decoration-line:none">> 2.0/doc/diagrams/alt/base%20diagram.png</span></a><span></span></p>
<p class="gmail-MsoPlainText">> <span></span></p>
<p class="gmail-MsoPlainText">> <span></span></p>
<p class="gmail-MsoPlainText">> And is
resolved to particular types in concrete classes:<span></span></p>
<p class="gmail-MsoPlainText">> <span></span></p>
<p class="gmail-MsoPlainText">> <several> => Quantity<span></span></p>
<p class="gmail-MsoPlainText">> <span></span></p>
<p class="gmail-MsoPlainText">> PixelIndex => integer<span></span></p>
<p class="gmail-MsoPlainText">> <span></span></p>
<p class="gmail-MsoPlainText">> ISOTime
=> datetime<span></span></p>
<p class="gmail-MsoPlainText">> Polarization domain has enumerated value
set, but that is outside of this<span></span></p>
<p class="gmail-MsoPlainText">> usage as a
special type of Discrete.<span></span></p>
<p class="gmail-MsoPlainText">> <span></span></p>
<p class="gmail-MsoPlainText">> <span></span></p>
<p class="gmail-MsoPlainText">> So we went the easy way of putting anyType as
parent to all types in ivoa<span></span></p>
<p class="gmail-MsoPlainText">> which
allows the most flexibility<span></span></p>
<p class="gmail-MsoPlainText">> <a href="https://volute.g-vo.org/svn/trunk/projects/dm/STC-2.0/doc/diagrams/alt/ivoa%20types%20diagram.png"><span style="color:windowtext;text-decoration-line:none">https://volute.g-vo.org/svn/trunk/projects/dm/STC-<span></span></span></a></p>
<p class="gmail-MsoPlainText"><a href="https://volute.g-vo.org/svn/trunk/projects/dm/STC-2.0/doc/diagrams/alt/ivoa%20types%20diagram.png"><span style="color:windowtext;text-decoration-line:none">> 2.0/doc/diagrams/alt/ivoa%20types%20diagram.png</span></a><span></span></p>
<p class="gmail-MsoPlainText">> <span></span></p>
<p class="gmail-MsoPlainText"><span style="color:black">This is technically illegal in VO-DML. Though ValueType is
a common base class of PrimitiveType, Enumeration and DataType, it is abstract
and cannot be explicitly instantiated. Hence if you'd want to define
ivoa:anyType, it must be one of the three concrete value types. <span></span></span></p>
<p class="gmail-MsoPlainText"><span style="color:black">IF we'd make ValueType concrete and "allow" a
<valuetype> instantiation for it in VO-DML, we could define a common
super type for all value types.<span></span></span></p>
<p class="gmail-MsoPlainText"><span style="color:black">This anyType would basically be the only reason to allow
this I think, so rather ugly.<span></span></span></p>
<p class="gmail-MsoPlainText"><span style="color:black"> </span></p>
<p class="gmail-MsoPlainText"><span style="color:black">Alternatively we could follow the UML treatment of value
types, which is to have DataType be the common base class, and have enumeration
and primitiveType be subtypes of this, where the inheritance relations should
be seen as a kind of restriction. But a weird one, adding the implicit value,
and removing any roles. I'd almost prefer making ValueType concrete. <span></span></span></p>
<p class="gmail-MsoPlainText"><span style="color:black"> </span></p>
<p class="gmail-MsoPlainText"><span style="color:black"> </span></p>
<p class="gmail-MsoPlainText">> <span></span></p>
<p class="gmail-MsoPlainText">> But the immediate requirements can be accommodated
by adding a<span></span></p>
<p class="gmail-MsoPlainText">> DateQuantity
with datetime value..<span></span></p>
<p class="gmail-MsoPlainText">> <span></span></p>
<p class="gmail-MsoPlainText">> * then PixelIndex (integer value) would
be handled separately from the<span></span></p>
<p class="gmail-MsoPlainText">> Quantity
set.<span></span></p>
<p class="gmail-MsoPlainText">> <span></span></p>
<p class="gmail-MsoPlainText">> <span></span></p>
<p class="gmail-MsoPlainText">> Having anyType as super type to all
primitives does not support the time<span></span></p>
<p class="gmail-MsoPlainText">> domain as
we would like<span></span></p>
<p class="gmail-MsoPlainText">> <span></span></p>
<p class="gmail-MsoPlainText">> * Quantity and datetime would not have a
common ancestor, so we could<span></span></p>
<p class="gmail-MsoPlainText">> not define
a TimeStamp<span></span></p>
<p class="gmail-MsoPlainText">> <span></span></p>
<p class="gmail-MsoPlainText">> which would allow time represented as a
RealQuantity OR datetime.<span></span></p>
<p class="gmail-MsoPlainText">> <a href="https://volute.g-vo.org/svn/trunk/projects/dm/STC-2.0/doc/diagrams/alt/temporal%20domain%20diagram.png"><span style="color:windowtext;text-decoration-line:none">https://volute.g-vo.org/svn/trunk/projects/dm/STC-<span></span></span></a></p>
<p class="gmail-MsoPlainText"><a href="https://volute.g-vo.org/svn/trunk/projects/dm/STC-2.0/doc/diagrams/alt/temporal%20domain%20diagram.png"><span style="color:windowtext;text-decoration-line:none">> 2.0/doc/diagrams/alt/temporal%20domain%20diagram.png</span></a><span></span></p>
<p class="gmail-MsoPlainText">> <span></span></p>
<p class="gmail-MsoPlainText"><span style="color:black"> </span></p>
<p class="gmail-MsoPlainText"><span style="color:black">So are you saying you'd like a DatetimeQuantity? With only
a "datetime unit" being sufficient? <span></span></span></p>
<p class="gmail-MsoPlainText"><span style="color:black">I had hoped 'ivoa:datetime' would be sufficient and the
precise representation would be left to the mapping.<span></span></span></p>
<p class="gmail-MsoPlainText"><span style="color:black"> </span></p>
<p class="gmail-MsoPlainText"><span style="color:black">Cheers<span></span></span></p>
<p class="gmail-MsoPlainText"><span style="color:black">Gerard<span></span></span></p>
<p class="gmail-MsoPlainText"><span style="color:black"> </span></p>
<p class="gmail-MsoPlainText">> <span></span></p>
<p class="gmail-MsoPlainText">> Mark<span></span></p>
<p class="gmail-MsoPlainText">> <span></span></p>
<p class="gmail-MsoPlainText"><span> </span></p></div></div>