IVOA

VOApplication: an XML Encoding Schema for Application Resource Metadata
Version 0.9

IVOA Working Draft 20 April, 2011

This version:
http://www.ivoa.net/Documents/WD/ReR/VOApplication-XXXX.html
Latest version:
http://www.ivoa.net/Documents/latest/VOApplication.html
Previous versions
Authors:
Paul Harrison, Editor
and the IVOA Registry Working Group.

Abstract

This document describes an XML encoding standard for IVOA Application Metadata, referred to as VOApplication. This schema is primarily intended to support interoperable registries used for discovering resources; however, any application that needs to describe resources may use this schema. In this document, we define the types and elements that make up the schema as representations of metadata terms defined in the IVOA standard, Resource Metadata for the Virtual Observatory [RM]. We also describe the general model for the schema and explain how it may be extended to add new metadata terms and describe more specific types of resources.

Status of this document

This is an IVOA Working Draft for review by IVOA members and other interested parties. It is a draft document and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use IVOA Working Drafts as reference materials or to cite them as other than "work in progress."

Parts that the editor considers should be removed from the document are marked in red with a strike through line, and parts to be expanded are in green

Comments on this document are now welcome for consideration in the next version of this document. They should be sent to registry@ivoa.net, a mailing list with a public archive or on the VOApplication twiki discussion page. General discussion of related technology is also welcome on the Registry WG wiki site.

A list of current IVOA Recommendations and other technical documents can be found at http://www.ivoa.net/Documents/.

Acknowledgements

This document has been developed with support from the National Science Foundation's Information Technology Research Program under Cooperative Agreement AST0122449 with The Johns Hopkins University, from the UK Particle Physics and Astronomy Research Council (PPARC), and from the European Commission's Sixth Framework Program via the Optical Infrared Coordination Network (OPTICON).

Conformance-related definitions

The words "MUST", "SHALL", "SHOULD", "MAY", "RECOMMENDED", and "OPTIONAL" (in upper or lower case) used in this document are to be interpreted as described in IETF standard, RFC 2119 [RFC 2119].

The Virtual Observatory (VO) is general term for a collection of federated resources that can be used to conduct astronomical research, education, and outreach. The International Virtual Observatory Alliance (IVOA) is a global collaboration of separately funded projects to develop standards and infrastructure that enable VO applications.

XML document validation is a software process that checks that an XML document is not only well-formed XML but also conforms to the syntax rules defined by the applicable schema. Typically, when the schema is defined by one or more XML Schema [Schema] documents (see next section), validation refers to checking for conformance to the syntax described in those Schema documents. This document describes additional syntax constraints that cannot be enforced solely by the rules of XML Schema; thus, in this document, use of the term validation includes the extra checks that goes beyond common Schema-aware parsers to ensure conformance with this document.

Syntax Notation Using XML Schema

The eXtensible Markup Language, or XML, is document syntax for marking textual information with named tags and is defined by the World Wide Web Consortium (W3C) Recommendation, XML 1.0 [XML]. The set of XML tag names and the syntax rules for their use is referred to as the document schema. One way to formally define a schema for XML documents is using the W3C standard known as XML Schema [Schema].

This document defines the VOApplication schema using XML Schema. The full Schema document is listed in Appendix A. Parts of the schema appear within the main sections of this document; however, documentation nodes have been left out for the sake of brevity.

Reference to specific elements and types defined in the VOApplication schema include the namespaces prefix, va, as in va:Application (a type defined in the VOApplication schema). Use of the specific va prefix in compliant instance documents is not required (the namespace could be assigned to any prefix); its use in this document is simply to indicate that it is an entity defined in the VOApplication schema.

Namespace prefixes used in this document
prefixnamespace
vrhttp://www.ivoa.net/xml/VOResource/v1.0
vshttp://www.ivoa.net/xml/VODataService/v1.0
vahttp://www.ivoa.net/xml/VOApplication/v1.0

Contents

1. Introduction

The IVOA Standard, Resource Metadata for the Virtual Observatory [Hanisch et al. 2004] (hereafter referred to as RM) defines metadata terms for describing resources. A specific XML encoding of these resources is described in the IVOA standard VOResource: an XML Encoding Schema for Resource Metadata [Plante et al. 2006] (hereafter refered to as the VR) The "resource" that is described in these documents is a very general concept, and was deliberately designed so that it can be specialized for particular types of resource.

This document specifically describes an extension of the metadata concepts and an XML encoding called VOApplication. The VOApplication schema provides XML encoding that extends the VR so that can be used to describe applications (see section below for discussion of what constitues an application). The intention of creating this model is to allow a framework for finding applications in an IVOA compliant registry and possibly downloading and automatically running them.

2. The VOApplication Data Model

The concept of an application in the context of this standard can cover almost any computer program or process than can consume and/or emit data. e.g.

  • unix command line executables
  • java applets
  • REST web services
  • SOAP web services

Note that although this is a very wide ranging definition, forms of "application" e.g. web services which are specifically covered by other IVOA standards, should normally be described in terms of those standards, rather than as a general VOApplication.

2.1. Core VOApplication Metadata

At the IVOA interoperability meeting in Madrid 2005 a list of desired metadata for applications was agreed.

Function
A delimited list, including terms such as reduction, analysis, display, modeling, graphics, format conversion, etc. Multiple terms could be selected.
OperationModes
Interactive, command line, scriptable, from browser, etc.
OpenSource
Yes/No.
SourceURL
Entry point to the source code.
License
Name of license and descriptive text.
Cost
Free; or description of pricing, if not freely available.
SourceLanguage
A delimited list of software development languages. Can be more than one.
Dependencies
A text description of dependencies � compilers, libraries, etc. � that this application needs in order to be compiled or deployed. Include IDs of other applications in the registry upon which this application relies.
NetworkRequired
Essential/Useful/Limited/Unnecessary.
BinarySize
Typical size of the executable.
MemorySize
Typical memory requirements.
Platforms
List of supported platforms (hardware plus operating system).
VOStandards
List of supported VO standards and protocols used or implemented in this application (SIAP, SSAP, ADQL, OSQ, etc.)
InputFormats
List of supported input data formats, e.g., FITS, HDF, VOTable.
OutputFormats
List of supported output data formats, e.g., FITS, HDF, VOTable.
Appliction Version
It is often the case that applications are updated - not clear that the version element that appears in curation is sufficient for the needs (how is the latest version of an application signalled, if access to legacy versions are left in the registry.

Note that this model does not attempt to categorize the function of the application - this is beyond the scope of this standard, and will be covered by either the IVOA Semantics WG efforts, or by the characterization of processes that is being undertaken by the IVOA Theory WG. The only characterization of the application in this model is in terms of the types of inputs or IVOA standards that it supports.

3. Details of the VOApplication Schema

3.2. Application Type

This is the basic extension to the VOResource type that this schema defines. It is the container for the basic metadata that are common to all applications.

va:Application Type Schema Definition
<xs:complexType name="Application" >
  <xs:complexContent >
    <xs:extension base="vr:Resource" >
      <xs:sequence >
        <xs:element name="cost" minOccurs="0" type="xs:string" />
        <xs:element name="licence" type="xs:string" maxOccurs="1" minOccurs="0" />
        <xs:element name="openSource" type="xs:boolean" minOccurs="0" />
        <xs:element name="dataFormat" type="DataFormat" maxOccurs="unbounded"
                    minOccurs="0" />
        <xs:element name="voStandard" type="ApplicationCapability"
                    maxOccurs="unbounded"
                    minOccurs="0" />
        <xs:element name="sourceLanguage" type="ProgrammingLanguage"
                    maxOccurs="unbounded"
                    minOccurs="0" />
        <xs:element name="sourceCodeURL" type="xs:anyURI" maxOccurs="1" minOccurs="0" />
      </sequence>
    </extension>
  </complexContent>
</complexType>

va:Application Extension Metadata Elements
ElementDefinition
cost
Value type: string: xs:string
Semantic Meaning: an indication as to what the cost of the application is - the string "free" or "none" should be used to indicate that the application does not cost anything. Any value for the cost of any non-free software should be taken to be an approximate cost for one license - it is obviously difficult to curate this value for non-free software so that the main use of this element will be to distinguish between free and non-free.
Occurrences: optional
licence
Value type: string: xs:string
Semantic Meaning: A free text value that indicates what type of licence is in force. This can either be a common name of a license or a URL pointing to the license text.
Occurrences: optional
openSource
Value type: boolean (true/false): xs:boolean
Semantic Meaning: Is the software open source. See http://www.opensource.org/docs/definition.php for the definition of "open source"
Occurrences: optional
dataFormat
Value type: DataFormat
Semantic Meaning: File formats that this application can read or write. The formats are specified by reference to an IVOA identifier that describes the format.
Occurrences: optional; multiple occurrences allowed.
voStandard
Value type: ApplicationCapability
Semantic Meaning: enumerate which standards this application is compliant with - *Editor note* not really too happy with this, as there is a certain amount of potential redundancy here if there is a derived type - e.g. a CeaApplication type will support CEA standard so at least one entry would have to be placed here...
Occurrences: optional; multiple occurrences allowed.
sourceLanguage
Value type: ProgrammingLanguage
Semantic Meaning: The IVOA identifier for the principal language that the application is written in.
Occurrences: optional; multiple occurrences allowed.
sourceCodeURL
Value type: a URI: xs:anyURI
Semantic Meaning: The location where the source code can be found. This might be a URL to a specific archive file containing the source, or to the access pages for a source code management system.
Occurrences: optional

 

The IVOA identifiers to be used for the dataFormats and sourceLanguages are detailed in the section on Enumerations.

3.3. DesktopApplication

This is a concrete type that can be used to register real application that can be run on the user's desktop. In addition to the metadata described above, there is the possibility to add metadata for the following properties.

va:DesktopApplication Type Schema Definition
<xs:complexType name="DesktopApplication" >
  <xs:complexContent >
    <xs:extension base="Application" >
      <xs:sequence >
        <xs:element name="binarySize" type="xs:int" maxOccurs="1" minOccurs="0" />
        <xs:element name="memoryRequirement" type="xs:string" maxOccurs="1"
                    minOccurs="0" />
        <xs:element name="network" type="NetworkRequirement" minOccurs="0" />
        <xs:element name="dependsOn" type="vr:IdentifierURI"
                    maxOccurs="unbounded"
                    minOccurs="0" />
        <xs:element name="executable" type="ExecutionEnvironment"
                    maxOccurs="unbounded"
                    minOccurs="0" />
      </sequence>
    </extension>
  </complexContent>
</complexType>

va:DesktopApplication Extension Metadata Elements
ElementDefinition
binarySize
Value type:
Semantic Meaning: The size of the executable in bytes.
Occurrences: optional
memoryRequirement
Value type: string: xs:string
Semantic Meaning: An estimate in bytes of the mimimum memory that the application requires to function with acceptable interactive performance.
Occurrences: optional
network
Value type: NetworkRequirement
Semantic Meaning: An assertion about the network requirements for the proper functioning of the application.
Occurrences: optional
Comments:

This can take on the values;

Essential
The application will not even start without a network connection.
Useful
The application will start, but the primary use for the application requires a network connection.
Limited
The application makes only limited use of network facilities, thus the majority of its functionality is still available without a network connection.
Unnecessary
The application makes no use of the network.

dependsOn
Value type: an IVOA Identifier URI: vr:IdentifierURI
Semantic Meaning: Can be used to indicate other applications/software libraries that the application depends upon. This should only be used to indicate dependencies that must be installed separately from the main application installation for it to function properly.
Occurrences: optional; multiple occurrences allowed.
executable
Value type: ExecutionEnvironment
Semantic Meaning: how to obtain the executable
Occurrences: optional; multiple occurrences allowed.

binarySize

The size of the executable in bytes.

memoryRequirement

An estimate in bytes of the mimimum memory that the application requires to function with acceptable interactive performance.

network

An assertion about the network requirements for the proper functioning of the application. This can take on the values;

Essential
The application will not even start without a network connection.
Useful
The application will start, but the primary use for the application requires a network connection.
Limited
The application makes only limited use of network facilities, thus the majority of its functionality is still available without a network connection.
Unnecessary
The application makes no use of the network.

dependsOn

Can be used to indicate other applications/software libraries that the application depends upon. This should only be used to indicate depenedencies that must be installed separately from the application itself e.g. this element should not be used to indicate a dependency on a software library if the library is included in the application download.

executable

This is a complex type that is described further in the section on the ExecutionEnvionment type.

3.4. ExecutionEnvironment type

This type is intended to provide enough information for an executable image of the application to be downloaded and possibly automatically run. It should be noted of course that the automatic invocation of an application could possibly be dangerous and it only recommended for environments where a suitable "sandbox" is provided and/or cryptographic verification of the origin of the executable can be made.

va:ExecutionEnvironment Type Schema Definition
<xs:complexType name="ExecutionEnvironment" >
  <xs:sequence >
    <xs:element name="platform" type="Platform" />
    <xs:element name="architecture" type="xs:string" minOccurs="0" />
    <xs:element name="subtype" type="xs:string" maxOccurs="1" minOccurs="0" />
    <xs:element name="minVersion" type="xs:string" maxOccurs="1" minOccurs="0" />
    <xs:element name="maxVersion" type="xs:string" maxOccurs="1" minOccurs="0" />
    <xs:element name="download" type="xs:anyURI" maxOccurs="unbounded"
                minOccurs="1" />
    <xs:element name="path" type="xs:string" maxOccurs="1" minOccurs="0" />
  </sequence>
</complexType>

va:ExecutionEnvironment Metadata Elements
ElementDefinition
platform
Value type: Platform
Semantic Meaning: The major classification of the execution environment. This should be an ivoa identifier for the platform name;
Occurrences: required
architecture
Value type: string: xs:string
Semantic Meaning: The hardware architecture that the software is compiled for, if relevant.
Occurrences: optional
subtype
Value type: string: xs:string
Semantic Meaning: this is used to specify exactly the specific kind of the environment - e.g. in the case of unix/linux it would be nice if the output of uname would suffice here - however the most common
Occurrences: optional
minVersion
Value type: string: xs:string
Semantic Meaning: the minimum version of the environment that the code will run in -
Occurrences: optional
maxVersion
Value type: string: xs:string
Semantic Meaning: The highest version of the environment that this applies to.
Occurrences: optional
download
Value type: a URI: xs:anyURI
Semantic Meaning: The url that can be used to download (and possibly execute) the application.
Occurrences: required; multiple occurrences allowed.
Comments:

This can actually point to different types of entity depending on the platform e.g. for the "unix" platform this would typically point to a compiled executable image (though it might point to an archive or "packaging" file that contains the executable amongst other files). For the "Java Webstart" platform this element will point to a ".jnlp" file that contains all of the information necessary for the Java Webstart technology to download and run the application.

path
Value type: string: xs:string
Semantic Meaning: If the software image is packaged within some form of archive format (e.g. tar or zip format) then this element can be used to indicate the exact location of the software image within the archive file.
Occurrences: optional

An example of the ExecutionEnvironment type being used to describe the ways that Aladin can be launched
<!-- note that aladin can be started via webstart -->
<executable>
<platform>
ivo://net.ivoa.application/platforms#JavaWebStart
</platform>
<download>
http://aladin.u-strasbg.fr/java/nph-aladin.pl?frame=get&id=aladin.jnlp
</download>
</executable>
<!-- or downloaded directly-->
<executable>
<platform>ivo://net.ivoa.application/platforms#Java</platform>
<download>
http://aladin.u-strasbg.fr/java/nph-aladin.pl?frame=get&id=Aladin.jar
</download>
</executable>
<!-- or even run as an applet -->
<executable>
<platform>
ivo://net.ivoa.application/platforms#JavaApplet
</platform>
<download>
http://aladin.u-strasbg.fr/java/nph-aladin.pl
</download>
</executable>
</ri:Resource>

3.5. SoftwareLibrary Type

The SoftwareLibrary type is used to register software that is not executable, but can be used as a component to build other executable software. The only metadata that the SoftwareLibrary type has beyond the basic Application type is that of the library element which is of type ExecutionEnvironment and can thus be used to indicate the location and platform that a library has been compiled for.

va:SoftwareLibrary Type Schema Definition
<xs:complexType name="SoftwareLibrary" >
  <xs:complexContent >
    <xs:extension base="Application" >
      <xs:sequence >
        <xs:element name="library" type="ExecutionEnvironment"
                    maxOccurs="unbounded"
                    minOccurs="1" >
               </element>
      </sequence>
    </extension>
  </complexContent>
</complexType>

va:SoftwareLibrary Extension Metadata Elements
ElementDefinition
library
Value type: ExecutionEnvironment
Semantic Meaning:
Occurrences: required; multiple occurrences allowed.

3.6. Enumerations

In accordance with the guidelines laid down by [VR], there has been no attempt to create enumerated lists for cases where there list could not be closed (e.g. the set of operating system names will grow as new operating systems are developed). This means that the values of certain elements in a document instance will not be checked by even a validating XML parser, and validation that the element contents are allowed will have to be done by a separate process. This section will list the allowed values for those enumerations where appropriate and instance documents MUST use these exact strings to represent the same concept. These names are registered using the VOStandard schema [VSTD] as vstd:ResourceEnumList types, and the registry entries for the enumerations will be the definitive source for updates that occur after this document is published.

 Type for which enum is validValueDescription
Programming languages va:ProgrammingLanguageivo://net.ivoa.application/languages#CThe C programming language - taken to include all variants of the language from K&R to ANSI.
ivo://net.ivoa.application/languages#CPPThe C++ programming language ISO/IEC 14882:1998

ivo://net.ivoa.application/languages#CSharp

The C# programming language http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf
ivo://net.ivoa.application/languages#FORTRANThe FORTRAN programming language - Includes all versions of the language
ivo://net.ivoa.application/languages#JavaThe Java programming language http://java.sun.com/
ivo://net.ivoa.application/languages#PerlThe Perl programming language http://www.perl.org/
ivo://net.ivoa.application/languages#PythonThe Python programming language http://www.python.org/
Data Formats va:DataFormativo://net.ivoa.application/formats#FITSThe FITS data format http://fits.gsfc.nasa.gov/documents.html
ivo://net.ivoa.application/formats#VOTableThe VOTable format [VOTable]
ivo://net.ivoa.application/formats#HDFhttp://www.hdfgroup.org/
Execution Environments va:Platformivo://net.ivoa.application/platforms#UnixThis includes all variations, as well as Linux
ivo://net.ivoa.application/platforms#WindowsAll varieties of Microsoft Windows
ivo://net.ivoa.application/platforms#JavaWebStartA Java application that can be launched using the WebStart mechanism
ivo://net.ivoa.application/platforms#JavaAppletA Java executable that can be launched as an applet
ivo://net.ivoa.application/platforms#Perl�
ivo://net.ivoa.application/platforms#Python�
ivo://net.ivoa.application/platforms#IRAF�
ivo://net.ivoa.application/platforms#PyRaf??
ivo://net.ivoa.application/platforms#IDL�
ivo://net.ivoa.application/platforms#OSXApple OS X

 

The procedure to add to these enumerations is to apply by email to the curators of the respective resources

4. Examples of use of the Application Schema

1. Common Execution Architecture (CEA)

The VOCEA schema that is used to register CEA information [CEADM] is a good example of how the VOApplication schema can be extended. This has already been illustrated in the UML diagram earlier in this document.

1. SAMP

TBC

Appendix A. The complete VOApplication Schema

Note that this schema can be found on-line at http://www.ivoa.net/xml/VOApplication/v1.0 (i.e. the target namespace can also be used as a URL for the schema.) This location should represent the definitive source, the schema is only copied below for completeness of this document.

<!-- $Id: VOApplication.xsd,v 1.3.2.2 2011/04/14 12:12:33 pah Exp $ Defines general application resource metadata. ... -->
<xs:schema targetNamespace="http://www.ivoa.net/xml/VOApplication/v1.0rc1" elementFormDefault="unqualified" attributeFormDefault="unqualified" version="1.0 $Revision: 1.3.2.2 $" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:="http://www.ivoa.net/xml/VOApplication/v1.0rc1" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vr="http://www.ivoa.net/xml/VOResource/v1.0" xmlns:vm="http://www.ivoa.net/xml/VOMetadata/v0.1">
<xs:import schemaLocation="../../VOResource/v1.0/VOResource.xsd" namespace="http://www.ivoa.net/xml/VOResource/v1.0"/>
<xs:annotation>
<xs:appinfo>
<vm:schemaName>VOApplication</vm:schemaName>
<vm:schemaPrefix>xs</vm:schemaPrefix>
<vm:targetPrefix>va</vm:targetPrefix>
</xs:appinfo>
<xs:documentation> This is a schema for describing applications.. See complete specification at http://www.ivoa.net/Documents/latest/VOApplication.html. </xs:documentation>
</xs:annotation>
<xs:complexType name="Application">
<xs:annotation>
<xs:documentation> The basic description of an application. </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="vr:Resource">
<xs:sequence>
<!-- <xs:element name="ApplicationInfo"> <xs:complexType> <xs:sequence> -->
<xs:element name="cost" minOccurs="0" type="xs:string">
<xs:annotation>
<xs:documentation> an indication as to what the cost of the application is - the string "free" or "none" should be used to indicate that the application does not cost anything. Any value for the cost of any non-free software should be taken to be an approximate cost for one license - it is obviously difficult to curate this value for non-free software so that the main use of this element will be to distinguish between free and non-free. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="licence" type="xs:string" maxOccurs="1" minOccurs="0">
<xs:annotation>
<xs:documentation> A free text value that indicates what type of licence is in force. This can either be a common name of a license or a URL pointing to the license text. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="openSource" type="xs:boolean" minOccurs="0">
<xs:annotation>
<xs:documentation> Is the software open source. See http://www.opensource.org/docs/definition.php for the definition of "open source" </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dataFormat" type="DataFormat" maxOccurs="unbounded" minOccurs="0">
<xs:annotation>
<xs:documentation> File formats that this application can read or write. The formats are specified by reference to an IVOA identifier that describes the format. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="voStandard" type="ApplicationCapability" maxOccurs="unbounded" minOccurs="0">
<xs:annotation>
<xs:documentation> enumerate which standards this application is compliant with - *Editor note* not really too happy with this, as there is a certain amount of potential redundancy here if there is a derived type - e.g. a CeaApplication type will support CEA standard so at least one entry would have to be placed here... </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="sourceLanguage" type="ProgrammingLanguage" maxOccurs="unbounded" minOccurs="0">
<xs:annotation>
<xs:documentation> The IVOA identifier for the principal language that the application is written in. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="sourceCodeURL" type="xs:anyURI" maxOccurs="1" minOccurs="0">
<xs:annotation>
<xs:documentation> The location where the source code can be found. This might be a URL to a specific archive file containing the source, or to the access pages for a source code management system. </xs:documentation>
</xs:annotation>
</xs:element>
<!--</xs:sequence> </xs:complexType> </xs:element>-->
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="DesktopApplication">
<xs:annotation>
<xs:documentation> An application that can actually be run on a user's desktop computer. </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="Application">
<xs:sequence>
<xs:element name="binarySize" type="xs:int" maxOccurs="1" minOccurs="0">
<xs:annotation>
<xs:documentation> The size of the executable in bytes. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="memoryRequirement" type="xs:string" maxOccurs="1" minOccurs="0">
<xs:annotation>
<xs:documentation> An estimate in bytes of the mimimum memory that the application requires to function with acceptable interactive performance. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="network" type="NetworkRequirement" minOccurs="0">
<xs:annotation>
<xs:documentation> An assertion about the network requirements for the proper functioning of the application. </xs:documentation>
<xs:documentation>
This can take on the values;
<dl>
<dt>Essential</dt>
<dd> The application will not even start without a network connection. </dd>
<dt>Useful</dt>
<dd> The application will start, but the primary use for the application requires a network connection. </dd>
<dt>Limited</dt>
<dd> The application makes only limited use of network facilities, thus the majority of its functionality is still available without a network connection. </dd>
<dt>Unnecessary</dt>
<dd> The application makes no use of the network. </dd>
</dl>
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dependsOn" type="vr:IdentifierURI" maxOccurs="unbounded" minOccurs="0">
<xs:annotation>
<xs:documentation> Can be used to indicate other applications/software libraries that the application depends upon. This should only be used to indicate dependencies that must be installed separately from the main application installation for it to function properly. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="executable" type="ExecutionEnvironment" maxOccurs="unbounded" minOccurs="0">
<xs:annotation>
<xs:documentation> how to obtain the executable </xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="SoftwareLibrary">
<xs:annotation>
<xs:documentation> Software the cannot be independently executed, but can be used to build applications </xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="Application">
<xs:sequence>
<xs:element name="library" type="ExecutionEnvironment" maxOccurs="unbounded" minOccurs="1"> </xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="ExecutionEnvironment">
<xs:annotation>
<xs:documentation> Description of the full execution environment. Where possible this description should be sufficient to download and run the application. </xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="platform" type="Platform">
<xs:annotation>
<xs:documentation> The major classification of the execution environment. This should be an ivoa identifier for the platform name; </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="architecture" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation> The hardware architecture that the software is compiled for, if relevant. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="subtype" type="xs:string" maxOccurs="1" minOccurs="0">
<xs:annotation>
<xs:documentation> this is used to specify exactly the specific kind of the environment - e.g. in the case of unix/linux it would be nice if the output of uname would suffice here - however the most common </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="minVersion" type="xs:string" maxOccurs="1" minOccurs="0">
<xs:annotation>
<xs:documentation> the minimum version of the environment that the code will run in - </xs:documentation>
<!-- lots of problems here for practical use of this element * need to be able to compare versions...possibly not so easy e.g. windows XP > windows 2000 * In addition there are lots of "marketing versions" of operating systems that are not the same as the versions that the operating system itself uses.. * Also linux based systems often report version of kernel, which is not necessarily the determining factor as to whether a particular version of an application can run... -->
</xs:annotation>
</xs:element>
<xs:element name="maxVersion" type="xs:string" maxOccurs="1" minOccurs="0">
<xs:annotation>
<xs:documentation> The highest version of the environment that this applies to. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="download" type="xs:anyURI" maxOccurs="unbounded" minOccurs="1">
<xs:annotation>
<xs:documentation> The url that can be used to download (and possibly execute) the application. </xs:documentation>
<xs:documentation> This can actually point to different types of entity depending on the platform e.g. for the "unix" platform this would typically point to a compiled executable image (though it might point to an archive or "packaging" file that contains the executable amongst other files). For the "Java Webstart" platform this element will point to a ".jnlp" file that contains all of the information necessary for the Java Webstart technology to download and run the application. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="path" type="xs:string" maxOccurs="1" minOccurs="0">
<xs:annotation>
<xs:documentation> If the software image is packaged within some form of archive format (e.g. tar or zip format) then this element can be used to indicate the exact location of the software image within the archive file. </xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DataFormat">
<xs:annotation>
<xs:documentation> Data File Format. This should be a uri reference to a value from the ivo://net.ivoa.application/formats resource. Editor note - it would really be nice to have a connection with mime-types here rather/as well as the standard reference mechanism </xs:documentation>
</xs:annotation>
<!-- could be made more explict with the vstd:StandardKeyURI but have choosen not to couple this to the VOStandard schema -->
<xs:attribute name="standardID" type="xs:anyURI" use="required"/>
<xs:attribute name="direction" type="DataFormatDirection" use="required"> </xs:attribute>
</xs:complexType>
<xs:simpleType name="ProgrammingLanguage">
<xs:annotation>
<xs:documentation> The programming language. This should be a uri reference to a value from the ivo://net.ivoa.application/languages resource. </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:anyURI"> </xs:restriction>
</xs:simpleType>
<xs:simpleType name="Platform">
<xs:annotation>
<xs:documentation> The execution environment name. This should be a uri reference to a value from the ivo://net.ivoa.application/platforms resource. </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:anyURI"> </xs:restriction>
</xs:simpleType>
<xs:complexType name="ApplicationCapability">
<xs:annotation>
<xs:documentation> generic description of a capability of an application - this is different from a service capability because it does not have an interface associated - perhaps should be derived from a common base class though. </xs:documentation>
</xs:annotation>
<xs:attribute name="standardID" type="vr:IdentifierURI"/>
</xs:complexType>
<xs:simpleType name="NetworkRequirement">
<xs:annotation>
<xs:documentation> Characterization as to whether a network connection is required by the application. </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="Essential">
<xs:annotation>
<xs:documentation> The application cannot function without a network connection </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Useful">
<xs:annotation>
<xs:documentation> The application will function without a network connection, but the primary use for the application requires a network connection. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Limited">
<xs:annotation>
<xs:documentation> The application makes only limited use of network facilities, thus the majority of its functionality is still available without a network connection. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Unnecessary">
<xs:annotation>
<xs:documentation> The application makes no use of the network. </xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DataFormatDirection">
<xs:annotation>
<xs:documentation> Description of whether an application can both read and write a particular data format. </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="read"/>
<xs:enumeration value="write"/>
<xs:enumeration value="both"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

Appendix B. The complete source of the examples presented

The example instances of the the VOApplication schema show several features of how to use the schema to register applications.

<!-- $Id: application.xml,v 1.9 2007/03/16 09:22:14 pharriso Exp $ -->
<!--SampleApplication definitions - please note that none of these are exaustively complete - in particular the standard VOResource parts of the metadata should be better for a published registry entry, but they are intended to illustrate various feature of the VOApplication schema-->
<!-- Aladin - a classic VO desktop application! -->
<ri:VOResources xsi:schemaLocation="http://www.ivoa.net/xml/RegistryInterface/v1.0 http://www.ivoa.net/xml/RegistryInterface/v1.0 http://www.ivoa.net/xml/VOApplication/v1.0rc1 VOApplication.xsd" from="1" more="false" numberReturned="4" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:ri="http://www.ivoa.net/xml/RegistryInterface/v1.0" xmlns:app="http://www.ivoa.net/xml/VOApplication/v1.0rc1" xmlns:vr="http://www.ivoa.net/xml/VOResource/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ri:Resource updated="2006-08-13T00:00:00" created="2006-08-13T00:00:00" status="active" xsi:type="app:DesktopApplication">
<title>The Aladin Sky Atlas</title>
<shortName>Aladin</shortName>
<identifier>ivo://cds.fr/applications/aladin</identifier>
<curation>
<publisher ivo-id="ivo://xxx/x/x">String</publisher>
<creator>
<name ivo-id="ivo://xxx/x/x">Centre des Données Astronomiques de Strasbourg</name>
<logo>http://cdsweb.u-strasbg.fr/Icons/cds_icon.gif</logo>
</creator>
<date role="representative">1967-08-13</date>
<version>String</version>
<contact>
<name ivo-id="ivo://xxx/x/x">Pierre Fernique</name>
<address>String</address>
<email>String</email>
<telephone>String</telephone>
</contact>
</curation>
<content>
<subject>String</subject>
<description>Aladin is an interactive software sky atlas allowing the user to visualize digitized images of any part of the sky, to superimpose entries from astronomical catalogs or personal user data files, and to interactively access related data and information from the SIMBAD, NED, VizieR, or other archives for all known objects in the field. Aladin is particularly useful for multi-spectral cross-identifications of astronomical sources, observation preparation and quality control of new data sets.</description>
<!-- this is a reference to a description -->
<referenceURL>http://aladin.u-strasbg.fr/</referenceURL>
<type>Other</type>
<contentLevel>General</contentLevel>
</content>
<!-- some example data formats that Aladin supports - not an exhaustive list -->
<dataFormat standardID="ivo://net.ivoa.application/formats#FITS" direction="both"/>
<dataFormat standardID="ivo://net.ivoa.application/formats#VOtable" direction="both"/>
<!-- standard that aladin supports - note that the ivo ID not finalized yet. -->
<voStandard standardID="ivo://ivoa.net/SIA"/>
<sourceLanguage> ivo://net.ivoa.application/language#Java </sourceLanguage>
<!-- note that aladin can be started via webstart -->
<executable>
<platform> ivo://net.ivoa.application/platforms#JavaWebStart </platform>
<download> http://aladin.u-strasbg.fr/java/nph-aladin.pl?frame=get&id=aladin.jnlp </download>
</executable>
<!-- or downloaded directly-->
<executable>
<platform>ivo://net.ivoa.application/platforms#Java</platform>
<download> http://aladin.u-strasbg.fr/java/nph-aladin.pl?frame=get&id=Aladin.jar </download>
</executable>
<!-- or even run as an applet -->
<executable>
<platform> ivo://net.ivoa.application/platforms#JavaApplet </platform>
<download> http://aladin.u-strasbg.fr/java/nph-aladin.pl </download>
</executable>
</ri:Resource>
<ri:Resource updated="1967-08-13T00:00:00" created="1967-08-13T00:00:00" status="active" xsi:type="app:DesktopApplication">
<title>The AstroGrid Workbench</title>
<shortName>Workbench</shortName>
<identifier> ivo://org.astrogrid/applications/workbench </identifier>
<curation>
<publisher ivo-id="ivo://xxx/x/x">String</publisher>
<creator>
<name ivo-id="ivo://xxx/x/x">String</name>
<logo>http://www.ivoa.net/pub/images/IVOA_wb_300.jpg</logo>
</creator>
<contributor ivo-id="ivo://xxx/x/x">String</contributor>
<date role="representative">1967-08-13</date>
<!-- -->
<version>1.3</version>
<contact>
<name>Noel Winstanley</name>
<address>Astrogrid</address>
<email>nw@jb.man.ac.uk</email>
</contact>
</curation>
<content>
<subject>Astrogrid Workbench</subject>
<description> The Workbench is a graphical desktop application that interacts with AstroGrid services. It provides a user interface to Browse, read and write MySpace Launch Parameterized Workflows Launch remote (CEA) applications Monitor and control workflows and applications View registry entries a simple programmer's interface for working with AstroGrid services. This interface can be accessed from scripts and other programs via HTTP, XMLRPC or JavaRMI </description>
<source format="String">String</source>
<!-- this is a reference to a description -->
<referenceURL> http://software.astrogrid.org/userdocs/workbench.html </referenceURL>
<type>Other</type>
<contentLevel>General</contentLevel>
<relationship>
<relationshipType>mirror-of</relationshipType>
<relatedResource ivo-id="ivo://xxx/x/x"> String </relatedResource>
<relatedResource ivo-id="ivo://xxx/x/x"> String </relatedResource>
</relationship>
</content>
<licence>Academic Free</licence>
<openSource>true</openSource>
<sourceLanguage> ivo://net.ivoa.application/language#Java </sourceLanguage>
<executable>
<platform> ivo://net.ivoa.application/platforms#JavaWebStart </platform>
<minVersion>1.4</minVersion>
<download> http://software.astrogrid.org/jnlp/astrogrid-desktop/astrogrid-desktop.jnlp </download>
</executable>
</ri:Resource>
<!-- STIL - and example of a library -->
<ri:Resource updated="1967-08-13T00:00:00" created="1967-08-13T00:00:00" status="active" xsi:type="app:SoftwareLibrary">
<title>Starlink Tables Infrastructure Library</title>
<shortName>STIL</shortName>
<identifier>ivo://starlink.org/applications/stil</identifier>
<curation>
<publisher ivo-id="ivo://xxx/x/x">String</publisher>
<creator>
<name ivo-id="ivo://xxx/x/x">String</name>
<logo>http://www.ivoa.net/pub/images/IVOA_wb_300.jpg</logo>
</creator>
<contributor ivo-id="ivo://xxx/x/x">String</contributor>
<date role="representative">1967-08-13</date>
<!-- -->
<version>2.3-1</version>
<contact>
<name>Mark Taylor</name>
<address>Starlink</address>
<email>m.b.taylor@bristol.ac.uk</email>
</contact>
</curation>
<content>
<subject> STIL - Starlink Tables Infrastructure Library </subject>
<description> STIL is a pure Java library for generic input, output and processing of tabular data. It presents to the application programmer a view of a table which looks the same regardless of whether it came from a FITS file, a VOTable, an ASCII text file, a query on a relational database, or whatever. Thus the application doesn't have to worry about the storage format of tables either when reading or writing them, it can concentrate on doing processing. STIL's idea of a table is rich enough to include table and column metadata, and table cells which contain scalar or single- or multi-dimensional array data of numerical, string or other types. This is well suited to astronomical data, though it can be of use in other fields as well. </description>
<source format="String">String</source>
<!-- this is a reference to a description -->
<referenceURL> http://www.star.bristol.ac.uk/~mbt/stil/ </referenceURL>
<type>Other</type>
<contentLevel>General</contentLevel>
</content>
<sourceLanguage> ivo://net.ivoa.application/language#Java </sourceLanguage>
<library>
<platform>ivo://net.ivoa.application/platforms#Java</platform>
<minVersion>1.4</minVersion>
<download> http://www.star.bristol.ac.uk/~mbt/stil/stil.jar </download>
</library>
</ri:Resource>
<!-- a classic unix desktop application -->
<ri:Resource xsi:type="app:DesktopApplication" updated="1967-08-13T00:00:00" created="1967-08-13T00:00:00" status="active">
<!-- note that this resource describes the sextractor application itself rather than any CEA wrapping of it.-->
<title>SExtractor</title>
<shortName>SExtractor</shortName>
<identifier>ivo://org.astrogrid/apps/SExtractor</identifier>
<curation>
<publisher>Astrogrid</publisher>
<creator>
<name>Terapix</name>
<logo>http://terapix.iap.fr/IMG/terapix.png</logo>
</creator>
<date role="representative">2004-03-26</date>
<version>2.5.0</version>
<contact>
<name>Paul Harrison</name>
<email>pah@jb.man.ac.uk</email>
</contact>
</curation>
<content>
<subject>???</subject>
<description> SExtractor is a program that builds a catalogue of objects from an astronomical image. Although it is particularly oriented towards reduction of large scale galaxy-survey data, it performs rather well on moderately crowded star fields. </description>
<referenceURL> http://terapix.iap.fr/cplt/oldSite/soft/sextractor/ </referenceURL>
<type>Other</type>
</content>
<cost>free</cost>
<sourceLanguage> ivo://net.ivoa.application/languages#C </sourceLanguage>
<sourceCodeURL> ftp://ftp.iap.fr/pub/from_users/bertin/sextractor/sextractor-2.5.0.tar.gz </sourceCodeURL>
<executable>
<platform>ivo://net.ivoa.application/platforms#Unix</platform>
<architecture>x86</architecture>
<download> ftp://ftp.iap.fr/pub/from_users/bertin/sextractor/sextractor-2.5.0-1.i686.rpm </download>
</executable>
</ri:Resource>
</ri:VOResources>

Appendix C. The complete source of the enumerations presented

The source below shows how the enumerations are defined as resources using the VOStandard schema

<p:VOResources xsi:schemaLocation="http://www.ivoa.net/xml/RegistryInterface/v1.0 http://www.ivoa.net/xml/RegistryInterface/v1.0 http://www.ivoa.net/xml/StandardsRegExt/v1.0 /Users/pharriso/Work/ag/src/contracts/src/schema/vo-resource-types/VOStandard/v1.0/VOStandard.xsd http://www.ivoa.net/xml/VOResource/v1.0 http://www.ivoa.net/xml/VOResource/v1.0 " from="1" more="false" numberReturned="3" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:p="http://www.ivoa.net/xml/RegistryInterface/v1.0" xmlns:vstd="http://www.ivoa.net/xml/StandardsRegExt/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<p:Resource xsi:type="vstd:StandardKeyEnumeration" created="2001-12-31T12:00:00" updated="2001-12-31T12:00:00" status="active">
<title>application languages</title>
<identifier>ivo://net.ivoa.application/languages</identifier>
<curation>
<publisher>IVOA</publisher>
<creator>
<name>IVOA</name>
<logo>http://www.ivoa.net/icons/ivoa_logo_small.jpg</logo>
</creator>
<date role="representative">2006-07-17</date>
<version>1.0</version>
<contact>
<name>IVOA Grid Registry WG</name>
<email>registry@ivoa.net</email>
</contact>
</curation>
<content>
<subject>standard language identifiers</subject>
<description>These language identifiers are to be used in the value of the va:ProgrammingLanguage type</description>
<referenceURL> http://www.ivoa.net/twiki/bin/view/IVOA/IvoaResReg</referenceURL>
</content>
<key>
<name>C</name>
<description>The C programming language</description>
</key>
<key>
<name>CPP</name>
<description>The C++ programming language</description>
</key>
<key>
<name>CSharp</name>
<description>The C# programming language</description>
</key>
<key>
<name>FORTRAN</name>
<description>The FORTRAN programming language</description>
</key>
<key>
<name>Java</name>
<description>The Java programming language</description>
</key>
<key>
<name>Perl</name>
<description>The Perl programming language</description>
</key>
<key>
<name>Python</name>
<description>The Python programming language</description>
</key>
</p:Resource>
<p:Resource xsi:type="vstd:StandardKeyEnumeration" created="2001-12-31T12:00:00" updated="2001-12-31T12:00:00" status="active">
<title>application data formats</title>
<identifier>ivo://net.ivoa.application/formats</identifier>
<curation>
<publisher>IVOA</publisher>
<creator>
<name>IVOA</name>
<logo>http://www.ivoa.net/icons/ivoa_logo_small.jpg</logo>
</creator>
<date role="representative">2006-07-17</date>
<version>1.0</version>
<contact>
<name>IVOA Grid Registry WG</name>
<email>registry@ivoa.net</email>
</contact>
</curation>
<content>
<subject>standard language identifiers</subject>
<description>These data format identifiers are to be used in the value of the va:DataFormat type</description>
<referenceURL> http://www.ivoa.net/twiki/bin/view/IVOA/IvoaResReg</referenceURL>
</content>
<key>
<name>FITS</name>
<description>The FITS data format</description>
</key>
<key>
<name>HDF</name>
<description>The HDF data format</description>
</key>
<key>
<name>VOTable</name>
<description>The FITS data format</description>
</key>
</p:Resource>
<p:Resource xsi:type="vstd:StandardKeyEnumeration" created="2001-12-31T12:00:00" updated="2001-12-31T12:00:00" status="active">
<title>application execution environments</title>
<identifier>ivo://net.ivoa.application/platforms</identifier>
<curation>
<publisher>IVOA</publisher>
<creator>
<name>IVOA</name>
<logo>http://www.ivoa.net/icons/ivoa_logo_small.jpg</logo>
</creator>
<date role="representative">2006-07-17</date>
<version>1.0</version>
<contact>
<name>IVOA Grid Registry WG</name>
<email>registry@ivoa.net</email>
</contact>
</curation>
<content>
<subject>standard execution environment identifiers</subject>
<description>These execution environment identifiers are to be used in the value of the va:Platform type</description>
<referenceURL> http://www.ivoa.net/twiki/bin/view/IVOA/IvoaResReg</referenceURL>
</content>
<key>
<name>Unix</name>
<description>One of the Unix/Linux operating systems</description>
</key>
<key>
<name>Windows</name>
<description>One of the Microsoft Windows operating systems</description>
</key>
<key>
<name>JavaWebStart</name>
<description>Downloadable and executable via the Java Web Start technology</description>
</key>
<key>
<name>JavaApplet</name>
<description>Downloadable and executable via the Java Applet technology</description>
</key>
<key>
<name>Perl</name>
<description>A script or module that executes under Perl</description>
</key>
<key>
<name>Python</name>
<description>A script or module that executes under Python</description>
</key>
<key>
<name>IRAF</name>
<description>A script or module that executes under IRAF</description>
</key>
<key>
<name>PyRaf</name>
<description>A script or module that executes under PyRaf</description>
</key>
<key>
<name>IDL</name>
<description>A script or module that executes under IDL</description>
</key>
</p:Resource>
</p:VOResources>

[RFC 2119]
Bradner, S. 1997. [] , IETF RFC 2119, http://www.ietf.org/rfc/rfc2119.txt
[RM]
Hanisch, Robert (ed.) 2004. [] , IVOA Recommendation, http://www.ivoa.net/Documents/REC/ResMetadata/RM-20040426.htm
[VR]
Plante, Ray (ed.) 2006. VOResource: an XML Encoding Schema for Resource Metadata, IVOA Working Draft, http://www.ivoa.net/Documents/latest/VOResource.html
[VSTD]
Harrison, Paul. (ed.) 2006. VOStandard: an XML Encoding Schema for IVOA Standards, IVOA Working Draft, http://www.ivoa.net/Documents/latest/VOResource.html
[CEA]
Harrison, Paul. 2006. A Proposal for a Common Execution Architecture , IVOA Working Draft, http://www.ivoa.net/Documents/latest/VOCEA.html
 
[CEADM]
Harrison, Paul. 2007. CEA Application Model: A model and XML Encoding Schema for Applications in the Common Execution Architecture, IVOA Working Draft, http://www.ivoa.net/Documents/latest/CEADM.html
 
[xml]
Bray, Tim, Paoli, Jean, Sperberg-McQueen, C. M., Maler, Eve, Yergeau, Francois (editors) 2004, [] , W3C Recommendation http://www.w3.org/TR/REC-xml
[schema]
Fallside, David C., Walmsley, Priscilla (editors) 2004, [] , W3C Recommendation 28 October 2004, http://www.w3.org/TR/xmlschema-0/
[ID]
Plante, R., Linde, T., Williams, R., Noddle, K. 2005, [] , http://www.ivoa.net/Documents/REC/Identifiers/Identifiers-200505XX.html.
ï

$Revision: 847 $ $Date: 2008-10-29 14:33:57 +0000 (Wed, 29. Oct 2008) $