new version of high level languge

Niall Gaffney gaffney at stsci.edu
Thu Feb 27 12:46:37 PST 2003


I think this is a great start on a query language.  As someone who might 
write a client to use the VO, this is what I would love to have to get 
my information.

One thing I want to reflect a little on a broader issue.  The question 
is how much buy in cost do we expect  VO service providers to have to 
bear and what will the VO provide to aid in this?  I know we want it to 
be as "small as possible".  Supporting this query language though seems 
to create a significantly larger buy in cost than say our cone searches 
or SIA mostly due to is flexability.  For a some participant, this would 
require significantly more effort to support.  I'm not saying that this 
is a bad thing, as we do want the VO to be useful (and not being able to 
do some of these things would essentially make it not very usefull at 
all), but we have to recognize this.  Making services use a common data 
model is essental to the VO but we do have to look at this issue and 
explore where to draw the line of who does what conversions and 
manipulations to maximize participation and functionallity of the VO as 
a whole.  Requiring all services to implement such things as math and 
unit conversions in the query language and expect all providers to 
support that (correctly) is one of these things we should look at.

To reduce buy in for this very flexable query language, do we (the VO) 
anticipate providing some black box VO middle ware that would allow 
providers to describe their holdings and access methods in some way and 
have the black box use the access methods to get the data and then do 
the conversions and handling of the math?  I recognize that in many 
cases it would be strait forward to create an XSLT that could convert 
this query into SQL that is optimized for their database for an XML/SQL 
guru.  I don't know if that would be true for many potential providers, 
nor how many this would scare off simply as they do not have the 
resources. I also don't know if it is reasonable to try to make a 
generic black box as each system can be so different.

Alternately do we want to have different extensions to the query 
language and have the service know how to reveal which extensions it can 
use, either by interogation or in fields in the registry (or both with 
efficient harvesting).  Supports Math, Supports Unit Conversions, 
Supports 3D geometry queries...whatever. This gives me goosebumps as I 
know what this sort of thing has done to many other languages such as 
SQL.  Then those who wanted to provide advanced services like unit 
conversion and math could do so and clients that needed these services 
could restrict who they query to only the advanced ones they need.

Or do we simply have many different VO query entry points.  Cone Search 
and SIA like services stay with us as the simplest entry level for 
queries. VOQL then becomes a higher entry level (and perhapse has a 
simple way to cast itself into a cone search interface or a SIA 
interface). These advanced services can easily provide wrappers to act 
as Cone Searches or SIA searches.  Then the clients use the services 
that are at the level of complexity they need to do what they need to do 
knowing the lower they get the more data they can access, but the higher 
they go the less they have to do, but the more complex a system they 
have to support.

I know this is a bit off topic, but this query provides a good example 
for this issue and one that I think these groups should make some 
recomendations on for the rest of the VO to look into.

Niall


Ed Shaya wrote:

>
> Oops, that is not the URL for the documentation.  Here it is:
> http://nvo.gsfc.nasa.gov/ql/voql_doc/voqla.html
> Sorry about that.
>
>
> Ed Shaya wrote:
>
>>
>> I have made numerous additions/changes, most notably adding 
>> arithmetic, logic, inequalities,
>> so that one can take response variables and put constraints on them.  
>> I tried to be consistent with MathML whereever appropriate.  I did 
>> not get in all of the annotation that I hoped, but there are some 
>> short statements about each Type.   You can see an extensive auto 
>> generated documentation along with the latest schemas at
>>
>> http://nvo.gsfc.nasa.gov/impress/ql/voql.xsd
>>
>> Also, the spaceTime parts are now in a separate namespace, but for 
>> some reason I had to
>> drop all default values to do this, don't understand why.
>>
>> Ed
>>
>> ------------------------------------------------------------------------
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <!-- edited with XMLSPY v5 rel. 3 U (http://www.xmlspy.com) by Ed 
>> Shaya (NASA) -->
>> <request xmlns="http://www.vo.org/ql" 
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
>> xsi:schemaLocation="http://www.vo.org/ql
>> voql.xsd">
>>     <constraint>
>>         <object class="clusterOfGalaxies">
>>             <intersect>
>>                 <measurement name="X-ray_brightness" 
>> project="ROSAT">@clusterXray</measurement>
>>                 <image type="Xray" project="ROSAT" 
>> quality="@q">@image</image>
>>                 <name>@clusterName</name>
>>                 <measurement name="redshift" units="@czunits">
>>                     <range>
>>                         <lo inclusive="yes">0.6</lo>
>>                     </range>@cz</measurement>
>>                 <hasMember>
>>                     <object class="galaxy">
>>                         <intersect>
>>                             <name>@galaxyName</name>
>>                             <Coords coord_system_id="equatorial">
>>                                 <CoordLongitude>
>>                                     <CoordValue>
>>                                         <Query>@gRA</Query>
>>                                     </CoordValue>
>>                                 </CoordLongitude>
>>                             </Coords>
>>                             <CoordSystem coord_system_id="equatorial" 
>> coord_epoch="@epoch" coord_ref_frame="FK5"/>
>>                             <Coords coord_system_id="equatorial">
>>                                 <CoordLatitude>
>>                                     <CoordValue>
>>                                         <Query>@gDE</Query>
>>                                     </CoordValue>
>>                                 </CoordLatitude>
>>                             </Coords>
>>                             <measurement 
>> name="mType">@mType</measurement>
>>                             <union>
>>                                 <measurement project="ROSAT" 
>> name="Xraybrightness" units="@xrayUnits">@gXray</measurement>
>>                                 <image band="optical" 
>> quality="@@q">@@images</image>
>>                             </union>
>>                         </intersect>
>>                     </object>
>>                 </hasMember>
>>             </intersect>
>>         </object>
>>         <math>
>>             <apply>
>>                 <geq>
>>                     <apply>
>>                         <divide>
>>                             <ci>@Xraybrightness</ci>
>>                             <apply>
>>                                 <numberOf>@galaxyName</numberOf>
>>                             </apply>
>>                         </divide>
>>                     </apply>
>>                     <cn units="Jansky">3.0E3</cn>
>>                 </geq>
>>             </apply>
>>         </math>
>>     </constraint>
>>     <return type="VOTable" name="Cluster Info">
>>         <for-each object="@clusterName">
>>             <field name="clusterName" 
>> units="unitless">@clusterName</field>
>>             <field name="clusterXray" 
>> units="Jansky">@clusterXray</field>
>>             <field name="image" units="unitless">@image</field>
>>             <field name="redshift" units="@czunits">@cz</field>
>>             <field name="Number of Galaxies" units="unitless">
>>                 <math>
>>                     <apply>
>>                         <numberOf>@galaxyName</numberOf>
>>                     </apply>
>>                 </math>
>>             </field>
>>             <for-each object="@galaxyName">
>>                 <field name="galaxyName" 
>> units="unitless">@galaxyName</field>
>>                 <field name="gRA" units="unitless">@gRA</field>
>>                 <field name="gDE" units="unitless">@gDE</field>
>>                 <field name="Xray" units="@xrayUnits">@gXray</field>
>>                 <field name="mType" units="unitless">@mType</field>
>>                 <field name="images" units="unitless">@@images</field>
>>                 <field name="imageQuality" units="unitless">@@q</field>
>>             </for-each>
>>         </for-each>
>>     </return>
>> </request>
>>  
>>
>



More information about the voql mailing list