VOResource v1.0 IWD

Ray Plante rplante at ncsa.uiuc.edu
Fri Jun 10 05:21:14 PDT 2005


Hey Arnold

Thank you, thank you, very much for your careful reading!

On Thu, 9 Jun 2005, Arnold Rots wrote:
> In Section 2.2 you define UTCDateTime.  I think it is the only place
> where you use a union and I wonder whether that is a good choice.
> It is obviously tempting, but my impression is that code generators
> are not universally happy with it since it makes for a rather
> indeterminate polymorphism.

I am concerned about this for the same reason.  This definition was lifted 
from the OAI schema which was addressing the same requirement: to support 
dates either with or without the hms part.  This is one of the things we 
need to test with existing code generators.

I've done a little bit of this using Axis' wsdl2java.  I was concerned it 
would create 2 internal data fields in the UTCDateTime type (one for each 
type in the union), but it only created one of type java.util.Calendar.  
I haven't actually tested the serialization/deserialization yet, so some 
questions remain.  We'll need to see what the .Net tools do with it as 
well. 

> As part of that union you define UTCDateTimeZ.  I would advise against
> it.  The "Z" option has explicitly been excluded from STC and from
> FITS since the whole time zone philosophy in ISO 8601 is totally
> inadequate for astronomical purposes.  I am aware that that does not
> play a role here, but I would suggest that consistency within the VO
> is more important.  Therefore I would suggest to drop the Z and assume
> UTC by implication (it's in the type name anyway).

Your point about FITS (with STC following suit) is an interesting one.  I 
would be happy to drop the forcing of the use of the trailing Z.  

One argument for keeping the Z (which I don't find very compelling given 
the FITS standard choice) is that this is how you encode a UTC using the 
ISO 8601 standard.  By forcing the use of Z you disallow the use of 
timezones and make it clear (to outside users, parsers) that this is a UTC 
value.  Arguably, the dates we're talking about here are not 
intended to be astronomical in precision, so the 8601 should be adequate 
here.  Other comments, anyone?

> Ah well, I have to make a comment on the bullet in Section 2.3 that
> deals with substitution groups.  xsi:type is not completely
> functionally equivalent to substitution groups; there are a few
> differences.  

So this is our on-going debate.  By "functionaly equivalent", I mean that 
any content (or control of that content) of a node represented by an 
element in a substitution group can be represented with an element and an 
xsi:type.  That is, except for the element name and whether there's an
xsi:type, everything else about the element is exactly the same.  

> I know you have reservation about substitution groups, and I share
> most of them, but there are certain things that one can do with SGs
> that xsi:type does not allow.

So my challenge to you would be to come up with an example of rendering 
content that you can do with one technique but not the other (that 
differs beyond the element name and whether there is an xsi:type).  

> I am not sure that it is terribly important to make it
> obvious in the documents that a substitution has been made; I think it
> is far more important in the schema - and there a substitution group
> provides a more obvious flag.

In general more eyes--human and software--will look at instance documents 
than schemas.  (Remember, we went to this from substitution groups based 
on responses from developers.)  

It actually can make a big difference in parsing the document.  Consider a 
SAX parser operating on a service description.  The interface element must 
use xsi:type because the Interface type is abstract.  With the xsi:type, 
you will always be able to find the interface element even if it is of a 
type you don't support (because you weren't aware of the schema 
beforehand).  You can still pick out the bits you do recognize.  With 
substitution groups, if you have a substituting element in there that you 
don't support, you won't find the interface description.  

Now an consider XPath.  Suppose that you want some bit of core metadata 
from the interface, like accessURL.  With the xsi:type technique, you can 
use an XPath of "resource/interface/accessURL".  With substitution groups 
you have to resort to "*/*/accessURL" (because resource will always be a 
point of substitution, too).  Which is more precise?  BTW, this would also 
break our use of XPath in ADQL when querying the registry, because we have 
the requirement that it not be necessary for the consumer to parse the 
XPath; this is only possible if we can restrict ourselves paths 
that have a one-to-one mapping to locations in an XML document.  

> Near the end of 2.3.1 you talk about sharpening the meaning of a
> vr:Resource.  To me, "sharpening" conjures associations with
> "restriction", not "extension" or just a name change.  

Perhaps different wording would be helpful.  Suggestions?  In OO 
modeling, When you create a derived class, you are creating something more 
specific from the more general parent class.  It shouldn't matter (in 
the XML case) if this is by extension or restriction.  That notion of 
refining is what I'm trying to capture there.  

> And I must say
> that I am not terribly comfortable with the concept of identical types
> that supposedly have different properties, implied by the name of the
> type.

This is a common technique in OO programming.  For example, it is common 
in Java to have named interfaces that have no methods.  You tag a class 
with such an interface to help guide class users on their handling of the 
class.  The most common example is the interface Serializable.  A more 
accessible example is in your Zoo class library, you might tag some animal 
classes as Dangerous.  This doesn't add any new data/methods to the 
animal, but it is a signal to the visitor class not to feed it.  

> In 3.1.2, under vr:Date Attributes, I find a value "representative"
> for "role".  This is mixing apples and oranges.  The coverage is not a
> part of Curation.  Creation and update are fine, but don't mix in any
> coverage.

Date is take from the RM, which states "Typically, 
Date will be associated with the creation or availability" which 
correlates with time coverage.  The RM definition is necessarily vague, 
since its application will depend on the type of resource (DataCollection 
vs. Service vs. Registry, etc.).  The role attribute provides the ability 
to be more specific.  

I'll bring this up Bob.

> In 3.1.3, under vr:Content metadata elements, I find source and
> referenceURL.  Are these really different beasts, other than that one
> is a URL and the other <somethingElse>?  Or maybe I don't see how one
> extracts a resource from a bibliographic reference.  

It is not intended that one extract a resource (in the VO sense) from a
bib ref.  This source element is most readily applied to a data collection
(like a catalog) that comes directly from a published result.  This
element provides the linkage to that literature.

The referenceURL is specifically about the resource itself--a help page, 
if you will.  Typically, this will not point to a paper in the literature 
but rather the home page for the resource.  

Ultimately, this is a comment for the RM document, which, conveniently, is
under review.  

> It struck me that the allowed values for the contentLevel are pretty
> USA-centric - at least Middle School and Community College are.

Also, a good comment for the RM review.  

thanks again!  Particularly for bringing up the substitution group issue.  
I think we (as a community) have enough experience now to discuss 
definition style issues.  

cheers,
Ray




More information about the registry mailing list