= Technical Teleconference, 2005 October 28 = == Agenda / Context == Igor requested a meeting to discuss how to use VOTable within VSO to make it easier for integration with other Virtual Observatories. {{{ Date: Thu, 27 Oct 2005 19:18:50 -0700 From: Igor Suarez-Sola To: Joe Hourcle, Karen Tian, Alisdair Davey Subject: VOTable for VSO Hi all, I want to clarify that the adoption of the VOTable format is for our metadata transactions and not scientific use (e.g. handling of fits files etc) and that the driver for this change is mainly performance. Although if we can be compliant with the VO all the better. Also , hopefully, the adoption of the VOTable would be used internally by the CORE, GUI, Catalogs, CART and providers ... See attached examples of VOTable.xml and VSOTable.xml (the only difference being in the TABLEDATA part). Both formats can be handle internally. However the interfaces can switch to one another and that'll be toggled by passing a flag in the request message. The VSOTable gains a little bit of performance over the one .. mainly in memory usage for large sets. The VOTable structure used in its simplest form E.g. "VOTable.xml" is quite straight forward. However I see how it can get awkwardly complex as we get into rough territory like keeping state, linking results set with Queries etc. For instance for catalog entries in one ResultSet could yield a new query and to a new result set. Although in principle all that could be achieved by sticking to the VOTable schema. It can get very twisted and I don't quite see the advantage of that ... and that's why I think the VOTable format should be used only for the search results, while everything else internal to the VSO like states, link to other queries and links to result set are handle as we do now in our own format. (mmmh ... it now sounds like the obvious thing to do ... probably you'll be thinking what the hell is he talking about ... ) Anyway going back to the VOTable.xml example ... things I want you to pay attention to ... 1. We can have multiple RESOURCE elements We can take the RESOURCE element as the equivalent of one provider "search results" a) use the DEFINITIONS element to specify the provider and version maybe other information related to the provider?? b) The TABLE element will be the actual result set I- Use the PARAM element to pass information relative to the search result namely no_of_records_found and no_of_records_returned II - A number of info messages (we can't put much granularity there but might suffice). If we want something more complex like message type , level of debugging etc we would have to bend the schema a little bit. 2. Alternatively we could have one RESOURCE and multiple TABLE elements where each TABLE will be the equivalent to one provider "search results" see attached "VOTable_2.xml" and the version and provider information goes as PARAM sub-elements. Note that the xml schema attached is version 1.0 and doesn't seem to allow that, however a pdf I have on VOTable 1.1 does 3. The other issue is if you want to pass or keep the 'query input parameters' in the VOTable ... probably not but I thought of asking ... Unfortunately I can't show you the code at this time. I thought I could give it to you today but I lost some time thinking in generalizing the decoding of the VOTable xml. To be honest is quite straight forward as long as we keep it simple . I.e the VOTable for search results only. However the handling on the provider side and the integration with the DataProvider.pm is mostly done as there weren't much to change there. So I'm finalizing the xml decoder for the VOTable .. and that will take tomorrow and then over the weekend I wrap up the test files and documentation ... yes Joe you heard/read well 'I am DOCUMENTing' as I go along ... ;-) ... so by moday you could have a look at it .. sorry for the delay! Talk to you tomorrow! Igor }}} == Decisions == {{{ Should we extend / modify VOTable? - Don't modify the structure. - Maybe add attributes if needed for extra VSO information - Try to find some VOTable folks, so we can ask why they laid it out how they did, and if they have any special intent for 'resource', etc. - Igor might have local folks to ask - Joe might go to the SPASE meeting next week, and has some local folks at GSFC to look up - We should try to make our format readable by VOTable tools. - Need to find what VOTable tools exist http://viewcvs.cacr.caltech.edu/us-vo/viewcvs.cgi/contrib/VOTable/ - Try to come up with something workable, and see how well it performs (speed, memory usage, compatability w/ existing tools), rather than try to worry about it being perfect in the first revision. Speed / Memory optimizations - Joe will look at the serializer bits, and see if we can avoid deserializing the content in the Core, so it's passed through as an xml string - May have to parse for version compatability issues (eg, deal with outdated providers and/or clients) - Get something working first, then find bottlenecks & optimize. }}}