Simulation Publishing Protocol

Goals

To provide a simple mechanism for the publication of simulation data. At the simplest level, it should be possible to publish the data using a static web site.

Variables

  1. Projects have catalogs.
  2. Catalogs have simulations.
  3. Simulations have datasets.
  4. Simulations use programs.

These variables are used to match strings in a URI template, as is used in WADL.

Variable Definition
{program} Program, with inputs, and algorithms, etc.
{project} Top-level, big picture collection of catalogs.
{catalog} Collection of related simulations.
{simulation} Collection of datasets, describing the purpose and parameters.
{dataset} May be a collection (tar, tar.gz) or single file (png, hdf5)

Notes

All URIs are relative to the service endpoint

http://example.org/simulations

Or

vos://org.example!simulations

<root> indicates the root tag of an XML instance document used as input (Request Body), or returned (Response Body). Blank cells indicate that either no content is expected, or no content is returned.

[/] denotes an optional trailing slash.

Metadata

These URI's could be extended to include PUT, etc., but that would be for the service implementer to aid in managing the capabilities of the service.

/programs[/]

Method Action Request Body Response Body Faults
GET Return a list of {programs} <ProgramList> 500 - Internal Server Error
POST Add a program with a randomly UUID <Program> <Program> 500, Unauth?

/programs/{program}[/]

Method Action Request Body Response Body Faults
GET Return {program} <Program> 500, 404
PUT Create a new {program} <Program> 500, Unauth?
POST Update {program} <Program> <Program> 500, 404,Unauth?
DELETE Delete {program} 500, 404,Unauth?

/projects[/]

Method Action Request Body Response Body Faults
GET Return a list of {projects} <ProjectList> 500 - Internal Server Error
POST Add a project with a randomly UUID <Project> <Project> 500, Unauth?

/projects/{project}[/]

Method Action Request Body Response Body Faults
GET Return {project} <Project> 500, 404
PUT Create a new {project} <Project> 500, Unauth?
POST Update {project} <Project> <Project> 500, 404,Unauth?
DELETE Delete {project} 500, 404,Unauth?

/projects/{project}/{catalog}[/]

Method Action Request Body Response Body Faults
GET Return {catalog} <Catalog> 500, 404
PUT Create a new {catalog} <Catalog> 500, Unauth?
POST Update {catalog} <Catalog> <Catalog> 500, 404,Unauth?
DELETE Delete {catalog} 500, 404,Unauth?

/projects/{project}/{catalog}/{simulation}[/]

Method Action Request Body Response Body Faults
GET Return {catalog} <Catalog> 500, 404
PUT Create a new {catalog} <Catalog> 500, Unauth?
POST Update {catalog} <Catalog> <Catalog> 500, 404,Unauth?
DELETE Delete {catalog} 500, 404,Unauth?

/projects/{project}/{catalog}/{simulation}/{dataset}

Method Action Request Body Response Body Faults
GET Return {dataset} in native format {dataset} 500, 404
PUT Create a new {dataset} {dataset} 500, Unauth?
POST Update {catalog} <Catalog> <Catalog> 500, 404,Unauth?
DELETE Delete {catalog} 500, 404,Unauth?