Datalink vs link - open discussion

Pierre Fernique Pierre.Fernique at astro.unistra.fr
Fri Nov 15 11:58:16 CET 2019


Dear Datalink contributors and Apps members

/This is an open discussion concerning DATALINK vs LINK usage.//
/

I looked in detail at the new Datalink document 
<https://wiki.ivoa.net/internal/IVOA/DataLink-1_0-Next/DataLink.pdf> and 
I tried to evaluate the potential impact on the current use of the 
classic VOTable LINK. 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 years - the 
expected result in Aladin is provided at the end of this mail).

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.
In any case, here are the results of my effort:

*1) Method using VOTable LINK (available from v1.0 and following), using 
templating convention ($ {columnName} ... described in VOTable appendices)**
**
*/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.////The knowledge of the links is 
placed at the beginning of the VOTable stream which will simplify the 
life of the clients/

<VOTABLE><RESOURCE><TABLE>
    <FIELD ID="MAIN_ID" name="MAIN_ID" ucd="meta.id;meta.main" 
datatype="char" arraysize="*" width="22">
       <DESCRIPTION>Main identifier for an object</DESCRIPTION>
*      <LINK contentType="text/html" 
href="http://simbad.u-strasbg.fr/simbad/sim-id?Ident=${MAIN_ID}&NbIdent=1"/>**
*   </FIELD>
    ...
    <FIELD ID="BIBLIST" name="BIBLIST" ucd="meta.bib" datatype="short" 
width="4">
        <DESCRIPTION>List of Bibcodes</DESCRIPTION>
*       <LINK ***contentType="text/html" title*****="${BIBLIST} 
references for ${MAIN_ID}"
* 
*href="http://simbad.u-strasbg.fr/simbad/sim-id?bibdisplay=refsum&Ident=${MAIN_ID}#lab_bib"/>
*   </FIELD>
...
<DATA><TABLEDATA>
    <TR>
       <TD>[VV98] J084822.3+274553</TD>
       ...
       <<TD>19</TD>
    </TR>
    ...
</TABLEDATA></DATA></RESOURCE></VOTABLE>


*2) The same thing expressed in Datalink 1.1*(templating alternative 
discussed in Datalink author groups (see Datalink github 
<https://github.com/ivoa-std/datalink/>) is presented below)***
*

**/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- wedo not know 
where the link should be placed (on which column), 3- we can describe 
the associated text, 4- we can describe the type of data returned. The 
knowledge of the links is given at the end of the stream which can/will 
force the client to buffer. Finally the client must check that these 
services descriptors do not use a VO standardID or multiple choice 
parameters (OPTION).///

//

<VOTABLE>*<RESOURCE>*<RESOURCE *type="result"*><TABLE>
    <FIELD ID="MAIN_ID" name="MAIN_ID" ucd="meta.id;meta.main" 
datatype="char" arraysize="*" width="22">
       <DESCRIPTION>Main identifier for an object</DESCRIPTION>
    </FIELD>
    ...
    <FIELD ID="BIBLIST" name="BIBLIST" ucd="meta.bib" datatype="short" 
width="4">
        <DESCRIPTION>List of Bibcodes</DESCRIPTION>
    </FIELD>
...
<DATA><TABLEDATA>
    <TR>
       <TD>[VV98] J084822.3+274553</TD>
       ...
       <<TD>19</TD>
    </TR>
    ...
</TABLEDATA></DATA></RESOURCE>

<RESOURCE type="meta" utype="adhoc:service" name="SimbadMainPage">
    <DESCRIPTION>Link to Simbad main page</DESCRIPTION>
    <PARAM name="accessURL" datatype="char" arraysize="*" 
value="http://simbad.u-strasbg.fr/simbad/sim-id"/>
    <PARAM name="contentType" datatype="char" arraysize="*" 
value="text/html"/>
    <GROUP name="inputParams">
        <PARAM name="Ident" datatype="char" arraysize="*" ref="MAIN_ID"/>
        <PARAM name="NbIdent" datatype="char" arraysize="*" value="1"/>
    </GROUP>
</RESOURCE>

<RESOURCE type="meta" utype="adhoc:service" name="SimbadBiblio">
    <DESCRIPTION>Link to Simbad biblio</DESCRIPTION>
    <PARAM name="accessURL" datatype="char" arraysize="*" 
value="http://simbad.u-strasbg.fr/simbad/sim-id"/>
    <PARAM name="contentType" datatype="char" arraysize="*" 
value="text/html"/>
     <GROUP name="inputParams">
        <PARAM name="*bibdisplay*" datatype="char" arraysize="*" 
value="*refsum*"/>
        <PARAM name="Ident" datatype="char" arraysize="*" ref="MAIN_ID"/>
<!-- Not possible to describe the end of the URL : *#lab_bib*  -->
     </GROUP>
</RESOURCE>

</RESOURCE>
</VOTABLE>


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)*
*

...
<RESOURCE type="meta" utype="adhoc:service" name="SimbadBiblio">
    <DESCRIPTION>Link to Simbad biblio</DESCRIPTION>
    <PARAM name="accessURL" datatype="char" arraysize="*" 
value="http://simbad.u-strasbg.fr/simbad/sim-id"/>
    <PARAM name="contentType" datatype="char" arraysize="*" 
value="text/html"/>
     <GROUP name="inputParams">
        <PARAM name="*bibdisplay*" datatype="char" arraysize="*" 
value="*refsum*"/>
     </GROUP>
     <GROUP name="endpoints" >
        <PARAM name="identifier" utype="template" datatype="char" 
arraysize="*" ucd="meta.code" value= "Ident={?MAIN_ID*}#lab_bib />
     </GROUP>
</RESOURCE>
...


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 :

  * 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.
  * Datalink can only describe key=value parameters URL implying
    constant values for the root URL (no REST URLs for instance)

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.

As far as I understood and after my exercise, *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:****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.* 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).

Feel free to react to this open discussion, maybe only is the DAL 
mailing list for avoiding dupplications.

Best regards
Pierre Fernique

---

PS. FYI, here is the list of clients and data providers who currently 
use - to my knowledge - the LINK (with or without templating). 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 (except Aladin 
Desktop).

*Clients *(clearly CDS oriented)*:**
*

 1.     Aladin Desktop (Java)
 2.     CDS portal (JS)
 3.     Simbad Simplay (Flash)

*Data base services using VOTable LINK facility with templating 
(${columnName} variables in the LINK URL template)**
*

 1.     CDS Simbad
 2.     CDS VizieR
 3.     CDS photometric service (VizieR SED)
 4.     IMCCE Skybot
 5.     LEDA Hypercat
 6.     All HiPS providers using progenitor facility (for accessing to
    the original images)

*Some examples (in use):*

1) Simbad: 
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

<FIELD ID="BIBLIST" name="BIBLIST" ucd="meta.bib" datatype="short" 
width="4"><DESCRIPTION>List of Bibcodes</DESCRIPTION><LINK value="ref 
(${BIBLIST})" 
href="http://simbad.u-strasbg.fr/simbad/sim-id?bibdisplay=refsum&Ident=${MAIN_ID}#lab_bib"/></FIELD>

2) VizieR SED: 
http://vizier.u-strasbg.fr/viz-bin/sed?-c=04+59+02.70698+%2B21+44+11.2538&-c.rs=5.0

     <FIELD name="_tabname" ucd="meta.table" datatype="char" 
arraysize="32*">
       <DESCRIPTION>Table name</DESCRIPTION>
       <LINK 
href="http://vizier.u-strasbg.fr/viz-bin/VizieR-5?-info=XML&amp;-out.add=.&amp;-source=${_tabname}&amp;${_ID}"/>
     </FIELD>
...
     <FIELD ID="sed_filter" name="_sed_filter" 
ucd="meta.id;instr.filter" unit="" datatype="char" width="32" 
arraysize="32*">
       <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>
       <LINK 
href="http://cdsarc.u-strasbg.fr/viz-bin/metafilter?${_sed_filter}"/>
     </FIELD>


3) VizieR: 
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

     <FIELD name="_V" ucd="meta.ref" datatype="char" arraysize="6">
       <DESCRIPTION>Link to the VizieR record with all details</DESCRIPTION>
       <LINK 
href="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"/>
     </FIELD>

4) HiPS - HST B example: 
http://alasky.u-strasbg.fr/HST-hips/filter_B_hips/HpxFinder/metadata.xml

<FIELD name="DATASET" datatype="char" arraysize="*"><LINK 
href="http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/AdvancedSearch/?Observation.observationID=${DATASET}" 
title="Full metainfo"/></FIELD>

5) IMCCE: 
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

<vot:FIELD ID="name" name="Name" ucd="meta.id;meta.main" datatype="char" 
arraysize="32"><vot:DESCRIPTION>Solar system object 
name</vot:DESCRIPTION><vot:LINK href="${ExternalLink}"/></vot:FIELD>

6) LEDA: 
http://leda.univ-lyon1.fr/leda/leda-aladin.cgi?type=astrores&ra=210.80242917&de=54.34875&width=1.4&height=1.4

     <FIELD name="Designation" ucd="IDENT" datatype="A" width="21">
         <DESCRIPTION>LEDA designation</DESCRIPTION>
         <LINK 
href="http://leda.univ-lyon1.fr/leda/querybyname.cgi?objname=${Designation}&amp;donnee=mean&amp;Submit=Submit">${Designation}</LINK>
     </FIELD>


*Résultats à obtenir dans Aladin Desktop pour les deux liens directs 
Simbad**
*


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ivoa.net/pipermail/dal/attachments/20191115/586148e1/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ddflkhgekhghjjdi.png
Type: image/png
Size: 150136 bytes
Desc: not available
URL: <http://mail.ivoa.net/pipermail/dal/attachments/20191115/586148e1/attachment-0001.png>


More information about the dal mailing list