Datalink service descriptor usage

Mark Taylor m.b.taylor at bristol.ac.uk
Mon Feb 5 11:48:51 CET 2018


Marco,

thanks for your response.

On Sun, 4 Feb 2018, Marco Molinaro wrote:

> > Section 4 of the DataLink document describes Service Descriptors.
> > These are RESOURCE elements in VOTable documents containing
> > information about external services that can be invoked in
> > a way that is relevant to the data in a results table contained
> > within the same VOTable document.
> >
> > As I understand it, there are two separate ways these service
> > descriptors can be used.
> >
> >   1. A {links}-response table (as described in DataLink section 3)
> >      may refer to a specific Service Descriptor by giving its ID
> >      in the service_def column.
> >
> >   2. Any VOTable is allowed to include Service Descriptor resources,
> >      as made explicit in paragraphs 2 and 3 of DataLink section 4.
> >      Such service descriptors will presumably have at least some
> >      input parameters that take their values from the results table.
> >
> > In case 2, the service descriptor effectively defines a different
> > (full or partial) service invocation for every row of the results table.
> > In case 1 however, such invocations are only defined for those rows
> > in which the service_def column names the descriptor in question.
> >
> 
> I agree, but I would say that your description of case 2
> may fail if no DatasetID is set in a row. But that's probably
> a borderline case.

Is that right?  Section 4 says this:

   "Here we describe how to construct a resource that describes a
    service and add it to a VOTable document. The mechanism is
    general and can be used wherever a VOTable document is created."

>From that I take that this mechanism is not tied to the {links}-response
format or to provision of a DatasetID.  So for instance you could
write a VOTable that defines a Cone Search invocation for each row,
like this:

  <VOTABLE>
  <RESOURCE type="results">
    <TABLE>
      <FIELD name="RAJ2000" datatype="double" ID="col_ra"/>
      <FIELD name="DEJ2000" datatype="double" ID="col_dec"/>
      <DATA>
        <TABLEDATA>
          <TR><TD>83.50</TD><TD>22.01</TD></TR>
          <TR><TD>323.25</TD><TD>-0.81</TD></TR>
        </TABLEDATA>
      </DATA>
    </TABLE>
  </RESOURCE>
  <RESOURCE type="meta" utype="adhoc:service">
    <PARAM name="standardID" datatype="char" arraysize="*"
           value="ivo://ivoa.net/std/ConeSearch"/>
    <PARAM name="accessURL" datatype="char" arraysize="*"
           value="http://cda.harvard.edu/cxcscs/coneSearch"/>
    <GROUP name="inputParams">
      <PARAM name="RA"  datatype="char" arraysize="*" value="" ref="col_ra"/>
      <PARAM name="DEC" datatype="char" arraysize="*" value="" ref="col_dec"/>
      <PARAM name="SR"  datatype="char" arraysize="1" value="1"/>
    </GROUP>
  </RESOURCE>
  </VOTABLE>

Or is that not the intention?

> The distinction between 1 and 2 being only on where the
> service descriptor adhoc:service sits: directly on the
> results of discovery, in a further (multi)-access enabling
> document.

If the example above is correct use of the Service Descriptor
construct, then the difference is greater: in case 2 the service
descriptor(s) can be applied to all rows of the results table,
but in case 1 only those rows with an appropriate service_def
value define such invocations.

> * - happy you sent this email 'cause you forced him
> into a deeper look in Datalnk

I'm pleased that I could bring a little joy into your life!

Mark

--
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor at bris.ac.uk +44-117-9288776  http://www.star.bris.ac.uk/~mbt/


More information about the dal mailing list