Quantity - where does it fit?
Martin Hill
mchill at dial.pipex.com
Fri May 14 03:54:45 PDT 2004
Ed Shaya wrote:
>
>> I understand the concept and the starting point. I just don't see a
>> case for defining a new 'type' that all things must derive from. I can
>> see a case for a 'Measure' but even that is a bit high. For example,
>> are there any programming languages that define such things? No -
>> they give you the components to assemble your own structures, because
>> building root types like this hinder later.
>>
> I don't think of quantity as a root type.
I get the impression though that the document *does* expect of quantity
to be a root type.
> Ontologically there are
> objects (Things) and quantities (properties). Observation is a Thing
> not a property, an SED is a property.
Hmmmm I have to disagree. Properties are often Things. An SED is
definitely a Thing, even if it's also a Property of something else.
> We are not building a programming language, we are building a huge
> application.
With Quantity we are trying to build a modelling language that we can
then express all our data models in. That was really my point; we
shouldn't be doing this.
>> It's the 'experimental science' and 'most' that are enough to make me
>> want to avoid an 'Everything' object. What about same-unit ratios (eg
>> ellipse characteristics)? Heirarchical Triangular Mesh? Enumerations?
>> pi?
>>
>>
> ellipse characteristics are quantities. Enumerations is a Thing that
> lists objects or quantities. Well, pi is a matter of opinion right now,
> but as I see it, as a matter of practicality it should be under quantity
> because "number of" is a property and pi is a number.
What I meant was that these things don't have units and some do not have
errors - so Quantity seems inappropriate.
> I don't know what an HTM will ultimately look like right now, but I will
> speculate that we will think of it as the Sky and thus an object.
It's an integer number, really a kind of string, that locates a
triangular area on the sky (rather than a point). The longer the
'number'/string, the smaller the area.
>>> But, if we have a list then we also need to provide information on
>>> what is changing with index value. Are we jumping from one object to
>>> another or from one wavelength to another? Therefore, the index
>>> becomes an axis with a quantity associated with it, so one can give
>>> accuracy and units on those values as well. An example would be an
>>> SED which is composed of fluxes with units and errors and with each
>>> flux is an associated wavelength which has units and an error or bin
>>> size (actually both, since there is an error in the central location
>>> of the bin (and additionally there is an error in the bin size). So
>>> we start off with a StandardQuantity which allows for such things in
>>> a standardized way.
>>
>> So now we have to make sure that Quantity can handle equations too?!
>> Consider an SED constructed from a number of combined passbands... The
>> work to model this belongs with modelling SEDs...
>>
> I don't follow. A SED looks like a spectrum with gaps in it.
But some filters/passbands are based on formulae rather than a set of
points. So we need to make sure an SED can handle some Passbands that
are defined by an equation - the whole SED might be a mix of point
measures and formuale. Trying to squeeze all this into a generalised
Quantity is going to hurt.
>
>>> You can create any Quantity subtype by making restrictions to the
>>> StandardQuantity and thereby carve exactly the component that you
>>> need.
>>
>>
>> Hmmm that's not really the 'restrict' meaning I normally associate
>> with subtyping! It's not the way most software languages define it;
>> few have facilities to 'hide' methods on supertypes.
>>
> That may be but both Ontologies and XML Schema do, and these are the
> proper tools to be modeling these abstract concepts. The code will just
> have to be a bit more complex to accomplish what we envision. Just get
> used to it.
I can't really get used to making things more complicated, bug prone and
expensive to write and maintain if there is no really significant
advantage! I don't know about Ontologies, but I fail to see how XML
schemas do this; the whole point of polymorphism is that you get access
to the supertype's properties. Quantity breaks this - because you can
no longer be sure if the subtype has the properties of the supertype or
not.
But maybe we're thinking about this in different ways if you're not
thinking of Quantity as a root type?
> Imagine an STC where the error on the time coordinate is sibling of the
> time element and the error on the x coordinate is a child and the error
> on the y coordinate is two layers down and the error on the z coordinate
> is in a header section at the top. Then imagine there is a separate
> format to the get method for each of these error types. There is
> nothing to exclude such behaviors in an object model made up entirely
> for the purpose of STC without consideration for other parts of the VO.
> Quantity is just a compact to not do that.
That is a silly example! There is also nothing to stop us building our
models in a standard way. In the above example, the spatial coordinates
are likely to be some kind of object, along with the associated error.
Time might the same. Where properties/things are common to different
structures, we model them, and therefore access them in the same way.
Where they are different, it does not matter if they have different
method names (from a modelling, coding, messaging or using point of
view) though obviously it is good practice if we consistently use, say,
'Unit' for the property defining the unit, and 'UCD' for the property
defining the UCD.
It's not difficult agreeing sensible data models - it *is* difficult to
build a brand new framework that will express any data model, especially
when we have existing ultimately flexible frameworks in the form of,
say, UML and XML.
Cheers,
Martin
--
Martin Hill
www.mchill.net
07901 55 24 66
More information about the dm
mailing list