<vo:Resource>
<title>JPEG file format</title>
<identifier>ivo://net.ivoa/formats/jpeg</identifier>
....
<content>
<subject>Registry entry for JPEG file format</subject>
<description>
Some text describing the JPEG format ....
</description>
</content>
</vo:Resource>
This associates the URI [ivo://net.ivoa/formats/jpeg] with the JPEG format.
This avoids the restrictions inherent in defining enumerations in the service WSDL.
If we add a new format to the existing enumeration, it means the service WSDL has changed,
so it is no longer compatible with existing clients.
If someone invents a new file format, all they need to do is create a corresponding registry resource.
For example :
registry entry for new file format
<vo:Resource>
<title>New file format</title>
<identifier>ivo://net.ivoa/formats/kpeg</identifier>
....
<content>
<subject>Registry entry for KPEG file format</subject>
<description>
Some text describing the new KPEG format ....
</description>
</content>
</vo:Resource>
VoStore? services can then use the URI [ivo://net.ivoa/formats/kpeg] to refer the new format.
Same applies for
<formats>
<format>ivo://net.ivoa/formats/jpeg</format>
<format>ivo://net.ivoa/formats/fits</format>
....
</formats>
<xs:complexType name="Capability">
<xs:annotation>
<xs:documentation>
To provide a metadata specific to a particular Service type,
this type is usually extended and added as a child of the
specific Service subclass.
</xs:documentation>
</xs:annotation>
....
<xs:attribute name="standardID" type="vr:IdentifierURI">
<xs:annotation>
<xs:documentation>
An IVOA identifier for a standard service.
</xs:documentation>
<xs:documentation>
This provides a unique way to refer to a service
specification standard, such as a Simple Image Access service.
It assumes that such standard is registered and accessible.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="standardURL" type="xs:anyURI">
<xs:annotation>
<xs:documentation>
A URL that points to a human-readable document that
describes the standard upon which a service is based.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
For example :
registry entry for VoStore? version 1.0
<vo:Resource>
<title>VoStore 1.0</title>
<identifier>ivo://net.ivoa/services/vostore-1.0</identifier>
....
<content>
<subject>Registry entry for VoStore version 1.0</subject>
<description>
Some text describing the VoStore version 1.0 ....
</description>
</content>
</vo:Resource>
This associates the URI [ivo://net.ivoa/services/vostore-1.0] with a specific version of the VoStore? service API.
The URI can then be used to register an instance of this service, by referring to the specific URI for the API the service implements.
For example :
registry entry for a VoStore? 1.0 service
<vo:Resource xsi:type="vo:Service">
....
<Capability standardID="ivo://net.ivoa/services/vostore-1.0"/>
</vo:Resource>
Service APIs that include a core API and optional extensions could create resource documents for each extension.
For example :
registry entries for core SIAP service and extensions "A" and "B"
<vo:Resource>
<title>SIAP 1.0 core</title>
<identifier>ivo://net.ivoa/services/siap-1.0-core</identifier>
....
<content>
<subject>Registry entry for SIAP 1.0 core</subject>
<description>
Some text describing SIAP 1.0 core service API ...
</description>
</content>
</vo:Resource>
<vo:Resource>
<title>SIAP 1.0 ext A</title>
<identifier>ivo://net.ivoa/services/siap-1.0-a</identifier>
....
<content>
<subject>Registry entry for SIAP version 1.0, extension A</subject>
<description>
Some text describing SIAP extension A ...
</description>
</content>
</vo:Resource>
<vo:Resource>
<title>SIAP 1.0 ext B</title>
<identifier>ivo://net.ivoa/services/siap-1.0-b</identifier>
<curation>
....
</curation>
<content>
<subject>Registry entry for SIAP version 1.0, extension B</subject>
<description>
Some text describing SIAP extension B ...
</description>
</content>
</vo:Resource>
This would enable us to declare the service API version and supported extensions in the registry entry for a service.
For example :
registry entry for a service that supports SIAP 1.0 and extensions "A" and "B"
<vo:Resource xsi:type="vo:Service">
....
<!--+
| Service implements SIAP 1.0 and extensions "A" and "B".
+-->
<Capability standardID="ivo://net.ivoa/services/siap-1.0-core"/>
<Capability standardID="ivo://net.ivoa/services/siap-1.0-a"/>
<Capability standardID="ivo://net.ivoa/services/siap-1.0-b"/>
</vo:Resource>
This may need a change to the registry schema to enable multiple Capability elements for a Service
<vo:Resource xsi:type="vo:Service">
....
<!--+
| Service implements VoStore-1.0 and VoStore-1.2.
+-->
<Capability standardID="ivo://net.ivoa/services/vostore-1.0"/>
<Capability standardID="ivo://net.ivoa/services/vostore-1.2"/>
....
<!--+
| This interface implements VoStore-1.0.
+-->
<Interface>
<Capability standardID="ivo://net.ivoa/services/vostore-1.0"/>
<AccessURL>http://....</AccessURL>
</Interface>
....
<!--+
| This interface implements VoStore-1.2.
+-->
<Interface>
<Capability standardID="ivo://net.ivoa/services/vostore-1.2"/>
<AccessURL>http://....</AccessURL>
</Interface>
</vo:Resource>
This will need a change to the schema to enable multiple Capability elements for a Service Interface
<vo:Resource xsi:type="vo:Service">
....
<!--+
| Service implements VoStore-1.0 and VoStore-1.2.
+-->
<Capability standardID="ivo://net.ivoa/services/vostore-1.0"/>
<Capability standardID="ivo://net.ivoa/services/vostore-1.2"/>
....
<!--+
| Service supports [WSS + cert] and [SSL + cert] security protocols.
+-->
<Capability standardID="ivo://net.ivoa/security/wss.cert-1.0"/>
<Capability standardID="ivo://net.ivoa/security/ssl.cert-1.1"/>
....
<!--+
| Service supports [http], [https], and [gridsite] transfer protocols.
+-->
<Capability standardID="ivo://net.ivoa/transfer/http-1.1"/>
<Capability standardID="ivo://net.ivoa/transfer/https-1.1"/>
<Capability standardID="ivo://net.ivoa/transfer/gridsite-1.0"/>
....
<!--+
| This interface implements VoStore-1.0.
| It can accept [WSS + cert] authentication.
| It can handle [fits] and [votable] formats.
| It can handle [http] and [https] transfer protocols.
+-->
<Interface>
<Capability standardID="ivo://net.ivoa/services/vostore-1.0"/>
<Capability standardID="ivo://net.ivoa/security/wss.cert-1.0"/>
<Capability standardID="ivo://net.ivoa/formats/votable-1.0"/>
<Capability standardID="ivo://net.ivoa/formats/fits-1.0"/>
<Capability standardID="ivo://net.ivoa/transfer/http-1.1"/>
<Capability standardID="ivo://net.ivoa/transfer/https-1.1"/>
<AccessURL>http://....</AccessURL>
</Interface>
....
<!--+
| This interface implements VoStore-1.2.
| It can accept [WSS + cert] and [SSL + cert] authentication.
| It can handle [fits], [votable] and [binary] formats.
| It can handle [http], [https] and [gridsite] transfer protocols.
+-->
<Interface>
<Capability standardID="ivo://net.ivoa/services/vostore-1.0"/>
<Capability standardID="ivo://net.ivoa/security/wss.cert-1.0"/>
<Capability standardID="ivo://net.ivoa/formats/votable-1.0"/>
<Capability standardID="ivo://net.ivoa/formats/fits-1.0"/>
<Capability standardID="ivo://net.ivoa/transfer/http-1.1"/>
<Capability standardID="ivo://net.ivoa/transfer/https-1.1"/>
<Capability standardID="ivo://net.ivoa/transfer/gridsite-1.0"/>
<AccessURL>http://....</AccessURL>
</Interface>
</vo:Resource>
<!--+
| An interface that returns images in FITS and JPEG formats.
+-->
<Interface>
<Capability ucd="meta.format.fits"/>
<Capability ucd="meta.format.jpeg"/>
</Interface>
Possible to use both UCD and URI for data formats.
Example :
<!--+
| An interface that returns images in FITS and JPEG formats.
+-->
<Interface>
<Capability uri="ivo://net.ivoa/formats/fits-1.0" ucd="meta.format.fits"/>
<Capability uri="ivo://net.ivoa/formats/jpeg-1.0" ucd="meta.format.jpeg"/>
</Interface>
Using lists of capabilities enables us to describe services that provide
more than one service e.g. SIAP and VoStore?.
Example :
registration for a service that implements both SIAP and VoStore?
<!--+
| Registration document for a service that implements both SIAP and VoStore.
+-->
<vo:Resource xsi:type="vo:Service">
....
<!--+
| Registered as a VoStore service, enabling UI tools to look for 'any vostore'.
| vostore:Capability extends vo:Capability to add VoStore specific data.
+-->
<Capability xsi:type="vostore:Capability" uri="ivo://net.ivoa/services/vostore">
<!--+
| Additional elements specific to VoStore, e.g. store-size.
+-->
</Capability>
<!--+
| Registered as a SIAP service, enabling UI tools to look for 'any SIAP'.
| siap:Capability extends vo:Capability to add SIAP specific data.
+-->
<Capability xsi:type="siap:Capability" standardID="ivo://net.ivoa/services/siap">
<!--+
| Additional elements specific to SIAP.
+-->
</Capability>
<!--+
| This interface implements VoStore-1.0.
| It can accept [WSS + cert] authentication.
| It can handle [http] and [https] transfer protocols.
| It can handle [fits], [jpeg] and [votable] formats.
+-->
<Interface>
<Capability uri="ivo://net.ivoa/services/vostore-1.0"/>
<Capability uri="ivo://net.ivoa/security/wss.cert-1.0"/>
<Capability uri="ivo://net.ivoa/formats/votable-1.0"/>
<Capability uri="ivo://net.ivoa/formats/fits-1.0" ucd="meta.format.fits"/>
<Capability uri="ivo://net.ivoa/formats/jpeg-1.0" ucd="meta.format.jpeg"/>
<Capability uri="ivo://net.ivoa/transfer/http-1.1"/>
<Capability uri="ivo://net.ivoa/transfer/https-1.1"/>
<AccessURL>http://....</AccessURL>
</Interface>
....
<!--+
| This interface implements the core SIAP-1.0, plus extension 'A'.
| It can accept [WSS + cert] and [SSL + cert] authentication.
| It returns images in FITS and JPEG formats.
+-->
<Interface>
<Capability uri="ivo://net.ivoa/services/siap-1.0-core"/>
<Capability uri="ivo://net.ivoa/services/siap-1.0-ext.a"/>
<Capability uri="ivo://net.ivoa/security/wss.cert-1.0"/>
<Capability uri="ivo://net.ivoa/formats/fits-1.0" ucd="meta.format.fits"/>
<Capability uri="ivo://net.ivoa/formats/jpeg-1.0" ucd="meta.format.jpeg"/>
<AccessURL>http://....</AccessURL>
</Interface>
</vo:Resource>
![]() |
Click here for the AstroGrid Service Web |
This is the AstroGrid Development Wiki |
|