Jumps: IvoaResReg :: reg-dm mail archive :: ResourceMetadata
Meetings: InterOpMay2004ResReg :: InterOpMay2005ResReg :: InterOpOct2005ResReg :: InterOpMay2006ResReg

Registry Data Model: Services

This page summarizes the state of the model for describing services as discussed by the Registry-DM tiger team.

Contents


Goals

The model for describing services was revisited to address several needs. In particular, a revised model needs to allow:

  1. multiple version support -- it is necessary for the standard services to describe not only what version of a standard they are compliant with but to allow support for multiple versions simultaneously. It would be conventient if a support for multiple versions could be described within a single resource record.
  2. multiple endpoints covering different parts of a logical interface -- Supported use cases must be allowed:
    • the Registry service interface has 2 components: searching and harvesting; each can have their own endpoint and feature a different class of interface (soap web service vs. the standard OAI interface).
    • a service such as a SkyNode can not only support standard SkyNode interface, it might also support other interfaces to functionality that can be used in conjunction with the SkyNode interface but which are described by a different standards. Possible examples include VOStore or the standard support services.
  3. including in the description of a service additional, non-standard interfaces -- providing via a different endpoint URL additional interfaces that are not part of the standard but which access essentially the same underlying data or information.
  4. clarifying the association between service capability metadata and interface that supports the capability -- previously, when a service description included multiple interfaces, it was not clear which of those interfaces was associaed with the specific service capability metadata. The association between capability and interface needs to be made clearer.

Summary of Proposed Changes #1

  1. <interface> is now a child of <capability>.

    This solidifies the connection between a set of capability metadata and the interfaces that provide that capability.

    • A <capability> element may include multiple <interface> children. This is interpreted to mean that each interface provides access to the same (logical) capability and has essentially the same behavior. As an example, a <capability> may include both a WebService interface and an interactive WebBrowser interface; the latter simply provides a GUI wrapping of the soap interface.
    • The <interface> (or interfaces) that are mandated by standard service described by the <capability> will have an attribute called "std" which will be set to "true".
    • The different sub-types of interfaces (WebService, WebBrowser, ParamHTTP, etc.) are still differentiated via an xsi:type attribute to the <interface> element.
  2. A Service resource class no longer contains <interface> elements as direct children; instead it contains one or more <capabiltiy> elements.

  3. We no longer describe standard services (like SIA) as sub-classes of the Service resource class; instead, we describe a generic Service resource and show its support for a standard protocol via the presence of the associated standard capability description. Thus, a generic service can support multiple standard protocols (via multiple <capabiltiy> elements) simultaneously.

    Another way to look at this is that we no longer describe an SIA service; rather, we describe a service with an SIA capability. That same service can also have a ConeSearch capability, a VOStore capability, etc.

    • Standard protocols that need to define specialized capability metadata do so in a subclass of the Capability type. The xsi:type mechanism is used to include the specialized capability element into the service description.
    • The Service subclasses, SkyService and TabularSkyService, are retained to include descriptions of coverage and the tables engaged by the service. An SIA Capability should be a part of a TabularSkyService.
    • Services (or more precisely, service capabilities) that have no specialized capability metadata defined--in particular, non-standard services--use the base <capabiltiy> element with no xsi:type attribute to hold the description of the interface. The optional <description> child of <capabiltiy> may be used to provide a human-readable description of what the capability provides.
  4. The schemas will not attempt to enforce that a particular type of interface mandated by a standard be included in the standard capability.

    For example, the SimpleImageAccess capability type does not require that the required ParamHTTP interface be included inside the capability description.

    This enables a uniform way of identifying interface types: via the value of the <interface> element's xsi:type. Enforcing the inclusion of the required interface types will be done outside the context of a Schema-validating parser using a specialized VO registry validator.

    Similarly, the schemas will not attempt to enforce, for example, that an SIA capability appear only within the context of a TabularSkyService; this will also be checked by a specialized VO registry validator.

  5. The base Capability type will include an optional attribute called "standardID" which holds an unambiguous identifier (URI) for the standard that the service adheres to. For standard services that have defined a specialized subclass of Capability, this attribute will be fixed to the identifier for that standard.

    A leading idea is that this URI would be an IVOA identifier; this would require that a resource describing a standard would be registered. This provides three advantages:

    • By not defining a specialized Capability sub-type, one lowers the cost for supporting the capability both within a registry and in registry clients; the standardID attribute then becomes the way to identify the standard capability.
    • We leverage the existing registry framework for ensuring standard IDs are unique and unambiguous.
    • The resource record that describes the standard provides a way for users to find the definition of the standard (via the referenceURL element). This is important for non-IVOA standards in which the location of the relevent standard documents is not widely known.
    This idea, however, is controversial (see issues below).
  6. The <interface> element will include an optional "version" attribute which identifies which version of the standard that interface supports.

    • the meaning of the version attribute is undefined when the parent <capabiltiy> element's standardID is not given.
    • Assuming standardID holds an IVOA identifier, the description of the standard pointed to by that identifier would include a list of recognized versions. The value of the version attribute must match one of the recognized versions.
    • A service that supports multiple versions of, say, SIA, would include multiple <interface>s of the proper type (and with std="true") inside the SimpleImageAccess <capability> element.

Summary of Proposed Changes #2

  1. <Capability> is now an abstract element and an optional child of <Service>.
    <Service> now has two multiple optional child elements : <Interface> and <Capability>. Both elements need to be extended and declared in the resource document using "xsi:type".

    • <Interface> is used to fully describe an endpoint, independently of any standard protocol specification, with it's parameters and output description, just as it is in the current version (0.10) of the schemas.
    • <Capability> is used to fully describe the support from a service for a specific protocol specification, just as it is in the current version (0.10) of the schemas.
  2. The <Capability> extensions will be expected to include an element giving the service endpoint(s) and the version(s) of the specification supported. A "ServiceEndpointURL" element type is proposed for this. It is advised to use it in <Capability> extensions, but a different element type may be used.

    All service specifications will be expected to provide its specific <Capability> extension to allow for that service entries to be specified in a Registry.

  3. Standard services are now identified by the presence of its corresponding <Capability> extension. Just as point 3 of Proposed Solution #1, except that all service must declare a specific extension of <Capability> using "xsi:type".
  4. This solution has the advantage of offering the possibility for full Interface description and multiple standard service Capability presentation, with a minimum of modifications to the current schemas. Here are for example the modified versions of VOResource, SIA and Registry schemas : VOResource.xsd, SIA.xsd, VORegistry.xsd

    Here is what an instance of SIA or Registry service entry would look like :

    <resource xsi:type="Service">
      .............
      <interface xsi:type="ParamHTTP">
        <accessURL use="base"> http://...../..../siap.jsp </accessURL>
        ..............
      </interface>
      <capability xsi:type="SIACapability">
        <siaEndpointURL version="1.0"> http://...../..../siap0.jsp </siaEndpointURL>
        <siaEndpointURL version="1.1"> http://...../..../siap1.jsp </siaEndpointURL>
        <maxQueryRegionSize> ..... </maxQueryRegionSize>
        <maxImageExtent> ..... </maxImageExtent>
        ..............
      </capability>
    </resource>
    

    <resource xsi:type="Service">
      .............
      <interface xsi:type="WebService">
        <accessURL use="full"> http://...../..../Search </accessURL>
      </interface>
      <interface xsi:type="WebService">
        <accessURL use="full"> http://...../..../Harvest </accessURL>
      </interface>
      <interface xsi:type="ParamHTTP">
        <accessURL use="base"> http://...../..../oai.jsp </accessURL>
        ..............
      </interface>
      <capability xsi:type="RegistryCapability">
        <searchEndpointURL version="0.9"> http://...../..../Search </searchEndpointURL>
        <searchEndpointURL version="0.10"> http://...../..../Search </searchEndpointURL>
        <harvestEndpointURL version="0.10"> http://...../..../Harvest </harvestEndpointURL>
        <managedAuthority> ..... </managedAuthority>
        <managedAuthority> ..... </managedAuthority>
      </capability>
    </resource>
    

    -- AurelienStebe - 24 Mar 2006

Model Diagram

Schemas and Example Instances

[Examples:

  • registry record
  • service with ConeSearch and SIA capabilities]

Open Issues

  • interfaces inside of capability
  • registering standards

-- RayPlante - 07 Mar 2006


Topic attachments
I Attachment History Action Size Date Who Comment
Unknown file formatxsd SIA-v0.7-prop2.xsd r1 manage 12.8 K 2006-03-24 - 16:20 AurelienStebe SIA schema for Proposition #2
Unknown file formatxsd VORegistry-v0.3-prop2.xsd r1 manage 2.5 K 2006-03-24 - 16:20 AurelienStebe VORegistry schema for Proposition #2
Unknown file formatxsd VOResource-v0.10-prop2.xsd r1 manage 41.0 K 2006-03-24 - 16:20 AurelienStebe VOResource schema for Proposition #2
Edit | Attach | Watch | Print version | History: r24 | r4 < r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r2 - 2006-03-24 - AurelienStebe
 
This site is powered by the TWiki collaboration platform Powered by Perl This site is powered by the TWiki collaboration platformCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback