Scufl2 has moved to Apache (incubator) 

Information in this section is out of date!


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 defines 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 in /workflowBundle.rdf within the bundle archive.

If the archive is a workflow bundle, i.e. /mimetype is application/vnd.taverna.scufl2.workflow-bundle, then the META-INF/container.xml can define root files at alternative paths and media types. This specification requires that one of those formats is application/rdf+xml according to this specification.

Example META-INF/container.xml:

<?xml version="1.0"?>
<container version="1.0"
        <rootfile full-path="workflowBundle.ttl"
         media-type="text/turtle" />  
        <rootfile full-path="workflowBundle.rdf"
         media-type="application/rdf+xml" />  

This defines the RDF/XML root file to be /workflowBundle.rdf - with workflowBundle.ttl being an alternate representation the resource in Turtle format.

SCUFL2-compliant workflow bundle writers:

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 application/vnd.taverna.scufl2.workflow-bundle - but producers of such archives:

SCUFL2 compliant workflow bundle readers:


Workflow bundles and their resources must be declared with relative identifiers within the archive. In a application/vnd.taverna.scufl2.workflow-bundle 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 xml:base="./" and rdf:about="".

This means that one can mint a URI to refer to resources within the bundle archive, including the workflow bundle, workflows and representations. If returns a Scufl2 workflow bundle archive of the content type application/vnd.taverna.scufl2.workflow-bundle, then (assuming default structure of the archive):

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 easiest achieved by using the same folder technique as for the workflow representations:

Such embedded workflow bundles should include their constituent representations (such as workflow/HelloWorld.rdf) within that folder, for instance exampleWorkflowBundles/hello/workflow/HelloWorld.rdf to define exampleWorkflowBundles/hello/workflow/HelloWorld/ - but could also be shared among bundles, for instance both workflowBundle1.rdf and workflowBundle2.rdf might refer to workflow/Shared.rdf.

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 - for instance - including the trailing slash.

The semantics of sameBaseAs is a kind of recursive version of owl:sameAs - so also resources which URI start with the same will be included.

So if:

    @prefix : <> .
    @prefix rdfs: <> .

    <./>     a :WorkflowBundle;
         :name "HelloWorld";
         :sameBaseAs <>;
         :mainWorkflow <workflow/HelloWorld/>;
         :workflow <workflow/HelloWorld/>;

    <workflow/HelloWorld/>     a :Workflow;
         rdfs:seeAlso <workflow/HelloWorld.ttl> .


then also:

<./> = <>
<workflow/HelloWorld/ = <>
<workflow/HelloWorld.rdf> = <>

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.

Scufl2 API do not yet automatically update the workflow bundle identifier.SCUFL2-41

To update the URI, use workflowBundle.setSameBaseAs(WorkflowBundle.generateIdentifier()).

Example representation in RDF/XML

<?xml version="1.0"?>
<rdf:RDF xmlns=""
	xmlns:rdf="" xmlns:rdfs=""
	xsi:type="WorkflowBundleDocument" xml:base="./">
	<WorkflowBundle rdf:about="">
			rdf:resource="" />		
		<mainWorkflow rdf:resource="workflow/HelloWorld/" />
			<Workflow rdf:about="workflow/HelloWorld/">
				<rdfs:seeAlso rdf:resource="workflow/HelloWorld.rdf" />
			<Workflow rdf:about="workflow/SomeNestedWorkflow/">
				<rdfs:seeAlso rdf:resource="workflow/SomeNestedWorkflow.rdf" />
		<mainProfile rdf:resource="profile/tavernaWorkbench/" />
			<Profile rdf:about="profile/tavernaServer/">
				<rdfs:seeAlso rdf:resource="profile/tavernaServer.rdf" />
			<Profile rdf:about="profile/tavernaWorkbench/">
				<rdfs:seeAlso rdf:resource="profile/tavernaWorkbench.rdf" />
		<rdfs:seeAlso rdf:resource="annotation/workflowBundle.rdf" />

This 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.


Bundle links

The workflow bundle document is the starting point for finding all workflow bundle resources within the archive. Each of the workflows and profiles must therefore have a rdfs:seeAlso link to the bundle resource that defines it.

If alternate formats other than the required RDF/XML format is included in the bundle, these formats can therefore link to resources in other formats, for instance in an additional workflowBundle.ttl (Turtle format):

    @prefix : <> .
    @prefix rdfs: <> .
    <./>     a :WorkflowBundle;
         :mainProfile <profile/tavernaWorkbench/>;
         :mainWorkflow <workflow/HelloWorld/>;
         :name "HelloWorld";
         :profile <profile/tavernaServer/>,
         :sameBaseAs <>;
         :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:

SCUFL2 compliant readers, when parsing a workflow bundle document: