The entry point of the Taverna Workflow Bundle.
Defines the workflows and profiles of a Taverna Workflow Bundle. The main workflow is also normally defined, which would be the top-level workflow to execute. The profiles define how these workflows can be realised and executed on different environments, one of which can be suggested as the main profile.
Bundle path and root files¶
The workflow bundle document in RDF/XML format should be in
/workflowBundle.rdf within the bundle archive.
If the archive is a workflow bundle,
META-INF/container.xml can define root files at alternative paths and media types.
This specification requires that one of those formats is
META-INF/container.xml: (may be outdated)
<?xml version="1.0"?> <container version="1.0" xmlns=";urn:oasis:names:tc:opendocument:xmlns:container"> <rootfiles> <rootfile full-path="workflowBundle.ttl" media-type="text/turtle" /> <rootfile full-path="workflowBundle.rdf" media-type="application/rdf+xml" /> </rootfiles> </container>
The code above defines the RDF/XML root file to be
workflowBundle.ttl being an alternate representation of the resource in Turtle format.
SCUFL2-compliant workflow bundle writers:
- Must set the bundle mimetype to
- Must add a workflow bundle document in
- Should store the workflow bundle document in
- Must not contain a resource called
/workflowBundle.rdfthat is not the workflow bundle document.
- May add additional representation of the workflow bundle document (and other documents).
Alternates of the workflow bundle document should be included in the
META-INF/container.xml, but only if they can be considered to fully specify the workflow bundle as in the RDF/XML format. (So for instance, a
image/pngrepresentation would not normally be considered a rootfile if it does not include all the structural information from the RDF/XML representation as specified here.)
SCUFL2-compliant workflow bundle writers have additional constraints.
- If the
application/rdf+xmlrepresentation is not in
/workflowBundle.rdf, the writer must include
META-INF/container.xmlwith the required
META-INF/container.xml, if present, must contain one and only one
rootfilewith the media-type
application/rdf+xml. Rootfiles of other media-types may be included, but their formats and restrictions are not defined by this specification.
It is possible to include a workflow bundle document within a different kind of archive or bundle,
for instance in a data bundle.
In this case, the bundle is not considered an
Producers of these different kinds of archives:
- Should store the workflow bundle document in
/workflowBundle.rdf, unless the workflow bundle is not to be considered to have a 'main' or 'prominent' role within the archive. (For instance, if the archive is a collection of workflow bundles.)
- Should have a
META-INF/container.xmlresource that declares the archive's main entry point, like the data bundle document. The mime type must not be
application/vnd.taverna.scufl2.workflow-bundle, and the root files should not be the workflow bundle document.
- Should link to the workflow bundle document from a resource within the archive, which (ultimately)
is linked-to from one of the
rootfiledocuments. Such documents should be in RDF/XML format.
- Should declare the media type of the RDF/XML workflow bundle document as
SCUFL2-compliant workflow bundle readers:
- Should assume that
/workflowBundle.rdf- if present - is the root workflow bundle in the
application/rdf+xmlformat specified here.
- Should assume that if the archive's
application/vnd.taverna.scufl2.workflow-bundle, then the
META-INF/container.xmlwith the media type
application/rdf+xmlis the root workflow bundle document.
- May assume that any alternate formats listed as a
application/vnd.taverna.scufl2.workflow-bundlearchive would fully cover the specification of the RDF/XML representation, and read such formats instead.
- May assume that any
application/rdf+xmldocument with a
xsi:type="WorkflowBundleDocument"can be parsed according to the Scufl2 XML schema.
Workflow bundles and their resources must be declared with relative identifiers within the archive.
the workflow bundle must be identified as the root of the archive.
If the Workflow Bundle document is in
workflowBundle.rdf within the archive, the workflow identifier is
This should be achieved by setting
One can mint a URI to refer to resources within the bundle archive, including the workflow bundle, workflows and representations. If
http://example.com/myWfBundle.scufl2 returns a Scufl2 workflow bundle archive of the content type
application/vnd.taverna.scufl2.workflow-bundle, then (assuming default structure of the archive):
http://example.com/myWfBundle.scufl2identifies the Workflow Bundle representation (the archive).
http://example.com/myWfBundle.scufl2/identifies the Workflow Bundle (as described here).
http://example.com/myWfBundle.scufl2/workflowBundle.rdfidentifies the Workflow Bundle representation in RDF/XML.
http://example.com/myWfBundle.scufl2/workflow/HelloWorld/identifies the "HelloWorld" workflow within the bundle.
http://example.com/myWfBundle.scufl2/workflow/HelloWorld.rdfidentifies the "HelloWorld" workflow representation in RDF/XML.
http://example.com/myWfBundle.scufl2/workflow/HelloWorld/processor/Hello/identifies the "Hello" processor within the "HelloWorld" workflow.
Embedded workflow bundles¶
If the archive is another type of bundle, which includes the workflow bundle (but is not primarily playing the role as the format for this workflow bundle), the local workflow identifier should be unique within the archive. This is most easily achieved by using the same folder technique as for the workflow representations:
Such embedded workflow bundles should include their constituent representations
workflow/HelloWorld.rdf) within that folder.
exampleWorkflowBundles/hello/workflow/HelloWorld/. But this could also be shared among bundles;
for instance, both
workflowBundle2.rdf might refer to
Global workflow bundle identifiers¶
Workflow bundles should declare a sameBaseAs reference to a globally unique non-informational URI.
Anyone can generate such a URI using the form
One example would be:
including the trailing slash.
The semantics of sameBaseAs is a kind of recursive version of owl:sameAs - so resources with URI having the same beginning will be included.
@prefix : <;http://ns.taverna.org.uk/2010/scufl2> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema> . <./> a :WorkflowBundle; :name "HelloWorld"; :sameBaseAs <http://ns.taverna.org.uk/2010/workflowBundle/28f7c554-4f35-401f-b34b-516e9a0ef731/>; :mainWorkflow <workflow/HelloWorld/>; :workflow <workflow/HelloWorld/>; <workflow/HelloWorld/> a :Workflow; rdfs:seeAlso <workflow/HelloWorld.ttl> .
This allows anyone to make a statement about any resource within the workflow bundle, even if the URL of the workflow bundle representation itself might change, be it on a local USB disk, DropBox folder, myExperiment, etc.
Updating the UUID¶
It is up to the software editing or creating the workflow to assign a new UUID as soon as any change has been done to any workflow, profile or workflow bundle, as this is the globally unique identifier for this workflow archive, and also the base URI for all the other resources in the archive.
Not implemented by API Scufl2 API do not yet
automatically update the workflow bundle identifier. Refer to SCUFL2-41
To update the URI, use
Example representation in RDF/XML¶
(may be outdated)
<?xml version="1.0"?> <rdf:RDF xmlns="http://ns.taverna.org.uk/2010/scufl2#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ns.taverna.org.uk/2010/scufl2# http://ns.taverna.org.uk/2010/scufl2/scufl2.xsd http://www.w3.org/1999/02/22-rdf-syntax-ns# http://ns.taverna.org.uk/2010/scufl2/rdf.xsd" xsi:type="WorkflowBundleDocument" xml:base="./"> <WorkflowBundle rdf:about=""> <name>HelloWorld</name> <sameBaseAs rdf:resource="http://ns.taverna.org.uk/2010/workflowBundle/28f7c554-4f35-401f-b34b-516e9a0ef731/" /> <mainWorkflow rdf:resource="workflow/HelloWorld/" /> <workflow> <Workflow rdf:about="workflow/HelloWorld/"> <rdfs:seeAlso rdf:resource="workflow/HelloWorld.rdf" /> </Workflow> </workflow> <!-- <workflow> <Workflow rdf:about="workflow/SomeNestedWorkflow/"> <rdfs:seeAlso rdf:resource="workflow/SomeNestedWorkflow.rdf" /> </Workflow> </workflow> --> <mainProfile rdf:resource="profile/tavernaWorkbench/" /> <profile> <Profile rdf:about="profile/tavernaServer/"> <rdfs:seeAlso rdf:resource="profile/tavernaServer.rdf" /> </Profile> </profile> <profile> <Profile rdf:about="profile/tavernaWorkbench/"> <rdfs:seeAlso rdf:resource="profile/tavernaWorkbench.rdf" /> </Profile> </profile> <rdfs:seeAlso rdf:resource="annotation/workflowBundle.rdf" /> </WorkflowBundle> </rdf:RDF>
The above example defines the workflow bundle "HelloWorld".
It contains one workflow (
workflow/HelloWorld), which is also the main workflow.
(Any additional workflows are typically nested (and nested-nested, etc) workflows bound as activities in processors).
Two execution profiles are provided, and
profile/tavernaWorkbench is dedicated as the main profile.
- name (required) gives the human readable title for this workflow archive.
This is a subproperty of
- sameBaseAs (optional) gives a unique URI which is owl:sameAs with this workflow bundle and its children.
- workflow (required) must be included for all workflows included in this bundle.
Each workflow must have an rdfs:seeAlso link to the bundle resource that defines the workflow,
workflow/workflowName.rdfcorresponding to the non-information resource
- mainWorkflow (optional) refers to the top-level workflow of this bundle. Workflow bundles without a main workflow can be valid if, for instance, the bundled workflows are unconnected "workflow fragments." If there is a mainProfile, the workflow bundle must also have a mainWorkflow. The main workflow must always be listed under workflow.
- profile (optional) describes the profiles that specify how to execute the bundled workflows. In particular, the profile provides a set of configured activities bound to the processors for a particular run environment. If no profiles are specified, this is an abstract workflow bundle.
- mainProfile (optional) specifies the suggested main profile. Execution platforms unable to choose between the provided profiles can select this profile as a default. It is valid to have a workflow bundle without a main profile (even if it has other profiles), but any main profile must also be listed under profile.
- rdfs:seeAlso (optional) describes a link to annotations about the workflow bundle and its content. Traditionally found
annotation/workflowBundle.rdf, which should contain further links to annotations from different sources. For instance,
annotation/myExperiment.rdflists annotations included from myExperiment.
The workflow bundle document is the starting point for finding all workflow bundle resources within the archive. Therefore, each of the workflows and profiles must have a rdfs:seeAlso link to the bundle resource that defines it.
If alternate formats other than the required RDF/XML format are included in the bundle,
these formats can link to resources in other formats, for instance to a
@prefix : <http://ns.taverna.org.uk/2010/scufl2#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . <./> a :WorkflowBundle; :mainProfile <profile/tavernaWorkbench/>; :mainWorkflow <workflow/HelloWorld/>; :name "HelloWorld"; :profile <profile/tavernaServer/>, <profile/tavernaWorkbench/>; :sameBaseAs <http://ns.taverna.org.uk/2010/workflowBundle/28f7c554-4f35-401f-b34b-516e9a0ef731/>; :workflow <workflow/HelloWorld/>; rdfs:seeAlso <annotation/workflowBundle.ttl> . <profile/tavernaServer/> a :Profile; rdfs:seeAlso <profile/tavernaServer.ttl> . <profile/tavernaWorkbench/> a :Profile; rdfs:seeAlso <profile/tavernaWorkbench.ttl> . <workflow/HelloWorld/> a :Workflow; rdfs:seeAlso <workflow/HelloWorld.ttl> .
SCUFL2-compliant writers, when producing the workflow bundle document:
- Should write the workflow bundle RDF/XML document according to the SCUFL2 XML schema,
use the default namespace
xmlns="http://ns.taverna.org.uk/2010/scufl2#"and declare the
- Must ensure the workflow bundle RDF/XML document is valid RDF/XML and includes the properties deemed required by this specification. Conforming to the XML schema should ensure this.
- Should set the
- Should set rdf:about to
xml:baseis not set).
- Should declare a mainWorkflow and mainProfile.
- Must ensure that any workflow/profile has a relative rdfs:seeAlso link to a bundle resource in
application/rdf+xml, which defines that workflow / profile.
SCUFL2-compliant readers, when parsing a workflow bundle document:
May assume that a declared workflow/profile is defined in the referenced representation. For instance, in the code example below,
workflow/SomeNestedWorkflow.rdfmust contain a workflow definition for
<workflow> <Workflow rdf:about="workflow/SomeNestedWorkflow/"> <rdfs:seeAlso rdf:resource="workflow/SomeNestedWorkflow.rdf" /> </Workflow> </workflow>
May parse the
- May parse the
/workflowBundle.rdfaccording to the XML schema if the
xsi:type="WorkflowBundleDocument"is set on the