<div dir="ltr"><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">Thanks Pierre - this has a lot of great analysis and use cases that DataLink can/should address. I think we will need to come up with a coherent design to add support for fragments and RESTful path elements to the current query param support - especially since they can in principle all play together (eg in VOSpace one uses both path and query params and that is a common pattern, you showed using query params and fragment, and I can easily see using path, query, and fragment making sense in some context).</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">I will try to condense this into a single github issue with reference to this mail thread. We can continue broad discussion here.</div><div class="gmail_default" style="font-size:small"><br></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 Fri, 15 Nov 2019 at 03:04, Pierre Fernique <<a href="mailto:Pierre.Fernique@astro.unistra.fr">Pierre.Fernique@astro.unistra.fr</a>> 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">
<div bgcolor="#FFFFFF">
<p>Dear Datalink contributors and Apps members</p>
<p><i>This is an open discussion concerning DATALINK vs LINK usage.</i><i><br>
</i></p>
<p><span lang="en"><span title="">I looked in detail at the <a href="https://wiki.ivoa.net/internal/IVOA/DataLink-1_0-Next/DataLink.pdf" target="_blank">new
Datalink document</a> and I tried to evaluate the potential
impact on the current use of the classic VOTable LINK.</span>
<span title="">Specifically, I tried to write the
VOTable corresponding to a basic Simbad result, containing two
direct links, one to get the basic Simbad result page, the
other to list the associated bib references (this is a
real/live example since 18</span> <span title="">years
- the expected result in Aladin is provided at the end of this
mail).</span> <span title=""></span><br>
<br>
<span title="">Currently, I have to admit that I remain
a little bit dubious about the complexity of the Datalink
solution to implement one or more direct simple links.</span><br>
<span title="">In any case, here are the results of my effort:</span></span></p>
<div>
<div>
<div><span lang="en"><b><span title="">1) Method using VOTable
LINK (available from v1.0 and following), using
templating convention ($ {columnName} ... described in
VOTable appendices)</span></b><b><br>
</b><b><br>
</b><i><span title="">We can easily describe in one
XML line the 4 essential elements of a link: 1-how is
built the link, 2-where it must be placed, 3-what is its
associated text, 4-what it will return.</span></i><i> </i><i><span title="">The knowledge of the links is placed at the
beginning of the VOTable stream which will simplify the
life of the clients</span></i></span></div>
</div>
</div>
<div><br>
</div>
<p><tt><VOTABLE><RESOURCE><TABLE></tt><tt><br>
</tt><tt> <FIELD ID="MAIN_ID" name="MAIN_ID"
ucd="<a href="http://meta.id" target="_blank">meta.id</a>;meta.main" datatype="char" arraysize="*"
width="22"></tt><tt><br>
</tt><tt> <DESCRIPTION>Main identifier for an
object</DESCRIPTION></tt><tt><br>
</tt><font color="#009900"><b><tt> <LINK
contentType="text/html"
href=<a href="http://simbad.u-strasbg.fr/simbad/sim-id?Ident=$%7BMAIN_ID%7D&NbIdent=1" target="_blank">"http://simbad.u-strasbg.fr/simbad/sim-id?Ident=${MAIN_ID}&NbIdent=1"</a>/></tt></b><b><tt><br>
</tt></b></font><tt> </FIELD></tt><tt><br>
</tt><tt> ...</tt><tt><br>
</tt><tt> <FIELD ID="BIBLIST" name="BIBLIST" ucd="meta.bib"
datatype="short" width="4"></tt><tt><br>
</tt><tt> <DESCRIPTION>List of
Bibcodes</DESCRIPTION></tt><tt><br>
</tt><b><font color="#009900"><tt> <LINK </tt></font></b><b><font color="#009900"><tt><font color="#009900"><b><tt>contentType="text/html"
title</tt></b></font></tt></font></b><b><font color="#009900"><tt><font color="#009900"><b><tt><font color="#009900"><b><tt>="${BIBLIST} references for
${MAIN_ID}"<br>
</tt></b></font> </tt></b></font>href=<a href="http://simbad.u-strasbg.fr/simbad/sim-id?bibdisplay=refsum&Ident=$%7BMAIN_ID%7D#lab_bib" target="_blank">"http://simbad.u-strasbg.fr/simbad/sim-id?bibdisplay=refsum&Ident=${MAIN_ID}#lab_bib"</a>/></tt><tt><br>
</tt></font></b><tt> </FIELD></tt><tt><br>
</tt><tt>...</tt><tt><br>
</tt><tt><DATA><TABLEDATA></tt><tt><br>
</tt><tt> <TR></tt><tt><br>
</tt><tt> <TD>[VV98] J084822.3+274553</TD></tt><tt><br>
</tt><tt> ...</tt><tt><br>
</tt><tt> <<TD>19</TD></tt><tt><br>
</tt><tt> </TR></tt><tt><br>
</tt><tt> ...</tt><tt><br>
</tt><tt></TABLEDATA></DATA></RESOURCE></VOTABLE></tt><tt><br>
</tt></p>
<p><br>
<b><span lang="en"><span title="">2) The same thing expressed in Datalink
1.1</span></span></b><span lang="en"><span title=""> (templating
alternative discussed in Datalink author groups (see <a href="https://github.com/ivoa-std/datalink/" target="_blank">Datalink github</a>)
is presented below)</span></span><b><span lang="en"></span></b><span lang="en"><span title=""></span></span><b><span lang="en"><br>
</span></b></p>
<p><b><span lang="en"></span></b><i><span lang="en"><span title="">We can describe via additional RESOURCES one or
more links: 1-we know how to build it but with limitations
(everything before the ? is constant and only key=value
parameters are possible), 2- <font color="#ff0000">we</font></span><font color="#ff0000"> </font><span title=""><font color="#ff0000">do not know where the link should be
placed (on which column)</font>, 3- we can describe the
associated text, 4- we can describe the type of data
returned.</span> <span title="">The knowledge of the links
is given <font color="#ff0000">at the end of the stream </font>which
can/will force the client to buffer.</span> <span title="">Finally
the client must check that these services descriptors do not
use a VO standardID or multiple choice parameters (OPTION).</span></span></i><i>
</i></p>
<i> </i>
<p><tt><VOTABLE><b><font color="#009900"><RESOURCE></font></b><RESOURCE
</tt><tt><font color="#009900"><b>type="result"</b></font></tt><tt>><TABLE></tt><tt><br>
</tt><tt> <FIELD ID="MAIN_ID" name="MAIN_ID"
ucd="<a href="http://meta.id" target="_blank">meta.id</a>;meta.main" datatype="char" arraysize="*"
width="22"></tt><tt><br>
</tt><tt> <DESCRIPTION>Main identifier for an
object</DESCRIPTION></tt><tt><br>
</tt><tt> </FIELD></tt><tt><br>
</tt><tt> ...</tt><tt><br>
</tt><tt> <FIELD ID="BIBLIST" name="BIBLIST" ucd="meta.bib"
datatype="short" width="4"></tt><tt><br>
</tt><tt> <DESCRIPTION>List of
Bibcodes</DESCRIPTION></tt><tt><br>
</tt><tt> </FIELD></tt><tt><br>
</tt><tt>...</tt><tt><br>
</tt><tt><DATA><TABLEDATA></tt><tt><br>
</tt><tt> <TR></tt><tt><br>
</tt><tt> <TD>[VV98] J084822.3+274553</TD></tt><tt><br>
</tt><tt> ...</tt><tt><br>
</tt><tt> <<TD>19</TD></tt><tt><br>
</tt><tt> </TR></tt><tt><br>
</tt><tt> ...</tt><tt><br>
</tt><tt></TABLEDATA></DATA></RESOURCE></tt><tt><br>
</tt><tt><br>
</tt><font color="#009900"><tt><RESOURCE type="meta"
utype="adhoc:service" name="SimbadMainPage"></tt><tt><br>
</tt><tt> <DESCRIPTION>Link to Simbad main
page</DESCRIPTION></tt><tt><br>
</tt><tt> <PARAM name="accessURL" datatype="char"
arraysize="*" value=<a href="http://simbad.u-strasbg.fr/simbad/sim-id" target="_blank">"http://simbad.u-strasbg.fr/simbad/sim-id"</a>/></tt><tt><br>
</tt><tt> <PARAM name="contentType" datatype="char"
arraysize="*" value="text/html"/></tt><tt><br>
</tt><tt> <GROUP name="inputParams"></tt><tt><br>
</tt><tt> <PARAM name="Ident" datatype="char"
arraysize="*" ref="MAIN_ID"/></tt><tt><br>
</tt><tt><tt> <PARAM name="NbIdent" datatype="char"
arraysize="*" value="1"/></tt><tt><br>
</tt> </GROUP></tt><tt><br>
</tt><tt></RESOURCE></tt></font></p>
<p><font color="#009900"><tt><RESOURCE type="meta"
utype="adhoc:service" name="SimbadBiblio"></tt><tt><br>
</tt><tt> <DESCRIPTION>Link to Simbad
biblio</DESCRIPTION></tt><tt><br>
</tt><tt> <PARAM name="accessURL" datatype="char"
arraysize="*" value=<a href="http://simbad.u-strasbg.fr/simbad/sim-id" target="_blank">"http://simbad.u-strasbg.fr/simbad/sim-id"</a>/></tt><tt><br>
</tt><tt> <PARAM name="contentType" datatype="char"
arraysize="*" value="text/html"/></tt><tt><br>
</tt><tt> <GROUP name="inputParams"></tt><tt><tt><br>
<PARAM name="</tt></tt><tt><tt><b><tt>bibdisplay</tt></b>"
datatype="char" arraysize="*" value="</tt></tt><tt><tt><tt><tt><b><tt>refsum</tt></b></tt></tt>"/></tt><tt><br>
</tt></tt><tt> <PARAM name="Ident" datatype="char"
arraysize="*" ref="MAIN_ID"/></tt><tt><br>
</tt><tt><tt> <font color="#ff0000"><!-- Not possible
to describe the end of the URL : </font></tt></tt><tt><font color="#ff0000"><tt><b><tt>#lab_bib</tt></b></tt></font><tt><font color="#ff0000"> --></font><br>
</tt> </GROUP></tt><tt><br>
</tt><tt></RESOURCE></tt></font></p>
<p><tt><font color="#009900"></RESOURCE></font><br>
</tt><tt></VOTABLE></tt></p>
<p><tt><br>
</tt></p>
<p>Or via the alternative templating possibility proposed in 1.1
datalink discussion (only the last link description is provided -
thanks to François Bonnarel for his help)<b><br>
</b></p>
<p><font color="#009900"><tt>...<br>
<RESOURCE type="meta" utype="adhoc:service"
name="SimbadBiblio"></tt><tt><br>
</tt><tt> <DESCRIPTION>Link to Simbad
biblio</DESCRIPTION></tt><tt><br>
</tt><tt> <PARAM name="accessURL" datatype="char"
arraysize="*" value=<a href="http://simbad.u-strasbg.fr/simbad/sim-id" target="_blank">"http://simbad.u-strasbg.fr/simbad/sim-id"</a>/></tt><tt><br>
</tt><tt> <PARAM name="contentType" datatype="char"
arraysize="*" value="text/html"/></tt><tt><br>
</tt><tt> <GROUP name="inputParams"></tt><tt><tt><br>
<PARAM name="</tt></tt><tt><tt><b><tt>bibdisplay</tt></b>"
datatype="char" arraysize="*" value="</tt></tt><tt><tt><tt><tt><b><tt>refsum</tt></b></tt></tt>"/></tt><tt><br>
</tt></tt><tt> </GROUP></tt><tt><br>
<GROUP name="endpoints" ><br>
<PARAM name="identifier" utype="template"
datatype="char" arraysize="*" </tt><tt><tt>ucd="meta.code"
value= "Ident={?MAIN_ID*}#lab_bib /></tt></tt><tt><tt><br>
</GROUP></tt></tt><tt><tt></tt><br>
</tt></font><font color="#009900"><tt></RESOURCE><br>
...<br>
</tt></font></p>
<font color="#009900"> </font>
<p><span lang="en"><span title=""><br>
</span></span></p>
<p><span lang="en"><span title="">At the end, and in the context of basic
direct links, from a LINK solution in one code line without
using any additional dedicated structure, we had to deploy a
solution with additional RESOURCES, nested, structured, 10 to
15 times more verbose, but who can not do the job completely.
There are two main issues in addition of the complexity :</span></span></p>
<ul>
<li><span lang="en"><span title="">There is no possibility in Datalink to say
that this link in associated to this value of this row, on
this other link to this other value. Datalink is only row
oriented.</span></span></li>
<li><span lang="en"><span title="">Datalink can only describe key=value
parameters URL implying constant values for the root URL (no
REST URLs for instance)<br>
</span></span></li>
</ul>
<span lang="en"><span title="">My reaction is it will not be easy to sell this
Datalink alternative, and the risk of writing/parsing errors
will be proportionate to this complexity.</span></span><br>
<span lang="en"></span>
<p><span lang="en"><span title="">As far as I understood and after my exercise, <b>I
would tend to think that Datalink can not/should not replace
the use of basic LINK - with or without templating - and
probably each method will keep its niche:</b></span><b> </b><b><span title="">the basic LINK for direct links associated with the
values of a column, the Datalink for lists of links with
descriptions, SODA and more for each line result.</span></b>
<span title="">I'm afraid that if we do not keep the classic
LINK usage, we'll just see Aladin Desktop's links disappear
(as it was occured for the NED results for example).</span></span></p>
<p><span lang="en"><span title="">Feel free to react to this open discussion, maybe
only is the DAL mailing list for avoiding dupplications.<br>
</span></span></p>
<p>Best regards<br>
Pierre Fernique<br>
</p>
<p>---<br>
</p>
<p>PS. <span lang="en"><span title="">FYI, here is the list of clients and data providers
who currently use - to my knowledge - the LINK (with or
without templating).</span> <span title="">To my knowledge,
none of them has had any inclination in these last 4 years to
move to Datalink1.0 alternative for basic direct links</span>
<span title="">(except Aladin Desktop).</span></span> </p>
<p><b>Clients </b>(clearly CDS oriented)<b>:</b><b><br>
</b></p>
<ol>
<li> Aladin Desktop (Java)</li>
<li> CDS portal (JS)</li>
<li> Simbad Simplay (Flash)<br>
</li>
</ol>
<p><b>Data base services using VOTable LINK facility with templating
(${columnName} variables in the LINK URL template)</b><b><br>
</b></p>
<ol>
<li> CDS Simbad</li>
<li> CDS VizieR</li>
<li> CDS photometric service (VizieR SED)</li>
<li> IMCCE Skybot</li>
<li> LEDA Hypercat</li>
<li> All HiPS providers using progenitor facility (for accessing
to the original images)</li>
</ol>
<p><b>Some examples (in use):</b><br>
<br>
1) Simbad:
<a href="http://alasky.u-strasbg.fr/cgi/simbad-flat/simbad-cs.py?target=08+47+18.60770+%2B26+53+20.1212&SR=54.63&format=votable-tsv&SRUNIT=arcmin&SORTBY=nbref" target="_blank">http://alasky.u-strasbg.fr/cgi/simbad-flat/simbad-cs.py?target=08+47+18.60770+%2B26+53+20.1212&SR=54.63&format=votable-tsv&SRUNIT=arcmin&SORTBY=nbref</a><br>
<br>
<tt><FIELD ID="BIBLIST" name="BIBLIST" ucd="meta.bib"
datatype="short" width="4"><DESCRIPTION>List of
Bibcodes</DESCRIPTION><LINK value="ref (${BIBLIST})"
href=<a href="http://simbad.u-strasbg.fr/simbad/sim-id?bibdisplay=refsum&Ident=$%7BMAIN_ID%7D#lab_bib" target="_blank">"http://simbad.u-strasbg.fr/simbad/sim-id?bibdisplay=refsum&Ident=${MAIN_ID}#lab_bib"</a>/></FIELD></tt><tt><br>
</tt><br>
2) VizieR SED:
<a href="http://vizier.u-strasbg.fr/viz-bin/sed?-c=04+59+02.70698+%2B21+44+11.2538&-c.rs=5.0" target="_blank">http://vizier.u-strasbg.fr/viz-bin/sed?-c=04+59+02.70698+%2B21+44+11.2538&-c.rs=5.0</a><br>
<br>
<tt> <FIELD name="_tabname" ucd="meta.table" datatype="char"
arraysize="32*"></tt><tt><br>
</tt><tt> <DESCRIPTION>Table name</DESCRIPTION></tt><tt><br>
</tt><tt> <LINK
href=<a href="http://vizier.u-strasbg.fr/viz-bin/VizieR-5?-info=XML&amp;-out.add=.&amp;-source=$%7B_tabname%7D&amp;$%7B_ID%7D" target="_blank">"http://vizier.u-strasbg.fr/viz-bin/VizieR-5?-info=XML&amp;-out.add=.&amp;-source=${_tabname}&amp;${_ID}"</a>/></tt><tt><br>
</tt><tt> </FIELD></tt><tt><br>
</tt><tt>...</tt><tt><br>
</tt><tt> <FIELD ID="sed_filter" name="_sed_filter"
ucd="<a href="http://meta.id" target="_blank">meta.id</a>;instr.filter" unit="" datatype="char" width="32"
arraysize="32*"></tt><tt><br>
</tt><tt> <DESCRIPTION>Filter designation, in the form
photoSystem:filterName; a designation starting by ':=' is an
assumed monochromatic point; this column is empty when the
frequency is specified for each data point.</DESCRIPTION></tt><tt><br>
</tt><tt> <LINK href=<a href="http://cdsarc.u-strasbg.fr/viz-bin/metafilter?$%7B_sed_filter%7D" target="_blank">"http://cdsarc.u-strasbg.fr/viz-bin/metafilter?${_sed_filter}"</a>/></tt><tt><br>
</tt><tt> </FIELD></tt><tt><br>
</tt><tt><br>
</tt><br>
3) VizieR:
<a href="http://vizier.u-strasbg.fr/viz-bin/votable?-source=I%2F284%2Fout&-c=05+34+31.93920+%2B22+00+52.2000&-out.add=_RAJ,_DEJ&-oc.form=dm&-out.meta=DhuL&-out.max=999999&-c.rm=23.82&-out=_VizieR,*Mime(image/fits),*&-mime=TSV" target="_blank">vizier.u-strasbg.fr/viz-bin/votable?-source=I%2F284%2Fout&-c=05+34+31.93920+%2B22+00+52.2000&-out.add=_RAJ,_DEJ&-oc.form=dm&-out.meta=DhuL&-out.max=999999&-c.rm=23.82&-out=_VizieR,*Mime(image/fits),*&-mime=TSV</a><br>
<br>
<tt> <FIELD name="_V" ucd="meta.ref" datatype="char"
arraysize="6"></tt><tt><br>
</tt><tt> <DESCRIPTION>Link to the VizieR record with
all details</DESCRIPTION></tt><tt><br>
</tt><tt> <LINK
href=<a href="http://vizier.u-strasbg.fr/viz-bin/VizieR-5?-info=XML&amp;-out.add=.&amp;-source=I/284/out&amp;-c=$%7BRAJ2000%7D$%7BDEJ2000%7D&amp;-c.eq=J2000.000&amp;-c.rs=0.5" target="_blank">"http://vizier.u-strasbg.fr/viz-bin/VizieR-5?-info=XML&amp;-out.add=.&amp;-source=I/284/out&amp;-c=${RAJ2000}${DEJ2000}&amp;-c.eq=J2000.000&amp;-c.rs=0.5"</a>/></tt><tt><br>
</tt><tt> </FIELD></tt><tt><br>
</tt> <br>
4) HiPS - HST B example: <a href="http://alasky.u-strasbg.fr/HST-hips/filter_B_hips/HpxFinder/metadata.xml" target="_blank">http://alasky.u-strasbg.fr/HST-hips/filter_B_hips/HpxFinder/metadata.xml</a><br>
<br>
<tt><FIELD name="DATASET" datatype="char"
arraysize="*"><LINK
href=<a href="http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/AdvancedSearch/?Observation.observationID=$%7BDATASET%7D" target="_blank">"http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/AdvancedSearch/?Observation.observationID=${DATASET}"</a>
title="Full metainfo"/></FIELD></tt><tt><br>
</tt><tt><br>
</tt>5) IMCCE:
<a href="http://vo.imcce.fr/webservices/skybot/skybotconesearch_query.php?-ep=2019-11-11&-ra=131.82753208333332&-dec=26.888922555555556&-size=109.26,109.26&-mime=votable&-out=basic&-loc=500&-search=Asteroids+and+Planets&-filter=120+arcsec&-from=Aladin" target="_blank">http://vo.imcce.fr/webservices/skybot/skybotconesearch_query.php?-ep=2019-11-11&-ra=131.82753208333332&-dec=26.888922555555556&-size=109.26,109.26&-mime=votable&-out=basic&-loc=500&-search=Asteroids+and+Planets&-filter=120+arcsec&-from=Aladin</a><br>
<br>
<tt><vot:FIELD ID="name" name="Name" ucd="<a href="http://meta.id" target="_blank">meta.id</a>;meta.main"
datatype="char" arraysize="32"><vot:DESCRIPTION>Solar
system object name</vot:DESCRIPTION><vot:LINK
href="${ExternalLink}"/></vot:FIELD></tt><tt><br>
</tt><br>
6) LEDA:
<a href="http://leda.univ-lyon1.fr/leda/leda-aladin.cgi?type=astrores&ra=210.80242917&de=54.34875&width=1.4&height=1.4" target="_blank">http://leda.univ-lyon1.fr/leda/leda-aladin.cgi?type=astrores&ra=210.80242917&de=54.34875&width=1.4&height=1.4</a><br>
<br>
<tt> <FIELD name="Designation" ucd="IDENT" datatype="A"
width="21"></tt><tt><br>
</tt><tt> <DESCRIPTION>LEDA
designation</DESCRIPTION></tt><tt><br>
</tt><tt> <LINK
href=<a href="http://leda.univ-lyon1.fr/leda/querybyname.cgi?objname=$%7BDesignation%7D&amp;donnee=mean&amp;Submit=Submit" target="_blank">"http://leda.univ-lyon1.fr/leda/querybyname.cgi?objname=${Designation}&amp;donnee=mean&amp;Submit=Submit"</a>>${Designation}</LINK></tt><tt><br>
</tt><tt> </FIELD></tt><tt><br>
</tt></p>
<p><br>
</p>
<p><b>Résultats à obtenir dans Aladin Desktop pour les deux liens
directs Simbad</b><b><br>
</b></p>
<p><img src="cid:16e845d4f4cc32e973f1" alt=""></p>
<br>
</div>
</blockquote></div>