Datalink vs link - open discussion

Patrick Dowler pdowler.cadc at gmail.com
Tue Nov 19 16:57:30 CET 2019


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> 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;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;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;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
>
>     <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;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/20191119/b9d1fe9f/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/20191119/b9d1fe9f/attachment-0001.png>


More information about the dal mailing list