VOSpace home page

Current VOSpace registration discussion page

(old) Discussion of the VOSpace 1.1 property registration schema

The original discussion page for the VOSpace 1.1 property registration has become somewhat out of date.

In order to clear some space and enable us to move things one I have moved some of the old discussion topics to this page.

-- DaveMorris - 07 Dec 2007


Why multiple properties in a single document

Why are we trying to squeeze multiple standards into a single resource document ?

For simplicity sake, I propose we only have one standard per resource document. If we only have one standard per document, then we don't need to bother with the complexity of an id or key attribute and we don't need to use #fragment identifiers in the URIs.

I know we have discussed this before, but I'd like to see the reasons for this explicitly stated as part of this discussion so that we can see if this makes sense.
As long as the reasons for combining multiple standards into a single resource document outweigh the problems and complexity it causes, then ok.


This is really a VOStandard issue - it is not VOSpace specific - In summary, the arguments for are

  • Not having to keep repeating Dublin core metadata just to define an eumeration constant.
  • having the enumeration constants collected together in one resource document allows easy identification of officially endorsed sets of constants within a single resource identifier cf. what is done for STC with standard coordinate systems.
  • having the fragment part specifically identify the enumeration constant in question allows different semantics compared with a bare ivo identifier ( which in practical reality is actually a locator for a registry record) - the fragment identifies the actual xml that defines the enumeration constant/property.

VOspace allows the property URI to be a http URL for instance as well as an IVOA ID - in this case there would be no need for a fragment identifier for the property if the content at the http URL were simply the properly defintion without all the dublin core - the fragment convention is only for IVOA ids.

However, what explicitly are the problems that adopting this convention causes?

-- PaulHarrison - 04 Jul 2007


Thanks for adding this. I knew there were good reasons for it, just that I hadn't seen them explicity stated anywhere. This explanation will need to be included in the final document describing the schema.

I've changed vote to '0', to indicate that we will be adopting the VOStandard format, but ther are still a few issues we need to sort out.

I'm wary of using the fragent identifier, because once it is used to refer to one part of the XML, it can't be used again. For example, the view and protocol elements both allow multiple child param elements.

If this URI

  • ivo://net.ivoa.vospace/protocols#imaginary
refers to the definition for my new imaginary protocol, and that protocol has two params, 'user' and 'pass', we can't use the standard fragment identifier to refer to them. This is not unsolveable, but we would need to define a new (VOSpace specific) convention for how we refer to specific params within a protocol or view element.

  • ivo://net.ivoa.vospace/protocols#imaginary/user
or
  • ivo://net.ivoa.vospace/protocols#imaginary#user
are possible forms.

This is going beyond the standard meaning of the # fragment identifier, so we would have to choose a specific syntax define it in our specification.

-- DaveMorris - 13 Jul 2007

Votes

name vote comment
DaveMorris 0 proposer

Don't use id attribute

As a general rule, we should avoid using an id attribute. This has caused a lot of problems with other schema.
If register a property with id='owner', then we have to ensure that no other registry document, now or in the future, contains id='owner' anywhere the document.

On the other hand, if we use a different attribute, does this mean we have to redefine the meaning of the # fragment indentifier in a URL or URI (see comment on complexity of registering multiple standards in the same document).


note that this attribute is of type xsd:NCName so that there is not the same problems as were highlighted for STC where xsd:ID is used - (note that in the latest version of the schema this has been renamed to 'name' ) - I think that it does not have any bearing on being able to use the fragment identifier (see http://www.faqs.org/rfcs/rfc2396.html sec 4.1) as it is up to the media type to define what the fragments mean. It would be better though in the long run if it were simply xsd:string with a regex restriction that conforms to the uric BNF of rfc2396.

note again this is really a VOStandard issue.

-- PaulHarrison - 04 Jul 2007

Property should have a type

A basic type attribute to indicate what data type the property contains, string, integer, date etc.
For practical reasons, should we adopt the existing type enumeration used in votable ?


There is no mention of this in the VOSpace Standard itself, but I guess that it would be a sensible addition - I would be less happy about adopting the existing type enumeration in votable as is, partially because it includes distinctions that are meaningless given that the formal type of the parameter value is always string in the VOSpace interface (eg. float/double) and also because it does not include useful stuff like date....

-- PaulHarrison - 04 Jul 2007


Perhaps the VOTable enumeration isn't the best one to choose then. Is there another established set we could use ? Perhaps the set of basic types from XML schema - that would give us integers, dates and URIs etc.

  <key name="size" xsi:type="vsp:VOSpaceProperty">
    <description>The size of the data item</description>
    <unit>bytes</unit>
    <type>xsi:integer</type>
  </key>

It would be good if we can find an existing set that meets our needs. I'd prefer to avoid defining yet another enumeration of basic data types.

-- DaveMorris - 13 Jul 2007

Votes

name vote comment
DaveMorris +1 proposer
PaulHarrison +1

Property should have a regular expression

A property definition may include a 'regex' element containing a regular expression which constrains the allowed syntax of the property.


I have the feeling that this might be a very seldom used feature in practice - I cannot think of a use case for it at the moment - but I guess that an optional element would be fine.

-- PaulHarrison - 04 Jul 2007


This goes back to a request from Matthew to allow typing of the properties (link and link).

Basically, the request was to be able to embed something like this in a property :

  <property uri="ivo://net.ivoa/properties/color" type="myschema.xsd">
    <color>
      <red>123</red>
      <blue>234</blue>
      <green>89</green>
    </color>
  </property> 

In the email discussion that followed (link).

I suggested that rather than put the type information in the message, the type information should be part of the property definition.

In another email (no link), I think you pointed out that the information in the example XML fragment could be encoded as a string of threee digits 123:234:89.

In which case, providing a regular expression in addition to the text description in the property definition

  <key name="balance" xsi:type="vsp:VOSpaceProperty">
    <description>
The colour balance, represented as three decimal values separated by ':' for red, blue and green.
Example "123:234:89"
    </description>
    <type>xsi:string</type>
    <regex>{0-9}+:{0-9}+:{0-9}+</regex>
  </key>
would provide a machine readable syntax that could enable services and UI developers to validate user input.

-- DaveMorris - 13 Jul 2007

Votes

name vote comment
DaveMorris +1 proposer
PaulHarrison 0


Topic revision: r1 - 2007-12-07 - DaveMorris
 
This site is powered by the TWiki collaboration platformCopyright © 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback