<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hi<o:p></o:p></p>
<p class="MsoNormal">For a philosophical point in support of Pat’s view:<o:p></o:p></p>
<p class="MsoNormal">IF a TOperation is supposed to be a function in the math sense, then a DataType (or ValueType) can well be a/the correct representation.<o:p></o:p></p>
<p class="MsoNormal">For example if we consider functions as points in a “function space” (<a href="https://en.wikipedia.org/wiki/Function_space">https://en.wikipedia.org/wiki/Function_space</a>), they may be treated similarly to integers, or reals, or points
 in a more standard multidimensional space.<o:p></o:p></p>
<p class="MsoNormal">Importantly, In general the existence of a particular function is self-evident based on the definition of the class of functions it is supposedly a member of.<o:p></o:p></p>
<p class="MsoNormal">For example the definition of “polynomial function” implicitly defines all of its instances and we do not have to explicitly state that “2*x^3&#43;4” exists, it is implied by the definition.<o:p></o:p></p>
<p class="MsoNormal">As written on page 31 of the vo-dml spec,this is a defining characteristic of a ValueType as opposed to an ObjectType.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">If instead a TOperation instead is supposed to represent “the application of a function in a particular context”, that may well deserves to be an ObjectType.<o:p></o:p></p>
<p class="MsoNormal">But it seems to me that in the transformation model that role is played by the TMapping? And I think it is good indeed to separate these two concepts.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">It may seem that a TOperation should be an ObjectType because it may have a complex structure. As Pat argues that is no reason not to use a DataType.<o:p></o:p></p>
<p class="MsoNormal">It may be due to the particular representation chosen in the model. I guess it would be possible to model the operation be a string representing a mathematical equation, with some prescription how axes or so are represented as variables.
 Interpreters need to be able to parse the expression, but again “valid mathematical function definition” would, with some details added, be sufficient to see if a certain string qualifies as a valid value of the type. Hence be a ValueType.<o:p></o:p></p>
<p class="MsoNormal">Actually, it seems to me from <a href="https://volute.g-vo.org/svn/trunk/projects/dm/STC/Trans/doc/WD-Trans-1.0.pdf">
https://volute.g-vo.org/svn/trunk/projects/dm/STC/Trans/doc/WD-Trans-1.0.pdf</a> that the model still misses a “prescription how axes or so are represented as variables&quot;. To me the essential elements for a transformation model would be representation of the
 actual “things” that are being mapped or transformed and how these are represented in the operations. (I have some initial suggestion how that can be modelled if you’re interested).<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Cheers<o:p></o:p></p>
<p class="MsoNormal">Gerard<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> dm-bounces@ivoa.net &lt;dm-bounces@ivoa.net&gt; <b>On Behalf Of
</b>Patrick Dowler<br>
<b>Sent:</b> Friday, March 6, 2020 23:14<br>
<b>To:</b> CresitelloDittmar, Mark &lt;mdittmar@cfa.harvard.edu&gt;<br>
<b>Cc:</b> Data Models mailing list &lt;dm@ivoa.net&gt;<br>
<b>Subject:</b> Re: [vo-dml] Clarification on composition rule..<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">I don't understand &quot;<span style="color:black">NOTE: the nature of several operations require it to be an ObjectType rather than a DataType, so these can't be Attributes.&quot;
</span><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p>&nbsp;</o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black">I have created models with DataType(s) that are &quot;structures&quot; so I could use them as attributes in multiple places and I have declared DataType(s) that extend (subclass) other DataType(s). Both
 of those are vodml compliant...&nbsp; what is it that requires TOperation to be an ObjectType? Is it a philosophical issue?</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p>&nbsp;</o:p></span></p>
</div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal">--<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Patrick Dowler<o:p></o:p></p>
</div>
<p class="MsoNormal">Canadian Astronomy Data Centre<o:p></o:p></p>
</div>
<p class="MsoNormal">Victoria, BC, Canada<o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<div>
<div>
<p class="MsoNormal">On Wed, 4 Mar 2020 at 09:43, CresitelloDittmar, Mark &lt;<a href="mailto:mdittmar@cfa.harvard.edu">mdittmar@cfa.harvard.edu</a>&gt; wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal">Hi,<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">In the Transform model, we have a case where we want to use the same Object with different roles in the parent Object.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Specifically, we want to define a &quot;Mapping&quot; with a forward and inverse &quot;Operation&quot;.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">What I'd like to do is:<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><img border="0" width="201" height="326" style="width:2.0937in;height:3.3958in" id="_x0000_i1025" src="cid:image001.png@01D5F460.C66C4600" alt="A.png"><o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">But the VO-DML rec states; Section 4.17, pg 48, &quot;an ObjectType can only be the target of at most one Composition relation&quot;.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">And this does indeed fail vo-dml validation. &nbsp;<span style="color:black">&nbsp;NOTE: the nature of several operations require it to be an ObjectType rather than a DataType, so these can't be Attributes.</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">I CAN do:<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><img border="0" width="294" height="326" style="width:3.0625in;height:3.3958in" id="_x0000_i1026" src="cid:image002.png@01D5F460.C66C4600" alt="B.png"><o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">Which has only 1 composition, but is hacky and not very user-friendly.. I'd really prefer to have explicit 'forward' and 'inverse' tags.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">To make a vo-dml compliant&nbsp;version of the first diagram, I need to add a layer to the model.&nbsp; This works fine, and is the current model, but is rather ugly and makes it a little more difficult to interpret. &nbsp;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><img border="0" width="384" height="406" style="width:4.0in;height:4.2291in" id="_x0000_i1027" src="cid:image003.png@01D5F460.C66C4600" alt="C.png"><o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">Mainly, I think I'm looking to confirm that the rule in Section 4.17 is
<b>intended</b> to include this case.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">I expect it is, and has to do with RDB implementations and distinguishing the instances, but I'm not a DB person and don't fully get all that.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">Mark<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</body>
</html>