Shape as primitive with representations.

Laurent Michel laurent.michel at astro.unistra.fr
Wed Mar 26 19:16:43 CET 2025


Patrick,

I was not saying that shapes should be modelled as primitive types, I think it shouldn’t be.

I used this as an example of my understanding of primitive type:
A shape model  made of a string + a seralization mode could be described as a primitive type.

Anyway, I do not see which gain we can expect by creating new primitive types.

Laurent

> On 25 Mar 2025, at 23:07, Patrick Dowler <pdowler.cadc at gmail.com> wrote:
> 
> Laurent, all,
> 
> In the context of CAOM, I was able to extract thes low-level building
> blocks to see how re-use would work.
> 
> Shape et al are not primitive types, but rather dataType. These do map
> to DALI xtypes: a serialization aimed at a single value in a cell of a
> table (VOTable). In CAOM itself, (eg the xml serialization) the
> structure is defined and used, so that is a different serialization
> (no, I have not extracted and re-used the xsd, but I see no reason
> that would be hard), but in a  CAOM database a shape would be stored
> in a column and returned (TAP query) using DALI xtype serialization.
> 
> This is just in a branch of my fork of the CAOM model right now, here:
> https://github.com/pdowler/CAOM/blob/datatypes-vodml/src/main/resources/DataTypes-current-vodml.xml
> 
> aside: There are several things in there in addition to "shape" that
> we can/should discuss elsewhere.
> 
> --
> Patrick Dowler
> Canadian Astronomy Data Centre
> Victoria, BC, Canada
> 
> On Fri, 21 Mar 2025 at 10:21, CresitelloDittmar, Mark
> <mdittmar at cfa.harvard.edu> wrote:
>> 
>> All,
>> 
>> For the benefit of those who might be reading this thread, but weren't at the running meeting.
>> In a nutshell:
>>   I see a problem with the current DM modeling practices as we move into more areas: CAOM integration, Mango, etc.
>>   These projects require models which overlap in scope with other models, but at a different level of normalization due to the constraints of their usage.
>>   An example of this is in the "Shape" concept, where CAOM requires a very simple shape, while other uses like REGION would need more flexibility.
>>       see: https://wiki.ivoa.net/internal/IVOA/CaomIntegration/Shape_Model_Representations.pdf
>> 
>>   Current practice would have us define new models for those concepts at the level needed for that project.
>>      ** I believe that doing this will lead to confusion for users, and inconsistency between the models.  **
>>      ** This is the same situation which resulted in the inconsistencies in overlapping content seen in the ObsCore, STC, Characterisation, Spectrum, and VOEvent models. **
>>      ** Which will ultimately hinder interoperability. **
>> 
>>   I'd like to have a discussion brainstorming ideas for how we might avoid this fate.
>> 
>> This issue is in the bridge space between modeling and serializations, which we (the IVOA) haven't spent much time thinking about.
>> 
>> NOTE: The following is moving away from Shape, but as I mentioned the issue applies to ObjectTypes as well.
>> I do think there is value in being able to go from:
>> 
>>    <INSTANCE dmid="CoordSystem_ICRS_id" dmrole="" dmtype="coords:SpaceSys">
>>      <INSTANCE dmrole="coords:PhysicalCoordSys.frame" dmtype="coords:SpaceFrame">
>>        <INSTANCE dmrole="coords:SpaceFrame.refPosition" dmtype="coords:StdRefLocation>
>>           <ATTRIBUTE dmrole="coords:StdRefLocation.position" dmtype="ivoa:string" value="TOPOCENTER"/>
>>        </INSTANCE>
>>        <ATTRIBUTE dmrole="coords:SpaceFrame.spaceRefFrame" dmtype="ivoa:string" value="ICRS"/>
>>      </INSTANCE>
>>    </INSTANCE>
>>    <INSTANCE dmtype="meas:Position">
>>      <INSTANCE dmrole="meas:Position.coord" dmtype="coords:LonLatPoint">
>>        <ATTRIBUTE dmrole="coords:LonLatPoint.lon" dmtype="ivoa:RealQuantity" ref="SC_RA" unit="deg"/>
>>        <ATTRIBUTE dmrole="coords:LonLatPoint.lat" dmtype="ivoa:RealQuantity" ref="SC_DEC" unit="deg"/>
>>        <REFERENCE dmrole="coords:Coordinate.coordSys" dmref="Coordsystem_ICRS_id"/>
>>      </INSTANCE>
>>      <INSTANCE dmrole="meas:Measure.error" dmtype="meas:Error">
>>        <INSTANCE dmrole="meas:Error.statError" dmtype="meas:ASymmetrical2D">
>>          <COLLECTION dmrole="meas:ASymmetrical2D.plus" >
>>            <ATTRIBUTE dmtype="ivoa:RealQuantity" ref="SC_RA_ERR" unit="arcsec"/>
>>            <ATTRIBUTE dmtype="ivoa:RealQuantity" ref="SC_DEC_ERR" unit="arcsec"/>
>>          </COLLECTION>
>>          <COLLECTION dmrole="meas:ASymmetrical2D.minus">
>>            <ATTRIBUTE dmtype="ivoa:RealQuantity" ref="SC_RA_ERR" unit="arcsec"/>
>>            <ATTRIBUTE dmtype="ivoa:RealQuantity" ref="SC_DEC_ERR" unit="arcsec"/>
>>          </COLLECTION>
>>        </INSTANCE>
>>      </INSTANCE>
>>    </INSTANCE>
>> 
>> To
>>    <INSTANCE dmtype="meas:Position" rep="meas:rep.SkyPosition">
>>      <ATTRIBUTE dmrole="meas:rep.SkyPosition.refFrame" dmtype="ivoa:string" value="ICRS"/>
>>      <ATTRIBUTE dmrole="meas:rep.SkyPosition.ra" dmtype="ivoa:RealQuantity" ref="SC_RA" unit="deg"/>
>>      <ATTRIBUTE dmrole="meas:rep.SkyPosition.ra_err" dmtype="ivoa:RealQuantity" ref="SC_RA_ERR" unit="arcsec"/>
>>      <ATTRIBUTE dmrole="meas:rep.SkyPosition.dec" dmtype="ivoa:RealQuantity" ref="SC_DEC" unit="deg"/>
>>      <ATTRIBUTE dmrole="meas:rep.SkyPosition.dec_err" dmtype="ivoa:RealQuantity" ref="SC_DEC_ERR" unit="arcsec"/>
>>    </INSTANCE>
>> 
>> IFF your position happens to be
>>  * Sky Position on the Unit Sphere with refPosition=TOPOCENTER, and errors expressed as  <value> +/- <error>
>> 
>> Without having 'simplified' models of a base (full) model of the concept spread out over other models which have more constrained requirements.
>> 
>> Perhaps this could be accomplished by a different class of model
>>  * which could live within the base model standard
>>  * and provide a simpler representation of the object IFF certain constraints apply.
>>       * notice this example consolidated the coords model content into local attributes..
>>  * This would allow us to ignore serialization (yay!)
>> 
>> OR, it could be accomplished at the serialization level, by defining patterns or representations there.
>>  * like "COOSYS" and "TIMESYS"  which are compact standard serializations of coords model elements in VOTable ).
>>  * or something like the PRIMITIVE thing from my last mails in MIVOT serializations
>> 
>> OR, ????
>> 
>> Mark
>> 



More information about the dm mailing list