Datalink vs link - open discussion

François Bonnarel francois.bonnarel at astro.unistra.fr
Wed Nov 20 17:43:01 CET 2019


Dear all,

Following this I closed the pull request #28. 
(https://github.com/ivoa-std/DataLink/pull/28)
I let open the issue #27 (https://github.com/ivoa-std/DataLink/issues/27)
and copied and paste this email below in this issue for follow up

Regards
François


Le 19/11/2019 à 16:57, Patrick Dowler a écrit :
>
> 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).
>
> I will try to condense this into a single github issue with reference 
> to this mail thread. We can continue broad discussion here.
>
> --
> Patrick Dowler
> Canadian Astronomy Data Centre
> Victoria, BC, Canada
>
>
> On Fri, 15 Nov 2019 at 03:04, Pierre Fernique 
> <Pierre.Fernique at astro.unistra.fr 
> <mailto:Pierre.Fernique at astro.unistra.fr>> wrote:
>
>     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
>     <http://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"
>     <http://simbad.u-strasbg.fr/simbad/sim-id?Ident=$%7BMAIN_ID%7D&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"
>     <http://simbad.u-strasbg.fr/simbad/sim-id?bibdisplay=refsum&Ident=$%7BMAIN_ID%7D#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-
>     we do 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
>     <http://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"
>     <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"
>     <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"
>     <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"
>     <http://simbad.u-strasbg.fr/simbad/sim-id?bibdisplay=refsum&Ident=$%7BMAIN_ID%7D#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}"
>     <http://vizier.u-strasbg.fr/viz-bin/VizieR-5?-info=XML&amp;-out.add=.&amp;-source=$%7B_tabname%7D&amp;$%7B_ID%7D>/>
>         </FIELD>
>     ...
>         <FIELD ID="sed_filter" name="_sed_filter" ucd="meta.id
>     <http://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}"
>     <http://cdsarc.u-strasbg.fr/viz-bin/metafilter?$%7B_sed_filter%7D>/>
>         </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
>     <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%28image/fits%29,*&-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"
>     <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>/>
>         </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}"
>     <http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/AdvancedSearch/?Observation.observationID=$%7BDATASET%7D>
>     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
>     <http://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"
>     <http://leda.univ-lyon1.fr/leda/querybyname.cgi?objname=$%7BDesignation%7D&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/20191120/41b72db4/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/20191120/41b72db4/attachment-0001.png>


More information about the dal mailing list