-
Notifications
You must be signed in to change notification settings - Fork 7
Developer:Components
Components are organised into component families.
Component families are groups of components that comply with a single component profile.
- Components must be associated with a component family.
- Component families must be associated with a component profile.
An XML-based API for finding and managing Taverna components is described here.
URL: GET http://www.myexperiment.org/components.xml
Returns a list of all visible components. Can be filtered using SPARQL syntax or by providing a component-family URI (or both).
Parameters:
- query (optional) - Filter the set of components using the given SPARQL query fragment. Will be inserted into a SPARQL template (shown below).
- prefixes (optional) - A list of prefixes for the above query.
- component-family (optional) - A URI to a component family (e.g. http://www.myexperiment.org/packs/123). Will only return components from this family.
If given, the SPARQL "query" and "prefixes" parameters are inserted into the following template, and a SPARQL query is performed. A template is used to restrict the SPARQL query to only return myExperiment workflow URIs. These URIs are then resolved by myExperiment to workflow objects, over which authorization is performed. This allows components with access restrictions to be discovered by users with sufficient privileges, the alternative being to only allow public components to be listed.
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#> PREFIX wfdesc:<http://purl.org/wf4ever/wfdesc#> [SPARQL prefixes parameter here] SELECT DISTINCT ?workflow_uri WHERE { GRAPH ?workflow_uri { ?w a wfdesc:Workflow . [SPARQL query parameter here] } }
URL: GET http://www.myexperiment.org/component.xml?id=123
Return myExperiment's metadata for the given component ID. Contains a URI to download the component.
Parameters:
- id (required) - The ID of the component.
URL: POST http://www.myexperiment.org/component.xml
Upload a new component into a component family.
The body of the request is nearly identical to that of a workflow POST, described here, with an additional field: "component-family".
The "component-family" field should contain the URI to a valid myExperiment component family.
<workflow> <title>A Component</title> <description>It's a component</description> <component-family>http://www.myexperiment.org/packs/1234</component-family> <license-type>by-sa</license-type> <content-type>application/vnd.taverna.t2flow+xml</content-type> <content> ... Base64 encoded workflow body goes here ... </content> </workflow>
Creates a new version of an existing component.
Identical to the endpoint described above, except an 'id' parameter is required, and an optional 'revision-comment' field can be passed to describe the change between versions.
URL: POST http://www.myexperiment.org/component.xml?id=123
Parameters:
- id (required) - The ID of the component.
<workflow> <content-type>application/vnd.taverna.t2flow+xml</content-type> <content> ... Base64 encoded workflow body goes here ... </content> <revision-comment>Fixed issue with previous version</revision-comment> </workflow>
Deletes the component with the given ID.
This uses the workflow API.
URL: DELETE http://www.myexperiment.org/workflow.xml?id=123
Returns a list of available component families.
Takes an optional component profile URI to return only component families which use that profile.
URL: GET http://www.myexperiment.org/component-families.xml
Parameters:
- component-profile (optional) - The URI of a valid myExperiment component profile.
Creates a new component family.
The body of the request is nearly identical to that of a pack POST, described here, with an additional field: "component-profile", which should contain a URI of a valid myExperiment component profile.
URL: POST http://www.myexperiment.org/component-family.xml
<pack> <title>A Component Family</title> <description>It's for components</description> <component-profile>http://www.myexperiment.org/files/12345</component-profile> <license-type>by-sa</license-type> </pack>
Deletes the component family with the given ID, and all components within it.
If all components are not able to be deleted due to lack of privileges, the operation will fail and nothing will be deleted.
URL: DELETE http://www.myexperiment.org/component-family.xml?id=123
Parameters:
- id (required) - The ID of the component family to delete.
- 200 - Success
- 401 - Not authorized to delete the family, or one or more components within it
Lists all available component profiles.
URL: GET http://www.myexperiment.org/component-profiles.xml
Creates a new component profile.
The body of the request is identical to that of a file POST, described here, but the content-type must be application/vnd.taverna.component-profile+xml.
URL: POST http://www.myexperiment.org/component-profile.xml
<file> <title>Component Profile</title> <filename>profile.xml</filename> <description>It's for components</description> <content-type>application/vnd.taverna.component-profile+xml</content-type> <content> ... Base64 encoded file contents goes here ...</content> <license-type>by-sa</license-type> </file>
Deletes the component profile with the given ID.
If the component profile is used by one or more families, the operation will fail.
URL: DELETE http://www.myexperiment.org/component-profile.xml?id=123
Parameters:
- id (required) - The ID of the component profile to delete.
- 200 - Success
- 400 - Failure, the component profile is in use and may not be deleted