You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by bu...@apache.org on 2015/03/12 17:42:02 UTC

svn commit: r943561 [2/2] - in /websites/staging/taverna/trunk: cgi-bin/ content/ content/documentation/scufl2/combined.html

Added: websites/staging/taverna/trunk/content/documentation/scufl2/combined.html
==============================================================================
--- websites/staging/taverna/trunk/content/documentation/scufl2/combined.html (added)
+++ websites/staging/taverna/trunk/content/documentation/scufl2/combined.html Thu Mar 12 16:42:02 2015
@@ -0,0 +1,1281 @@
+<!DOCTYPE html>
+<html lang="en">
+      <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">	  
+    <meta name="viewport" content="width=device-width, initial-scale=1">      
+    <title>Apache Taverna - SCUFL2 Taverna Language</title>
+
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+    <meta property="og:image" content="/img/taverna-logo-145x134.png" />
+
+	<link rel="shortcut icon" href="/favicon.ico">
+	<link rel="icon" type="image/png" sizes="145x134" href="/img/taverna-logo-145x134.png">
+	<link rel="apple-touch-icon" sizes="145x134" href="/img/taverna-logo-145x134.png">
+
+    <link rel="stylesheet" href="/lib/bootstrap/css/bootstrap.min.css">
+    <link rel="stylesheet" href="/lib/bootstrap/css/bootstrap-theme.min.css">
+    <link rel="stylesheet" href="/css/sticky-footer-navbar.css">
+    <link rel="stylesheet" href="/css/taverna.css">
+    <link rel="stylesheet" href="/css/pygments.css">
+
+    
+
+    
+    <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file to you under the Apache License, Version 2.0 (the &quot;License&quot;); you may not use this file except in compliance with the License.  You may obtain a copy of the License at . http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the specific language governing permissions and limitations under the License. -->
+
+    <!-- JSON-LD markup for Google Structured Data -->
+	
+	  <!-- generic JSON-LD for this page -->
+	  <script type="application/ld+json">  
+		{
+			"@context" : "http://schema.org",
+			"@type" : ["CreativeWork"],
+			"@id": "",
+			"name" : "SCUFL2 Taverna Language",
+			"publisher" : {
+				"@type" : "Organization", 
+				"url" : "http://www.apache.org/",
+				"name" : "The Apache Software Foundation (ASF)" 
+			},
+			"license": { 
+				"@type": "CreativeWork",
+				"@id": "http://www.apache.org/licenses/LICENSE-2.0",
+				"url": "http://www.apache.org/licenses/LICENSE-2.0",
+				"name": "Apache License, Version 2.0"
+			}
+		}		
+</script>
+	  
+  </head>
+
+
+  <body>
+
+              <!-- Static navbar -->
+      <nav class="navbar navbar-default no-margin-bottom" role="navigation">
+        <div class="container">
+          <div class="navbar-header">
+            <button type="button" class="navbar-toggle collapsed no-margin-bottom" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
+              <span class="sr-only">Toggle navigation</span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+              <span class="icon-bar"></span>
+            </button>
+			<a class="navbar-brand" href="/"><img src="/img/taverna-logo-145x134.png" alt="">Apache Taverna</a>
+			  
+          </div>
+          <div id="navbar" class="navbar-collapse collapse">
+            <ul class="nav navbar-nav">              
+                <li class="dropdown">
+					<a data-toggle="dropdown" role="button" aria-expanded="false">Introduction<span class="caret"></span></a>
+					<ul class="dropdown-menu"  role="menu">
+					   <li><a  href="/introduction">Introduction home</a></li>
+					   <li><a href="/introduction/taverna-features">Taverna features</a></li>
+					   <li><a href="/introduction/why-use-workflows">Why use workflows?</a></li>
+					   <li><a href="/introduction/what-is-in-silico-experimentation">What is ‘in silico’ experimentation?</a></li>
+					   <li><a href="/introduction/what-is-a-workflow-management-system">What is a Workflow Management System?</a></li>
+					   <li><a href="/introduction/how-can-taverna-help-me">How can Taverna help me?</a></li>
+					   <li><a href="/introduction/services-in-taverna">Services in Taverna</a></li>
+					   <li><a href="/introduction/related-projects">Related projects</a></li>
+					   <li><a href="/introduction/chemistry-web-services">Chemistry-web-services</a></li>
+                       <li><a href="/introduction/taverna-in-use">Taverna in use</a></li>
+				       <li><a href="/introduction/works-with">Works with...</a></li>
+                       <li><a href="/introduction/roadmap">Raod Map</a></li>						
+					</ul>
+				</li>
+                <li class="dropdown">
+					<a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Documentation<span class="caret"></span></a>
+                  <ul class="dropdown-menu" role="menu">
+					  <li><a href="/documentation">Documentation home</a></li>
+					  <li><a href="/documentation/glossary">Glossary</a></li>
+					  <li><a href="/documentation/quick-start-guide">Quick start guide</a></li>
+					  <li><a href="/documentation/scufl2">Taverna's SCUFL2 Language</a></li>
+					  <li><a href="/documentation/components">Components</a></li>
+					  <li><a href="/documentation/interaction">Interactions</a></li>
+					  <li><a href="/documentation/tutorials">Tutorials</a></li>
+					  <li><a href="/documentation/videos">Videos</a></li>
+					  <li><a href="/documentation/example-workflows">Example workflows</a></li>
+					  <li><a href="/documentation/service-sets">Service sets</a></li>
+					  <li><a href="/documentation/provenance">Provenance management</a></li>
+					  <li><a href="/documentation/command-line">command-line</a></li>
+					  <li><a href="/documentation/server">Taverna Server</a></li>
+					  <li><a href="/documentation/taverna-player">Taverna Player</a></li>
+					  <li><a href="/documentation/plugins">Plugins</a></li>
+					  <li><a href="/documentation/training-and-workshops">Training and workshops</a></li>
+					  <li><a href="/documentation/web-service-developers">Web service developers</a></li>
+					  <li><a href="/documentation/#tools">Tools and Services</a></li>
+				  </ul>
+    			</li>
+
+                   <li class="dropdown">
+					<a href="/documentation/scufl2" data-toggle="dropdown" role="button" aria-expanded="false">Scufl2<span class="caret"></span></a>
+					<ul class="dropdown-menu"  role="menu">
+					   <li><a href="/documentation/scufl2/language">Language</a></li>
+					   <li><a href="/documentation/scufl2/bundle">Workflow Bundle</a></li>
+					   <li><a href="/documentation/scufl2/workflow">Workflow</a></li>
+					   <li><a href="/documentation/scufl2/profile">Profile</a></li>
+					   <li><a href="/documentation/scufl2/taverna_bundle">Taverna Bundle</a></li>
+					   <li><a href="/documentation/scufl2/datalink">Datalink</a></li>
+					   <li><a href="/documentation/scufl2/api">API</a></li>
+					   <li><a href="/ns">namespaces</a></li>
+						<li><a href="/documentation/scufl2/uris">URIs</a></li>
+                       <li><a href="/documentation/scufl2/ontology">Ontology</a></li>
+				       <li><a href="/download/scufl2">Download</a></li>
+					</ul>
+				</li>
+
+                    <li class="dropdown">
+					<a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Download<span class="caret"></span></a>
+                  <ul class="dropdown-menu" role="menu">
+					  <li><a href="/download">Which Taverna to use</a></li>
+					  <li><a href="/download/workbench">TavernaWorkbench</a></li>
+					  <li><a href="/download/scufl2">Taverna's SCUFL2 Language</a></li>
+					  <li><a href="/download/command-line-tool">Taverna Command Line</a></li>
+					  <li><a href="/download/server">Taverna Server</a></li>
+					  <li><a href="/documentation/plugins">Plugins</a></li>
+					  <li><a href="/download/code">Source Code</a></li>
+					  <li><a href="/download/maven">Maven Repository</a></li>
+					  <li><a href="/download/system-requirements">System Requirements</a></li>
+					  <li><a href="/download/pre-apache">Taverna 2.x (Pre-Apache)</a></li>
+				  </ul>
+				</li>
+                <li class="dropdown">
+					<a href="/community" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Community<span class="caret"></span></a>
+                  <ul class="dropdown-menu" role="menu">
+					  <li><a href="/community">Community home</a></li>
+					  <li><a href="/community#mailinglists">Mailing Lists</a></li>
+					  <li><a href="/community#contribute">Contribute</a></li>
+					  <li><a href="/community#reportbugs">Report a Bug</a></li>
+				  </ul>
+				</li>
+            </ul>
+             
+              <form >
+                      
+                      
+                      <!--<input type="submit" id="submit" value="Search">-->
+                    </form>
+              
+              <form class="navbar-form navbar-right" role="search"
+                  name="search" id="search" action="http://www.google.com/search" method="get">
+                      <input value="taverna.incubator.apache.org" name="sitesearch" type="hidden"/>
+                      <div class="form-group input-group">
+                          <input type="text" name="q" id="query" placeholder="Search" class="form-control">
+						  <span class="input-group-btn">
+                            <button type="submit" class="btn btn-default">Search</button>
+						  </span>
+                      </div>                  
+              </form>
+
+             <ul class="nav navbar-nav navbar-right">                
+            <li class="dropdown">
+                <a href="http://www.apache.org/" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">ASF<span class="caret"></span></a>
+                <ul class="dropdown-menu" role="menu">
+                    <li><a href="http://www.apache.org/">Apache Software Foundation</a></li>
+                    <li><a href="http://www.apache.org/foundation/how-it-works.html">How it works</a></li>
+                    <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+                    <li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
+                    <li><a href="http://incubator.apache.org/projects/taverna.html">Taverna Incubation Status</a></li>
+                </ul>
+              </li>
+            </ul>
+          </div><!--/.nav-collapse -->
+        </div><!--/.container-->
+      </nav>
+
+
+    <div id="page" class="container">
+		<div class="row">
+			<div class="hidden-xs col-sm-3 col-md-2 col-lg-2">
+			</div>
+			<div class="col-xs-12 col-sm-9 col-md-10 col-lg-10">
+			   <h1>SCUFL2 Taverna Language</h1>
+			</div>		
+        <div>
+		<div class="row">
+			<div class="hidden-xs col-sm-3 col-md-2 col-lg-2">
+			  <ul class="nav nav-pills nav-stacked">               
+   <li><a href="/documentation/scufl2">Scufl2 home</a></li>
+   <li><a href="/documentation/scufl2/bundle">Workflow Bundle</a></li>
+   <li><a href="/documentation/scufl2/workflow">Workflow</a></li>
+   <li><a href="/documentation/scufl2/profile">Profile</a></li>
+   <li><a href="/documentation/scufl2/taverna_bundle">Taverna Bundle</a></li>
+   <li><a href="/documentation/scufl2/datalink">Datalink</a></li>
+   <li><a href="/documentation/scufl2/api">API</a></li>
+   <li><a href="/documentation/scufl2/language">Language</a></li>
+   <li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" href="/ns">Namespace
+        <span class="caret"></span></a>
+    <ul class="dropdown-menu">
+      <li><a href="/ns">Namespace home</a></li>
+      <li><a href="/ns/2008/xml/t2flow/">t2flow</a></li>
+	  <li><a href="/ns/2010/scufl2/">sculf2</a></li>
+      <li><a href="/ns/2010/taverna/">taverna</a></li>
+	  <li><a href="/ns/2010/workflowBundle/">workflowBundle</a></li>
+	  <li><a href="/ns/2011/data/">data</a></li>
+	  <li><a href="/ns/2011/run/">run</a></li>
+	  <li><a href="/ns/2012/component/">component</a></li>
+	  <li><a href="/ns/2015/ore">ore</a></li>
+    </ul>
+   </li>
+   <li><a href="/documentation/scufl2/uris">URIs</a></li>
+   <li><a href="/documentation/scufl2/ontology">Ontology</a></li>
+   <li><a href="/download/scufl2">Download</a></li>
+</ul>
+
+			</div>
+			<div class="col-xs-12 col-sm-9 col-md-10 col-lg-10">
+			   <div id="content"><p>SCUFL2 is the new (since Taverna 3) mechanism for specifying Taverna workflows. 
+SCUFL2 defines a model, a workflow bundle file format (.wfbundle), and a Java API for working with workflow structures. 
+SCUFL2 is the workflow language for Taverna 3, and replaces Taverna 2's t2flow format.</p>
+<h2 id="summary">Summary</h2>
+<p>SCUFL2 is the Taverna 3 mechanism for specifying Taverna workflows. 
+SCUFL2 adopts Linked Data technology and preservation methodologies to create a platform-independent workflow language 
+   that can be inspected, modified, created and executed.</p>
+<p>SCUFL2 comes with a <a href="/documentation/scufl2/api">Java API</a> that can be used for programmatic access to read and write SCUFL2 
+   <a href="/documentation/scufl2/bundle">workflow bundles</a>. 
+A workflow bundle is a structured ZIP file with the workflow definitions included as XML documents. 
+Those workflow documents are described by an XML Schema and are also valid RDF/XML. 
+The XML Schema allows tools to read and write SCUFL2 workflow definitions as regular structured XML. 
+The RDF allows RDF-enabled tools to link workflow definitions with external resources.</p>
+<p>The workflow structure is defined using an <a href="/documentation/scufl2/ontology">OWL ontology</a>
+   and annotated with URIs so that third parties can form semantic statements about any component of a Scufl2 workflow, 
+   for example to state that a particular service produces outputs of a certain type, 
+   or that a data link was added by a specific researcher.</p>
+<p>Semantic annotations and a manifest for the bundle declare the purpose of, 
+   and links between the different components forming a workflow. 
+This allows third parties to extract and append annotations about data and services used by the workflow.</p>
+<h2 id="motivation">Motivation</h2>
+<p>The t2flow serialization format suffers from being very close to the Java object model, 
+   and contains various items that are simply Java beans serialized using <em>XMLBeans</em>. 
+As the t2flow format is very verbose, it can be difficult to deal with for third party software to do 
+   <strong>inspection</strong> ("Which services does this workflow use?"), <strong>modification</strong> 
+   ("Change all calls to <em>broken.com</em> to <em>fixed.com</em>") and <strong>generation</strong> 
+   ("Build a custom workflow from a button").</p>
+<p>Developers have informed us that the old SCUFL format of Taverna 1 was significantly easier to work with. 
+However, this format also has its caveats, like no schema, 
+   unidentified ways to extend service definitions for Taverna plugins and 
+   not supporting various new features in the Taverna 2 engine.</p>
+<p>We have therefore decided to form a new serialisation format for workflows, called <strong>SCUFL2</strong>.</p>
+<h2 id="overview">Overview</h2>
+<p>SCUFL2 consists of:</p>
+<ul>
+<li><a href="/documentation/scufl2/language">SCUFL2 language</a></li>
+<li>SCUFL2 <a href="/documentation/scufl2/bundle">Workflow Bundle</a> format</li>
+<li><a href="/documentation/scufl2/api">SCUFL2 API</a> for Java</li>
+</ul>
+<h1 id="scufl2-workflowbundle">Scufl2-WorkflowBundle</h1>
+<p>The entry point of the Taverna Workflow Bundle.</p>
+<p>Defines the <em>workflows</em> and <em>profiles</em> of a 
+   <a href="/documentation/scufl2/taverna_bundle">Taverna Workflow Bundle</a>.
+The <em>main workflow</em> is also normally defined, which would be the top-level workflow to execute. 
+The profiles defines how these workflows can be realised and <em>executed</em> on different environments, 
+   one of which can be suggested as the <em>main profile</em>.</p>
+<h2 id="bundle-path-and-root-files">Bundle path and root files</h2>
+<p>The <strong>workflow bundle document</strong> in RDF/XML format <strong>should</strong> be in in <code>/workflowBundle.rdf</code> within the bundle archive.</p>
+<p>If the archive is a <a href="/documentation/scufl2/taverna_bundle">workflow bundle</a>, 
+   i.e. <code>/mimetype</code> is <code>application/vnd.taverna.scufl2.workflow-bundle</code>, 
+   then the <code>META-INF/container.xml</code> can define <strong>root files</strong> at alternative paths and media types. 
+This specification requires that one of those formats is <code>application/rdf+xml</code> according to this specification. </p>
+<p>Example <code>META-INF/container.xml</code>: (may be outdated)</p>
+<div class="codehilite"><pre><span class="cp">&lt;?xml version=&amp;quot;1.0&amp;quot;?&gt;</span>
+<span class="nt">&lt;container</span> <span class="na">version=</span><span class="s">&quot;1.0&quot;</span>
+    <span class="na">xmlns=</span><span class="s">&quot;;urn:oasis:names:tc:opendocument:xmlns:container&quot;</span><span class="nt">&gt;</span>
+    <span class="nt">&lt;rootfiles&gt;</span>
+        <span class="nt">&lt;rootfile</span> <span class="na">full-path=</span><span class="s">&quot;workflowBundle.ttl&quot;</span>
+         <span class="na">media-type=</span><span class="s">&quot;text/turtle&quot;</span> <span class="nt">/&gt;</span>  
+         <span class="nt">&lt;rootfile</span> <span class="na">full-path=</span><span class="s">&quot;workflowBundle.rdf&quot;</span>
+         <span class="na">media-type=</span><span class="s">&quot;application/rdf+xml&quot;</span> <span class="nt">/&gt;</span>  
+    <span class="nt">&lt;/rootfiles&gt;</span>
+<span class="nt">&lt;/container&gt;</span>
+</pre></div>
+
+
+<p>This defines the RDF/XML root file to be <code>/workflowBundle.rdf</code> - 
+   with <code>workflowBundle.ttl</code> being an alternate representation the resource in Turtle format.</p>
+<p>SCUFL2-compliant workflow bundle writers:</p>
+<ul>
+<li><strong>Must</strong> set the bundle <strong>mimetype</strong> to <code>application/vnd.taverna.scufl2.workflow-bundle</code></li>
+<li><strong>Must</strong> add a workflow bundle document in <code>application/rdf+xml</code> format</li>
+<li><strong>Should</strong> store the workflow bundle document in <code>/workflowBundle.rdf</code></li>
+<li><strong>Must not</strong> contain a resource <code>/workflowBundle.rdf</code> which is not the workflow bundle document</li>
+<li>If the <code>application/rdf+xml</code> representation is not in <code>/workflowBundle.rdf</code>, 
+     the writer <strong>must</strong> include <code>META-INF/container.xml</code> with the required <code>&lt;rootfile&gt;</code> entries.</li>
+<li><code>META-INF/container.xml</code>, if present, <strong>must</strong> contain one and only one <code>rootfile</code> with the media-type 
+     <code>application/rdf+xml</code>. 
+   rootfiles of other media-types <strong>may</strong> be included, but their formats and restrictions are not defined by this specification.</li>
+<li><strong>May</strong> Add additional representation of the workflow bundle document (and other documents). 
+   Alternates of the workflow bundle document <strong>should</strong> be included in the <code>META-INF/container.xml</code>, 
+     but only if they can be considered to fully specify the workflow bundle as in the RDF/XML format. 
+   (So for instance a <code>text/html</code> or <code>image/png</code> representation would not normally be considered a 
+     <strong>rootfile</strong> if it does not include all the structural information from the RDF/XML representation as specified here)</li>
+</ul>
+<p>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 <code>application/vnd.taverna.scufl2.workflow-bundle</code> - 
+   but producers of such archives:</p>
+<ul>
+<li><strong>Should</strong> store the workflow bundle document in <code>/workflowBundle.rdf</code>, 
+      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).</li>
+<li><strong>Should</strong> have a <code>mimetype</code> and <code>META-INF/container.xml</code> resource which declares the archive's main entry point, 
+     like the data bundle document. 
+   The mime type <strong>must not</strong> be <code>application/vnd.taverna.scufl2.workflow-bundle</code> and 
+      the root files <strong>should not</strong> be the workflow bundle document.</li></li>
+<li><strong>Should</strong> link to the workflow bundle document from a resource within the archive which (ultimately) 
+      is linked to from one of the <code>rootfile</code> documents. 
+   Such documents <strong>should</strong> be in RDF/XML format.</li>
+<li><strong>Should</strong> declare the media type of the RDF/XML workflow bundle document as <code>application/rdf+xml</code> 
+      in its <code>META-INF/manifest.xml</code></li>
+</ul>
+<p>SCUFL2 compliant workflow bundle readers:</p>
+<ul>
+<li><strong>Should</strong> assume that <code>/workflowBundle.rdf</code> - if present - 
+       is the root workflow bundle in the <code>application/rdf+xml</code> format specified here.</li>
+<li><strong>Should</strong> assume that if the archive's <code>mimetype</code> is <code>application/vnd.taverna.scufl2.workflow-bundle</code>, 
+       then the <code>rootfile</code> in <code>META-INF/container.xml</code> with the media type {{application/rdf+xml}) 
+       is the root workflow bundle document.</li>
+<li><strong>May</strong> assume that any alternate formats listed as a <code>rootfile</code> in a <code>application/vnd.taverna.scufl2.workflow-bundle</code> 
+       archive would fully cover the specification of the RDF/XML representation, and read such formats instead.</li>
+<li><strong>May</strong> assume that any <code>application/rdf+xml</code> document with a <code>xsi:type="WorkflowBundleDocument"</code> 
+       can be parsed according to the Scufl2 XML schema</li>
+</ul>
+<h2 id="identifiers">Identifiers</h2>
+<p>Workflow bundles and their resources <strong>must</strong> be declared with relative identifiers within the archive. 
+In a <code>application/vnd.taverna.scufl2.workflow-bundle</code> archive, 
+  the workflow bundle <strong>must</strong> be identified as the root of the archive. 
+If the Workflow Bundle document is in <code>workflowBundle.rdf</code> within the archive, the workflow identifier is <code>./</code>.<br />
+This <strong>should</strong> be achieved by setting <code>xml:base="./"</code> and <code>rdf:about=""</code>.</p>
+<p>This means that one can mint a URI to refer to resources within the bundle archive, including the workflow bundle, 
+   workflows and representations. 
+If <code>http://example.com/myWfBundle.scufl2</code> returns a <a href="/documentation/scufl2/taverna_bundle">Scufl2 workflow bundle</a> 
+   archive of the content type <code>application/vnd.taverna.scufl2.workflow-bundle</code>,<br />
+   then (assuming default structure of the archive):</p>
+<ul>
+<li><code>http://example.com/myWfBundle.scufl2</code> identifies for the Workflow Bundle representation (the archive)</li>
+<li><code>http://example.com/myWfBundle.scufl2/</code> identifies the Workflow Bundle (as described here)</li>
+<li><code>http://example.com/myWfBundle.scufl2/workflowBundle.rdf</code> identifies the Workflow Bundle representation in RDF/XML</li>
+<li><code>http://example.com/myWfBundle.scufl2/workflow/HelloWorld/</code> identifies the "HelloWorld" 
+      <a href="/documentation/scufl2/workflow">workflow</a> within the bundle</li>
+<li><code>http://example.com/myWfBundle.scufl2/workflow/HelloWorld.rdf</code> identifies the "HelloWorld" workflow representation in RDF/XML</li>
+<li><code>http://example.com/myWfBundle.scufl2/workflow/HelloWorld/processor/Hello/</code> identifies the "Hello" 
+      processor within the "HelloWorld" workflow.</li>
+</ul>
+<h3 id="embedded-workflow-bundles">Embedded workflow bundles</h3>
+<p>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 <strong>should</strong> be unique within the archive. 
+This is easiest achieved by using the same folder technique as for the workflow representations:</p>
+<ul>
+<li><code>workflowBundle1.rdf</code> can define <code>workflowBundle1/</code></li>
+<li><code>exampleWorkflowBundles/hello.rdf</code> defines <code>exampleWorkflowBundles/hello/</code></li>
+</ul>
+<p>Such embedded workflow bundles <strong>should</strong> include their constituent representations 
+   (such as <code>workflow/HelloWorld.rdf</code>) within that folder, 
+   for instance <code>exampleWorkflowBundles/hello/workflow/HelloWorld.rdf</code> to define 
+   <code>exampleWorkflowBundles/hello/workflow/HelloWorld/</code> - but could also be shared among bundles, 
+   for instance both <code>workflowBundle1.rdf</code> and <code>workflowBundle2.rdf</code> might refer to <code>workflow/Shared.rdf</code>.</p>
+<h3 id="global-workflow-bundle-identifiers">Global workflow bundle identifiers</h3>
+<p>Workflow bundles <strong>should</strong> declare a <strong>sameBaseAs</strong> reference to a globally unique non-informational URI.</p>
+<p>Anyone can generate such a URI using the form <code>http://ns.taverna.org.uk/2010/workflowBundle/UUID/</code> - 
+   for instance <code>http://ns.taverna.org.uk/2010/workflowBundle/28f7c554-4f35-401f-b34b-516e9a0ef731/</code> - 
+   including the trailing slash.</p>
+<p>The semantics of <strong>sameBaseAs</strong> is a kind of recursive version of <strong>owl:sameAs</strong> - 
+   so also resources which URI start with the same will be included.</p>
+<p>So if:</p>
+<div class="codehilite"><pre><span class="p">@</span><span class="n">prefix</span> <span class="p">:</span> <span class="o">&lt;</span><span class="p">;</span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">ns</span><span class="p">.</span><span class="n">taverna</span><span class="p">.</span><span class="n">org</span><span class="p">.</span><span class="n">uk</span><span class="o">/</span>2010<span class="o">/</span><span class="n">scufl2</span><span class="o">&gt;</span> <span class="p">.</span>
+<span class="p">@</span><span class="n">prefix</span> <span class="n">rdfs</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">www</span><span class="p">.</span><span class="n">w3</span><span class="p">.</span><span class="n">org</span><span class="o">/</span>2000<span class="o">/</span>01<span class="o">/</span><span class="n">rdf</span><span class="o">-</span><span class="n">schema</span><span class="o">&gt;</span> <span class="p">.</span>
+
+<span class="o">&lt;./&gt;</span>     <span class="n">a</span> <span class="p">:</span><span class="n">WorkflowBundle</span><span class="p">;</span>
+     <span class="p">:</span><span class="n">name</span> &quot;<span class="n">HelloWorld</span>&quot;<span class="p">;</span>
+     <span class="p">:</span><span class="n">sameBaseAs</span> <span class="o">&lt;</span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">ns</span><span class="p">.</span><span class="n">taverna</span><span class="p">.</span><span class="n">org</span><span class="p">.</span><span class="n">uk</span><span class="o">/</span>2010<span class="o">/</span><span class="n">workflowBundle</span><span class="o">/</span>28<span class="n">f7c554</span><span class="o">-</span>4<span class="n">f35</span><span class="o">-</span>401<span class="n">f</span><span class="o">-</span><span class="n">b34b</span><span class="o">-</span>516<span class="n">e9a0ef731</span><span class="o">/&gt;</span><span class="p">;</span>
+     <span class="p">:</span><span class="n">mainWorkflow</span> <span class="o">&lt;</span><span class="n">workflow</span><span class="o">/</span><span class="n">HelloWorld</span><span class="o">/&gt;</span><span class="p">;</span>
+     <span class="p">:</span><span class="n">workflow</span> <span class="o">&lt;</span><span class="n">workflow</span><span class="o">/</span><span class="n">HelloWorld</span><span class="o">/&gt;</span><span class="p">;</span>
+
+<span class="o">&lt;</span><span class="n">workflow</span><span class="o">/</span><span class="n">HelloWorld</span><span class="o">/&gt;</span>     <span class="n">a</span> <span class="p">:</span><span class="n">Workflow</span><span class="p">;</span>
+     <span class="n">rdfs</span><span class="p">:</span><span class="n">seeAlso</span> <span class="o">&lt;</span><span class="n">workflow</span><span class="o">/</span><span class="n">HelloWorld</span><span class="p">.</span><span class="n">ttl</span><span class="o">&gt;</span> <span class="p">.</span>
+</pre></div>
+
+
+<p>then also:</p>
+<p><code>&lt;./&gt;</code>= <code>&lt;http://ns.taverna.org.uk/2010/workflowBundle/28f7c554-4f35-401f-b34b-516e9a0ef731/&gt;</code> <br />
+<code>&lt;workflow/HelloWorld/&gt;</code> = <code>&lt;http://ns.taverna.org.uk/2010/workflowBundle/28f7c554-4f35-401f-b34b-516e9a0ef731/workflow/HelloWorld/&gt;</code> <br />
+<code>&lt;workflow/HelloWorld.rdf&gt;</code> = <code>&lt;http://ns.taverna.org.uk/2010/workflowBundle/28f7c554-4f35-401f-b34b-516e9a0ef731/workflow/HelloWorld.rdf&gt;</code></p>
+<p>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.</p>
+<h4 id="updating-the-uuid">Updating the UUID</h4>
+<p>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.</p>
+<blockquote>
+<p><img alt="" src="/img/warning.png" /><strong>Not implemented by API</strong> Scufl2 API do not yet</p>
+<p>automatically update the workflow bundle identifier. 
+<a href="http://www.mygrid.org.uk/dev/issues/browse/SCUFL2-41">SCUFL2-41</a></p>
+<p>To update the URI, use <code>workflowBundle.setSameBaseAs(WorkflowBundle.generateIdentifier())</code>.</p>
+</blockquote>
+<h2 id="example-representation-in-rdfxml">Example representation in RDF/XML</h2>
+<p>(may be outdated)</p>
+<div class="codehilite"><pre><span class="cp">&lt;?xml version=&quot;1.0&quot;?&gt;</span>
+<span class="nt">&lt;rdf:RDF</span> <span class="na">xmlns=</span><span class="s">&quot;http://ns.taverna.org.uk/2010/scufl2#&quot;</span>
+    <span class="na">xmlns:rdf=</span><span class="s">&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;</span> <span class="na">xmlns:rdfs=</span><span class="s">&quot;http://www.w3.org/2000/01/rdf-schema#&quot;</span>
+    <span class="na">xmlns:xsi=</span><span class="s">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>
+    <span class="na">xsi:schemaLocation=</span><span class="s">&quot;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&quot;</span>
+    <span class="na">xsi:type=</span><span class="s">&quot;WorkflowBundleDocument&quot;</span> <span class="na">xml:base=</span><span class="s">&quot;./&quot;</span><span class="nt">&gt;</span>
+    <span class="nt">&lt;WorkflowBundle</span> <span class="na">rdf:about=</span><span class="s">&quot;&quot;</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;name&gt;</span>HelloWorld<span class="nt">&lt;/name&gt;</span>
+        <span class="nt">&lt;sameBaseAs</span>
+            <span class="na">rdf:resource=</span><span class="s">&quot;http://ns.taverna.org.uk/2010/workflowBundle/28f7c554-4f35-401f-b34b-516e9a0ef731/&quot;</span> <span class="nt">/&gt;</span>      
+        <span class="nt">&lt;mainWorkflow</span> <span class="na">rdf:resource=</span><span class="s">&quot;workflow/HelloWorld/&quot;</span> <span class="nt">/&gt;</span>
+        <span class="nt">&lt;workflow&gt;</span>
+            <span class="nt">&lt;Workflow</span> <span class="na">rdf:about=</span><span class="s">&quot;workflow/HelloWorld/&quot;</span><span class="nt">&gt;</span>
+                <span class="nt">&lt;rdfs:seeAlso</span> <span class="na">rdf:resource=</span><span class="s">&quot;workflow/HelloWorld.rdf&quot;</span> <span class="nt">/&gt;</span>
+            <span class="nt">&lt;/Workflow&gt;</span>
+        <span class="nt">&lt;/workflow&gt;</span>
+        <span class="c">&lt;!--</span>
+<span class="c">        &lt;workflow&gt;</span>
+<span class="c">            &lt;Workflow rdf:about=&quot;workflow/SomeNestedWorkflow/&quot;&gt;</span>
+<span class="c">                &lt;rdfs:seeAlso rdf:resource=&quot;workflow/SomeNestedWorkflow.rdf&quot; /&gt;</span>
+<span class="c">            &lt;/Workflow&gt;</span>
+<span class="c">        &lt;/workflow&gt;</span>
+<span class="c">        --&gt;</span>
+        <span class="nt">&lt;mainProfile</span> <span class="na">rdf:resource=</span><span class="s">&quot;profile/tavernaWorkbench/&quot;</span> <span class="nt">/&gt;</span>
+        <span class="nt">&lt;profile&gt;</span>
+            <span class="nt">&lt;Profile</span> <span class="na">rdf:about=</span><span class="s">&quot;profile/tavernaServer/&quot;</span><span class="nt">&gt;</span>
+                <span class="nt">&lt;rdfs:seeAlso</span> <span class="na">rdf:resource=</span><span class="s">&quot;profile/tavernaServer.rdf&quot;</span> <span class="nt">/&gt;</span>
+            <span class="nt">&lt;/Profile&gt;</span>
+        <span class="nt">&lt;/profile&gt;</span>
+        <span class="nt">&lt;profile&gt;</span>
+            <span class="nt">&lt;Profile</span> <span class="na">rdf:about=</span><span class="s">&quot;profile/tavernaWorkbench/&quot;</span><span class="nt">&gt;</span>
+                <span class="nt">&lt;rdfs:seeAlso</span> <span class="na">rdf:resource=</span><span class="s">&quot;profile/tavernaWorkbench.rdf&quot;</span> <span class="nt">/&gt;</span>
+            <span class="nt">&lt;/Profile&gt;</span>
+        <span class="nt">&lt;/profile&gt;</span>
+        <span class="nt">&lt;rdfs:seeAlso</span> <span class="na">rdf:resource=</span><span class="s">&quot;annotation/workflowBundle.rdf&quot;</span> <span class="nt">/&gt;</span>
+    <span class="nt">&lt;/WorkflowBundle&gt;</span>
+<span class="nt">&lt;/rdf:RDF&gt;</span>
+</pre></div>
+
+
+<p>This example defines the workflow bundle "HelloWorld". 
+It contains one workflow <code>workflow/HelloWorld</code>, which is also the <strong>main workflow</strong>. 
+Any additional workflows are typically nested (and nested-nested, etc) workflows bound as activities in processors). 
+Two execution profiles are provided, and <code>profile/tavernaWorkbench</code> is dedicated as the <strong>main profile</strong>.</p>
+<h2 id="properties">Properties</h2>
+<ul>
+<li><strong>name</strong> (required) gives the human readable title for this workflow archive. 
+     This is a subproperty of <code>dc:title</code>.</li>
+<li><strong>sameBaseAs</strong> (optional) gives a unique URI which is <strong>owl:sameAs</strong> with this workflow bundle and its children.</li>
+<li><strong>workflow</strong> (required) All <a href="/documentation/scufl2/workflow">workflows</a> included in this bundle. 
+     Each workflow must have an <strong>rdfs:seeAlso</strong> link to the bundle resource that defines the workflow, 
+       typically <code>workflow/workflowName.rdf</code> corresponding to the non-information resource <code>workflow/workflowName/</code>.</li>
+<li><strong>mainWorkflow</strong> (optional) The reference to the top-level <a href="/documentation/scufl2/workflow">workflow</a> of this bundle. 
+   It is valid to have a workflow bundle without a main workflow, 
+      for instance if the bundled workflows are unconnected "workflow fragments". 
+   If there is a <strong>mainProfile</strong> the workflow bundle must also have a <strong>mainWorkflow</strong>. 
+   The main workflow must always be listed under <strong>workflow</strong>.</li>
+<li><strong>profile</strong> (optional) <a href="/wiki/display/developer/Scufl2-Profile">profiles</a> specifying how to <strong>execute</strong> 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.</li></li>
+<li><strong>mainProfile</strong> (optional) the suggested <strong>main profile</strong>. 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 be listed under <strong>profile</strong>.</li></li>
+<li><strong>rdfs:seeAlso</strong> (optional) link to annotations about the workflow bundle and its content. Traditionally found in <code>annotation/workflowBundle.rdf</code>, which should contain further links to annotations from different sources, for instance <code>annotation/myExperiment.rdf</code> for annotations included from myExperiment.</li></li>
+</ul>
+<h2 id="bundle-links">Bundle links</h2>
+<p>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 <strong>rdfs:seeAlso</strong> link to the bundle resource that defines it.</p>
+<p>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 <code>workflowBundle.ttl</code> 
+   (<a href="http://www.w3.org/TeamSubmission/turtle/">Turtle format</a>):</p>
+<div class="codehilite"><pre><span class="p">@</span><span class="n">prefix</span> <span class="p">:</span> <span class="o">&lt;</span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">ns</span><span class="p">.</span><span class="n">taverna</span><span class="p">.</span><span class="n">org</span><span class="p">.</span><span class="n">uk</span><span class="o">/</span>2010<span class="o">/</span><span class="n">scufl2</span>#<span class="o">&gt;</span> <span class="p">.</span>
+<span class="p">@</span><span class="n">prefix</span> <span class="n">rdfs</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">www</span><span class="p">.</span><span class="n">w3</span><span class="p">.</span><span class="n">org</span><span class="o">/</span>2000<span class="o">/</span>01<span class="o">/</span><span class="n">rdf</span><span class="o">-</span><span class="n">schema</span>#<span class="o">&gt;</span> <span class="p">.</span>
+
+<span class="o">&lt;./&gt;</span>     <span class="n">a</span> <span class="p">:</span><span class="n">WorkflowBundle</span><span class="p">;</span>
+     <span class="p">:</span><span class="n">mainProfile</span> <span class="o">&lt;</span><span class="n">profile</span><span class="o">/</span><span class="n">tavernaWorkbench</span><span class="o">/&gt;</span><span class="p">;</span>
+     <span class="p">:</span><span class="n">mainWorkflow</span> <span class="o">&lt;</span><span class="n">workflow</span><span class="o">/</span><span class="n">HelloWorld</span><span class="o">/&gt;</span><span class="p">;</span>
+     <span class="p">:</span><span class="n">name</span> &quot;<span class="n">HelloWorld</span>&quot;<span class="p">;</span>
+     <span class="p">:</span><span class="n">profile</span> <span class="o">&lt;</span><span class="n">profile</span><span class="o">/</span><span class="n">tavernaServer</span><span class="o">/&gt;</span><span class="p">,</span>
+            <span class="o">&lt;</span><span class="n">profile</span><span class="o">/</span><span class="n">tavernaWorkbench</span><span class="o">/&gt;</span><span class="p">;</span>
+     <span class="p">:</span><span class="n">sameBaseAs</span> <span class="o">&lt;</span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">ns</span><span class="p">.</span><span class="n">taverna</span><span class="p">.</span><span class="n">org</span><span class="p">.</span><span class="n">uk</span><span class="o">/</span>2010<span class="o">/</span><span class="n">workflowBundle</span><span class="o">/</span>28<span class="n">f7c554</span><span class="o">-</span>4<span class="n">f35</span><span class="o">-</span>401<span class="n">f</span><span class="o">-</span><span class="n">b34b</span><span class="o">-</span>516<span class="n">e9a0ef731</span><span class="o">/&gt;</span><span class="p">;</span>
+     <span class="p">:</span><span class="n">workflow</span> <span class="o">&lt;</span><span class="n">workflow</span><span class="o">/</span><span class="n">HelloWorld</span><span class="o">/&gt;</span><span class="p">;</span>
+     <span class="n">rdfs</span><span class="p">:</span><span class="n">seeAlso</span> <span class="o">&lt;</span><span class="n">annotation</span><span class="o">/</span><span class="n">workflowBundle</span><span class="p">.</span><span class="n">ttl</span><span class="o">&gt;</span> <span class="p">.</span>
+
+<span class="o">&lt;</span><span class="n">profile</span><span class="o">/</span><span class="n">tavernaServer</span><span class="o">/&gt;</span>     <span class="n">a</span> <span class="p">:</span><span class="n">Profile</span><span class="p">;</span>
+     <span class="n">rdfs</span><span class="p">:</span><span class="n">seeAlso</span> <span class="o">&lt;</span><span class="n">profile</span><span class="o">/</span><span class="n">tavernaServer</span><span class="p">.</span><span class="n">ttl</span><span class="o">&gt;</span> <span class="p">.</span>
+
+<span class="o">&lt;</span><span class="n">profile</span><span class="o">/</span><span class="n">tavernaWorkbench</span><span class="o">/&gt;</span>     <span class="n">a</span> <span class="p">:</span><span class="n">Profile</span><span class="p">;</span>
+     <span class="n">rdfs</span><span class="p">:</span><span class="n">seeAlso</span> <span class="o">&lt;</span><span class="n">profile</span><span class="o">/</span><span class="n">tavernaWorkbench</span><span class="p">.</span><span class="n">ttl</span><span class="o">&gt;</span> <span class="p">.</span>
+
+<span class="o">&lt;</span><span class="n">workflow</span><span class="o">/</span><span class="n">HelloWorld</span><span class="o">/&gt;</span>     <span class="n">a</span> <span class="p">:</span><span class="n">Workflow</span><span class="p">;</span>
+     <span class="n">rdfs</span><span class="p">:</span><span class="n">seeAlso</span> <span class="o">&lt;</span><span class="n">workflow</span><span class="o">/</span><span class="n">HelloWorld</span><span class="p">.</span><span class="n">ttl</span><span class="o">&gt;</span> <span class="p">.</span>
+</pre></div>
+
+
+<h2 id="parsingwriting">Parsing/writing</h2>
+<p>SCUFL2 compliant writers, when producing the workflow bundle document:</p>
+<ul>
+<li><strong>Should</strong> write the workflow bundle RDF/XML document according to the SCUFL2 XML schema, 
+      use the default namespace <code>xmlns="http://ns.taverna.org.uk/2010/scufl2#"</code> and declare the 
+      <code>xsi:type="WorkflowBundleDocument"</code></li>
+<li><strong>Must</strong> ensure the workflow bundle RDF/XML document is valid <a href="http://www.w3.org/TR/REC-rdf-syntax/">RDF/XML</a> 
+     and includes the properties deemed required by this specification. 
+   Conforming to the XML schema should ensure this.</li>
+<li><strong>Should</strong> set the <code>xml:base</code> property to<code>"./</code></li>
+<li><strong>Should</strong> set <strong>rdf:about</strong> to <code>""</code> (or <code>"./"' if</code>xml:base` is not set))</li>
+<li><strong>Should</strong> declare a <strong>mainWorkflow</strong> and <strong>mainProfile</strong></li>
+<li><strong>Must</strong>ensure that any <strong>workflow</strong>/<strong>profile</strong> has a relative <strong>rdfs:seeAlso</strong> link to a bundle resource in 
+     <code>application/rdf+xml</code> which defines <br />
+    that <a href="/documentation/scufl2/workflow">workflow</a> / <a href="/documentation/scufl2/profile">profile</a>.</li>
+</ul>
+<p>SCUFL2 compliant readers, when parsing a workflow bundle document:</p>
+<p><strong>May</strong> assume that a declared workflow/profile is defined in the referenced representation. 
+  For instance, if:</p>
+<div class="codehilite"><pre><span class="nt">&lt;workflow&gt;</span>
+   <span class="nt">&lt;Workflow</span> <span class="na">rdf:about=</span><span class="s">&quot;workflow/SomeNestedWorkflow/&quot;</span><span class="nt">&gt;</span>
+      <span class="nt">&lt;rdfs:seeAlso</span> <span class="na">rdf:resource=</span><span class="s">&quot;workflow/SomeNestedWorkflow.rdf&quot;</span> <span class="nt">/&gt;</span>
+   <span class="nt">&lt;/Workflow&gt;</span>   
+<span class="nt">&lt;/workflow&gt;</span>
+</pre></div>
+
+
+<p>then <code>workflow/SomeNestedWorkflow.rdf</code>&gt; <strong>must</strong> contain a <a href="/documentation/scufl2/workflow">workflow definition</a> 
+   for <code>workflow/SomeNestedWorkflow/</code>. <br />
+<strong>May</strong> parse the <code>/workflowBundle.rdf</code> as RDF/XML <br />
+<strong>May</strong> parse the {/workflowBundle.rdf}} according to the XML schema if the <code>xsi:type="WorkflowBundleDocument"</code> 
+   is set on the <code>rdf:RDF</code> element.</p>
+<h1 id="scufl2-workflow">Scufl2-Workflow</h1>
+<p>The definition of a workflow, its processors, inputs/outputs and links.</p>
+<ul>
+<li>Bundle path: <code>/workflow/\$name.n3</code></li>
+</ul>
+<p>Each nested workflow (and nested nested workflows etc.) exists in a separate file within the <code>/workflow/</code> folder in the bundle. 
+The bundle's <a href="/documentation/scufl2/bundle">research object</a> defines what is the top level workflow.</p>
+<h2 id="identifier">Identifier</h2>
+<p>Each workflow <strong>must</strong> have a unique name within the bundle's workflow files. 
+The base part of the file name (excluding extension) <strong>must</strong> match the <strong>scufl2:name</strong> of the workflow.</p>
+<p>Workflows used in a particular research object are globally identified as 
+   <code>&lt;http://ns.taverna.org.uk/2010/researchObject/$uuid/workflow/$workflowName/&gt;</code> - 
+   for instance <code>&lt;http://ns.taverna.org.uk/2010/researchObject/28f7c554-4f35-401f-b34b-516e9a0ef731/workflow/Helloworld/&gt;</code>.</p>
+<p>As it can be useful to identify nested workflows included in several workflow bundles, 
+   each workflow must also have a <em>scufl2:workflowIdentifier</em> property, which URI <strong>must</strong> be on the form 
+   <code>&lt;http://ns.taverna.org.uk/2010/workflow/$uuid&gt;</code>, for example 
+   <code>&lt;http://ns.taverna.org.uk/2010/workflow/efb1cdcd-1e19-408a-885a-303c6553a672/&gt;</code>. 
+It is responsibility of the software creating or modifying the workflow to generate a new workflowcIdentifier 
+   as soon as the workflow has changed. 
+(The randomly generated UUID of the workflow must <strong>not</strong> match the UUID of a research object or any other workflow.) 
+The owning <a href="/documentation/scufl2/bundle">research object</a> should then also be assigned a new UUID. 
+(Note that editing metadata and bindings in other files don't update the workflow, but still update the research object.)</p>
+<p>The workflow file <strong>should</strong> set the @base to the form <code>&lt;workflow/$name&gt;</code>} 
+   so that nested resources can be referenced relatively, like {{&lt;processor/$processorName&gt;</code>.</p></p>
+<h2 id="example">Example</h2>
+<p>(Outdated)</p>
+<div class="codehilite"><pre><span class="p">@</span><span class="n">base</span> <span class="o">&amp;</span><span class="n">lt</span><span class="p">;</span><span class="n">workflow</span><span class="o">/</span><span class="n">Helloworld</span><span class="o">/&amp;</span><span class="n">gt</span><span class="p">;</span>
+<span class="p">@</span><span class="n">prefix</span> <span class="n">scufl2</span><span class="p">:</span> <span class="o">&amp;</span><span class="n">lt</span><span class="p">;</span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">ns</span><span class="p">.</span><span class="n">taverna</span><span class="p">.</span><span class="n">org</span><span class="p">.</span><span class="n">uk</span><span class="o">/</span>2010<span class="o">/</span><span class="n">scufl2</span><span class="o">/</span><span class="n">ontology</span><span class="o">/&amp;</span><span class="n">gt</span><span class="p">;</span> <span class="p">.</span>
+
+<span class="o">&amp;</span><span class="n">lt</span><span class="p">;</span><span class="o">&amp;</span><span class="n">gt</span><span class="p">;</span>
+    <span class="n">a</span> <span class="n">scufl2</span><span class="p">:</span><span class="n">Workflow</span> <span class="p">;</span>
+    <span class="n">scufl2</span><span class="p">:</span><span class="n">name</span> <span class="o">&amp;</span><span class="n">quot</span><span class="p">;</span><span class="n">Helloworld</span><span class="o">&amp;</span><span class="n">quot</span><span class="p">;</span> <span class="p">;</span>
+    <span class="n">scufl2</span><span class="p">:</span><span class="n">inputWorkflowPort</span> <span class="o">&amp;</span><span class="n">lt</span><span class="p">;</span><span class="n">in</span><span class="o">/</span><span class="n">yourName</span><span class="o">&amp;</span><span class="n">gt</span><span class="p">;</span> <span class="p">;</span>
+    <span class="n">scufl2</span><span class="p">:</span><span class="n">outputWorkflowPort</span> <span class="o">&amp;</span><span class="n">lt</span><span class="p">;</span><span class="n">out</span><span class="o">/</span><span class="n">results</span><span class="o">&amp;</span><span class="n">gt</span><span class="p">;</span> <span class="p">;</span>
+    <span class="n">scufl2</span><span class="p">:</span><span class="n">datalink</span> <span class="o">&amp;</span><span class="n">lt</span><span class="p">;</span><span class="n">datalink</span><span class="o">/</span>1<span class="o">&amp;</span><span class="n">gt</span><span class="p">;,</span> <span class="o">&amp;</span><span class="n">lt</span><span class="p">;</span><span class="n">datalink</span><span class="o">/</span>2<span class="o">&amp;</span><span class="n">gt</span><span class="p">;</span> <span class="p">;</span>
+    <span class="n">scufl2</span><span class="p">:</span><span class="n">processor</span> <span class="o">&amp;</span><span class="n">lt</span><span class="p">;</span><span class="n">processor</span><span class="o">/</span><span class="n">Hello</span><span class="o">&amp;</span><span class="n">gt</span><span class="p">;</span> <span class="p">.</span>
+<span class="p">]]</span><span class="o">&gt;</span>
+</pre></div>
+
+
+<p>This example defines the workflow "HelloWorld". 
+It contains one workflow input port and one workflow output port, in addition to a single processor and two datalinks.</p>
+<p>The nested resources for this workflow, such as InputWorkflowPort , OutputWorkflowPort, 
+   <a href="/documentation/scufl2/datalink">DataLink</a>, Processor and their children <strong>should</strong> be described 
+   in the same file as the workflow itself. 
+Additional metadata should be added to an <code>/annotations/</code> file.</p>
+<h2 id="properties_1">Properties</h2>
+<ul>
+<li><strong>scufl2:name</strong> (required) gives the programmatic short-name for this workflow within this bundle. 
+   This must be unique among the other workflows.</li>
+<li><strong>scufl2:workflowIdentifier</strong> (required) gives the globally unique URI defining this workflow. 
+   See <em>Identifier</em> above.</li>
+<li><strong>scufl2:inputWorkflowPort</strong> (optional) All workflow input ports defined for this workflow.</li>
+<li><strong>scufl2:outputWorkflowPort</strong> (optional) All workflow output ports defined for this workflow.</li>
+<li><strong>scufl2:datalink</strong> (optional) All <a href="/documentation/scufl2/datalink">datalinks</a> 
+      defined between workflow and processor ports in this workflow. 
+   (Note that if this is a nested workflow, its outside links are defined in the parent workflow)</li>
+<li><strong>scufl2:processor</strong> (optional) All <a href="/documentation/scufl2/processors">processors</a> in this workflow.</li>
+</ul>
+<h2 id="bundle-links_1">Bundle links</h2>
+<p>All nested workflow resources should also be defined in the same archive file as this workflow. 
+Their URIs <strong>must</strong> be relative to this workflow, their type and <strong>scufl2:name</strong>. 
+So for instance &lt;workflow/Helloworld/processor/Hello&gt; is a <strong>scufl2:Processor</strong> in &lt;workflow/Helloworld&gt;, 
+   and has a <strong>scufl2:name</strong> "Hello".</p>
+<h1 id="scufl2-profile">Scufl2 Profile</h1>
+<p>Details of the Scufl2 profile still to be added.</p>
+<h1 id="taverna-workflow-bundle">Taverna Workflow Bundle</h1>
+<p>The primary SCUFL2 file format is the Taverna <em>workflow bundle</em>.</p>
+<table><tbody>
+<tr>
+<th>Media type</th>
+<td><code>application/vnd.taverna.scufl2.workflow-bundle</code></td>
+</tr>
+<tr>
+<th>File extension</th>
+<td><code>.wfbundle</code></td>
+</tr>
+<tr>
+<th>File type</th>
+<td>Zip archive</td>
+</tr>
+</tbody></table>
+
+</div>
+
+<p>This file is a structured ZIP archive, based on the 
+   <a href="http://livedocs.adobe.com/navigator/9/Navigator_SDK9_HTMLHelp/wwhelp/wwhimpl/common/html/wwhelp.htm?context=Navigator_SDK9_HTMLHelp&amp;amp;file=Appx_Packaging.6.31.html">Adobe UCF</a>
+   format.
+This is similar to the structured ZIPs used by the OpenOffice format <a href="http://en.wikipedia.org/wiki/OpenDocument_technical_specification#Format_internals">ODF</a>.</p>
+<p>For a file to be a Taverna Workflow Bundle if it <strong>must</strong>:</p>
+<ul>
+<li>Is a valid <a href="http://livedocs.adobe.com/navigator/9/Navigator_SDK9_HTMLHelp/wwhelp/wwhimpl/common/html/wwhelp.htm?context=Navigator_SDK9_HTMLHelp&amp;amp;file=Appx_Packaging.6.1.html#1522568">ZIP container</a></li>
+<li>Contains the file <code>mimetype</code> with the ASCII content <code>application/vnd.taverna.scufl2.workflow-bundle</code> (without LF/CR)</li>
+<li>Contains the file <code>workflowBundle.rdf</code> as a valid <a href="http://www.w3.org/TR/rdf-syntax-grammar/">RDF/XML</a> 
+     document describing a <a href="/documentation/scufl2/bundle">workflow bundle</a></li>
+</ul>
+<p>To be fully compliant, the bundle <strong>should</strong> also:</p>
+<ul>
+<li>Contain a valid <code>META-INF/manifest.xml</code> file listing all files in the archive</li>
+<li>Contain a valid <code>META-INF/container.xml</code> file including an entry for <code>workflowBundle.rdf</code></li>
+</ul>
+<p>The <a href="/documentation/scufl2/bundle">workflow bundle document</a> is the top level entry point ("root file") 
+   for the archive (think: <code>index.html</code>), and describes:</p>
+<ul>
+<li>Which workflows are included in the bundle under <code>workflow/</code></li>
+<li>Which profiles are included in the bundle under <code>profile/</code></li>
+<li>Which of the workflows is the suggested <em>main workflow</em></li>
+<li>Which of the profiles is the suggested <em>main profile</em></li>
+<li>What is the global workflow bundle identifier.</li>
+</ul>
+<p>A Workflow Bundle document can also be included as part of any other bundle, 
+   archive or resource according to these specifications. 
+In that case the resource name might or might not be <code>workflowBundle.rdf</code>, 
+   this depends on the specification of that other format.</p>
+<h3 id="archive-directory-structure">Archive directory structure</h3>
+<table><tbody>
+<tr>
+<th>Path</th>
+<th>Type</th>
+<th>Description</th>
+</tr>
+<tr>
+<td>mimetype</td>
+<td>Text</td>
+<td>Mime type of bundle, ie. <code>application/vnd.taverna.scufl2.workflow-bundle</code></td>
+</tr>
+<tr>
+<td>META-INF/</td>
+<td>Folder</td>
+<td>Reserved folder for manifest </td>
+</tr>
+<tr>
+<td> META-INF/manifest.xml </td>
+<td> XML </td>
+<td> ODF 1.3-like manifest, listing each file, mime-type and file size </td>
+</tr>
+<tr>
+<td> META-INF/container.xml </td>
+<td> XML </td>
+<td>Adobe UCF/OEBPS list of <a href="http://livedocs.adobe.com/navigator/9/Navigator_SDK9_HTMLHelp/wwhelp/wwhimpl/common/html/wwhelp.htm?context=Navigator_SDK9_HTMLHelp&amp;file=Appx_Packaging.6.31.html" class="external-link" rel="nofollow">root files</a> (ie. <code>workflowBundle.rdf</code>))</td>
+</tr>
+<tr>
+<td> workflowBundle.rdf </td>
+<td> RDF/XML </td>
+<td> <a href="/wiki/display/developer/Scufl2-WorkflowBundle">Workflow Bundle Document</a> </td>
+</tr>
+<tr>
+<td>vworkflow/ </td>
+<td> Folder </td>
+<td> Workflow definitions </td>
+</tr>
+<tr>
+<td> workflow/HelloWorld.rdf </td>
+<td> RDF/XML</td>
+<td> <a href="/documentation/scufl2/workflow">Workflow definition</a> for &quot;HelloWorld&quot; </p></td>
+</tr>
+<tr>
+<td>workflow/otherWorkflow.rdf</td>
+<td> RDF/XML</td>
+<td> Workflow definition for &quot;otherWorkflow&quot; </td>
+</tr>
+<tr>
+<td> profile/ </td>
+<td> Folder </td>
+<td> Execution <a href="/wiki/display/developer/Scufl2-Profile">Profile </a> definitions </td>
+</tr>
+<tr>
+<td> profile/someProfile.rdf </td>
+<td> RDF/XML</td>
+<td> Profile definition &quot;someProfile&quot; </td>
+</tr>
+<tr>
+<td> profile/other.rdf </td>
+<td> RDF/XML</td>
+<td> Profile definition &quot;other&quot;</td>
+</tr>
+</tbody></table>
+
+</div>
+
+<p>The archive must be a ZIP file, and should have the file extension <code>.wfbundle</code>. 
+Some situations might require treating the workflow bundle as an unpacked set of folders. 
+In this case the top folder should still have the file extension <code>.wfbundle</code>.</p>
+<p>According to the Adobe UCF specifications, the <code>mimetype</code> file must be the <em>first file</em> in the folder, 
+   and must be stored without compression, encryption or permission attributes, 
+   to support detection by mimemagic and similar.</p>
+<p>The file <code>META-INF/manifest.xml</code> - if present - must list every non-<code>META-INF</code> file and folder in the archive, 
+   including the root folder. 
+It should provide the mime-type - if known - for individual files. 
+The root folder should have the same mime type as in the <code>mimetype</code> file - <code>application/vnd.taverna.scufl2.workflow-bundle</code>.</p>
+<p>The file <code>META-INF/container.xml</code> - if present - should point to the 'root' workflow bundle document. 
+One and only one entry which must be of the mime type <code>application/rdf+xml</code>, 
+   and this entry must be called <code>workflowBundle.rdf</code>. 
+Alternative representation of the workflow bundle root document can be included in other formats, 
+   there's no similar restriction on their filenames, although it is recommended they match the RDF/XML filename, 
+   for instance <code>workflowBundle.html</code>, <code>workflowBundle.json</code>, etc.</p>
+<p>The folder <code>workflow</code> contain each of the workflow definitions as 
+   <a href="/documentation/scufl2/workflow">Workflow Documents</a>. 
+One of these is typically the <em>main workflow</em> while the others are <em>nested workflows</em>, 
+   but there is no requirement that the workflows included are to be included as a nested workflow or a main workflow. 
+Such 'dangling workflows' can be considered to be only <em>declared workflows</em> - 
+   they might be there for historical reasons or because the workflow bundle is at an early stage of development 
+   when there is no main workflow yet.</p>
+<p>The execution details of workflows (such as activity choice, configuration) are described in the <code>profile</code> folder, 
+   one <a href="/documentation/scufl2/profile">Profile Document</a> per possible execution binding. 
+(For instance, one profile for the graphical Workbench, one for the Taverna Server and one for the Taverna Portal.). 
+One profile document can include execution details for several workflows, 
+   but there could also be workflows which don't have any execution details in any profile - 
+   these can be considered <em>abstract workflows</em>.</p>
+<h2 id="workflowbundlerdf">workflowBundle.rdf</h2>
+<p>The workflow bundle document <code>workflowBundle.rdf</code> should list each of these <em>workflows</em> and <em>profiles</em>, 
+   and <strong>should</strong> suggest the <em>main workflow</em> and <em>main profile</em>. </p>
+<h2 id="mimetype">mimetype</h2>
+<p>This file is required, as a guide for mime magic and similar tools that guess the type of the archive. 
+Therefore it must be added as the first file to the archive, uncompressed, 
+   so that its content is available in cleartext in the first bytes of the ZIP archive.</p>
+<p>The file must be in ASCII and <strong>not</strong> contain any line feeds. 
+If the archive is a Taverna Workflow Bundle, the mime type should be <code>application/vnd.taverna.scufl2.workflow-bundle</code>. 
+If <code>META-INF/manifest.xml</code> is present, this mime type must match the mime type of <code>"/"</code> in the manifest.</p>
+<p>To add the file <code>mimetype</code> as the first uncompressed file, followed by the rest of the bundle (excluding the mimetype file), 
+   try using InfoZip:</p>
+<div class="codehilite"><pre>$ <span class="n">zip</span> <span class="o">-</span>0 <span class="o">-</span><span class="n">X</span> <span class="p">.</span><span class="o">./</span><span class="n">example</span><span class="p">.</span><span class="n">wfbundle</span> <span class="n">mimetype</span>
+  <span class="n">adding</span><span class="p">:</span> <span class="n">mimetype</span> <span class="p">(</span><span class="n">stored</span> 0<span class="c">%)</span>
+
+$ <span class="n">zip</span> <span class="o">-</span><span class="n">X</span> <span class="o">-</span><span class="n">r</span> <span class="p">.</span><span class="o">./</span><span class="n">example</span><span class="p">.</span><span class="n">wfbundle</span> <span class="p">.</span> <span class="o">-</span><span class="n">x</span> <span class="n">mimetype</span>
+  <span class="n">adding</span><span class="p">:</span> <span class="n">workflowBundle</span><span class="p">.</span><span class="n">rdf</span> <span class="p">(</span><span class="n">deflated</span> 74<span class="c">%)</span>
+  <span class="n">adding</span><span class="p">:</span> <span class="n">workflow</span><span class="o">/</span> <span class="p">(</span><span class="n">stored</span> 0<span class="c">%)</span>
+  <span class="n">adding</span><span class="p">:</span> <span class="n">workflow</span><span class="o">/</span><span class="n">HelloWorld</span><span class="p">.</span><span class="n">rdf</span> <span class="p">(</span><span class="n">stored</span> 0<span class="c">%)</span>
+<span class="p">..</span>
+  <span class="n">adding</span><span class="p">:</span> <span class="n">META</span><span class="o">-</span><span class="n">INF</span><span class="o">/</span> <span class="p">(</span><span class="n">stored</span> 0<span class="c">%)</span>
+  <span class="n">adding</span><span class="p">:</span> <span class="n">META</span><span class="o">-</span><span class="n">INF</span><span class="o">/</span><span class="n">manifest</span><span class="p">.</span><span class="n">xml</span> <span class="p">(</span><span class="n">deflated</span> 78<span class="c">%)</span>
+  <span class="n">adding</span><span class="p">:</span> <span class="n">META</span><span class="o">-</span><span class="n">INF</span><span class="o">/</span><span class="n">container</span><span class="p">.</span><span class="n">xml</span> <span class="p">(</span><span class="n">deflated</span> 50<span class="c">%)</span>
+</pre></div>
+
+
+<p>To verify:</p>
+<div class="codehilite"><pre>$ <span class="n">unzip</span> <span class="o">-</span><span class="n">lv</span> <span class="p">.</span><span class="o">./</span><span class="n">example</span><span class="p">.</span><span class="n">wfbundle</span>
+<span class="n">Archive</span><span class="p">:</span>  <span class="p">.</span><span class="o">./</span><span class="n">example</span><span class="p">.</span><span class="n">wfbundle</span>
+ <span class="n">Length</span>   <span class="n">Method</span>    <span class="n">Size</span>  <span class="n">Cmpr</span>    <span class="n">Date</span>    <span class="n">Time</span>   <span class="n">CRC</span><span class="o">-</span>32   <span class="n">Name</span>
+<span class="o">--------</span>  <span class="o">------</span>  <span class="o">-------</span> <span class="o">----</span> <span class="o">----------</span> <span class="o">-----</span> <span class="o">--------</span>  <span class="o">----</span>
+      35  <span class="n">Stored</span>       35   0<span class="c">% 2010-10-11 16:44 8373c7d8  mimetype</span>
+    3047  <span class="n">Defl</span><span class="p">:</span><span class="n">N</span>      786  74<span class="c">% 2010-10-13 09:40 743ecfe4  workflowBundle.rdf</span>
+       0  <span class="n">Stored</span>        0   0<span class="c">% 2010-10-06 14:57 00000000  workflow/</span>
+<span class="p">...</span>
+
+$ <span class="n">python</span> <span class="o">-</span><span class="n">c</span> <span class="o">&amp;</span><span class="n">quot</span><span class="p">;</span><span class="n">print</span> <span class="n">open</span> <span class="p">(</span><span class="o">&amp;</span>#39<span class="p">;.</span><span class="o">./</span><span class="n">example</span><span class="p">.</span><span class="n">wfbundle</span><span class="o">&amp;</span>#39<span class="p">;).</span><span class="n">read</span><span class="p">(</span>128<span class="p">)[</span>38<span class="p">:</span>84<span class="p">]</span><span class="o">&amp;</span><span class="n">quot</span><span class="p">;</span>
+<span class="n">print</span><span class="p">(</span>&quot;<span class="n">code</span> <span class="n">sample</span>&quot;<span class="p">);</span>`<span class="n">application</span><span class="o">/</span><span class="n">vnd</span><span class="p">.</span><span class="n">taverna</span><span class="p">.</span><span class="n">scufl2</span><span class="p">.</span><span class="n">workflow</span><span class="o">-</span><span class="n">bundle</span>
+</pre></div>
+
+
+<h2 id="meta-infmanifestxml">META-INF/manifest.xml</h2>
+<p>This file, if exists, should follow the OpenDocument container format, 
+   and list every file in the bundle (except for the META-INF files). 
+The main functionality provided by the manifest is to give the mime-type of additional resources. 
+As a minimum the mime-type should distinguish between <code>text/plain</code> (UTF-8 text) and <code>application/octet-stream</code> (binary). 
+If a mime-magick like tool has guessed a more detailed mime type, it can also be provided here.</p>
+<p>Additionally the manifest may specify the file sizes, 
+cccin general this can be useful when inspecting a larger workflow bundle remotely (exposed as a RESTful folder or similar).</p>
+<p>The folder <code>/</code> represents the bundle itself, and must have the same mime type as in the file <code>mimetype</code>, 
+   ie. <code>application/vnd.taverna.scufl2.workflow-bundle</code>. 
+A different mime type might be used if the primary purpose of the archive is different from being a workflow bundle, 
+   for instance being a Taverna Data Bundle.</p>
+<p>The <code>workflowBundle.rdf</code> file must be listed in the manifest, and it must be listed with the <code>application/rdf+xml</code> mime type. 
+Any alternative representations must also be listed, and their mime type must match those in <code>META-INF/container.xml</code> 
+   (see below).</p>
+<p>The other folders are not required to have a mimetype.</p>
+<p>If there is no manifest in the workflow bundle, 
+   all data value files should be treated to be binary <code>application/octet-stream</code>, 
+   unless they have one of these file extensions:</p></p>
+<ul>
+<li><code>*.txt</code> is <code>text/plain</code> in UTF-8 character set</li>
+<li><code>*.rdf</code> is <code>application/rdf+xml</code></li>
+</ul>
+<p>Example manifest:</p>
+<div class="codehilite"><pre><span class="cp">&lt;?</span><span class="nx">xml</span> <span class="nx">version</span><span class="o">=</span><span class="s2">&quot;1.0&quot;</span> <span class="nx">encoding</span><span class="o">=</span><span class="s2">&quot;UTF-8&quot;</span><span class="cp">?&gt;</span>
+<span class="o">&lt;</span><span class="nx">manifest</span><span class="o">:</span><span class="nx">manifest</span> <span class="nx">xmlns</span><span class="o">:</span><span class="nx">manifest</span><span class="o">=</span><span class="s2">&quot;urn:oasis:names:tc:opendocument:xmlns:manifest:1.0&quot;</span><span class="o">&gt;</span>
+ <span class="o">&lt;</span><span class="nx">manifest</span><span class="o">:</span><span class="nx">file</span><span class="o">-</span><span class="nx">entry</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">media</span><span class="o">-</span><span class="nx">type</span><span class="o">=</span><span class="s2">&quot;application/vnd.taverna.scufl2.workflow-bundle&quot;</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">full</span><span class="o">-</span><span class="nx">path</span><span class="o">=</span><span class="s2">&quot;/&quot;</span><span class="o">/&gt;</span>
+
+ <span class="o">&lt;</span><span class="nx">manifest</span><span class="o">:</span><span class="nx">file</span><span class="o">-</span><span class="nx">entry</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">media</span><span class="o">-</span><span class="nx">type</span><span class="o">=</span><span class="s2">&quot;application/rdf+xml&quot;</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">full</span><span class="o">-</span><span class="nx">path</span><span class="o">=</span><span class="s2">&quot;workflowBundle.rdf&quot;</span><span class="o">/&gt;</span>
+ <span class="o">&lt;</span><span class="nx">manifest</span><span class="o">:</span><span class="nx">file</span><span class="o">-</span><span class="nx">entry</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">media</span><span class="o">-</span><span class="nx">type</span><span class="o">=</span><span class="s2">&quot;application/rdf+xml&quot;</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">full</span><span class="o">-</span><span class="nx">path</span><span class="o">=</span><span class="s2">&quot;workflow/HelloWorld.rdf&quot;</span><span class="o">/&gt;</span>
+ <span class="o">&lt;</span><span class="nx">manifest</span><span class="o">:</span><span class="nx">file</span><span class="o">-</span><span class="nx">entry</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">media</span><span class="o">-</span><span class="nx">type</span><span class="o">=</span><span class="s2">&quot;application/rdf+xml&quot;</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">full</span><span class="o">-</span><span class="nx">path</span><span class="o">=</span><span class="s2">&quot;annotation/workflow/HelloWorld.rdf&quot;</span><span class="o">/&gt;</span>
+ <span class="o">&lt;</span><span class="nx">manifest</span><span class="o">:</span><span class="nx">file</span><span class="o">-</span><span class="nx">entry</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">media</span><span class="o">-</span><span class="nx">type</span><span class="o">=</span><span class="s2">&quot;application/rdf+xml&quot;</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">full</span><span class="o">-</span><span class="nx">path</span><span class="o">=</span><span class="s2">&quot;annotation/workflowBundle.rdf&quot;</span><span class="o">/&gt;</span>
+ <span class="o">&lt;</span><span class="nx">manifest</span><span class="o">:</span><span class="nx">file</span><span class="o">-</span><span class="nx">entry</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">media</span><span class="o">-</span><span class="nx">type</span><span class="o">=</span><span class="s2">&quot;application/rdf+xml&quot;</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">full</span><span class="o">-</span><span class="nx">path</span><span class="o">=</span><span class="s2">&quot;profile/tavernaWorkbench.rdf&quot;</span><span class="o">/&gt;</span>
+ <span class="o">&lt;</span><span class="nx">manifest</span><span class="o">:</span><span class="nx">file</span><span class="o">-</span><span class="nx">entry</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">media</span><span class="o">-</span><span class="nx">type</span><span class="o">=</span><span class="s2">&quot;application/rdf+xml&quot;</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">full</span><span class="o">-</span><span class="nx">path</span><span class="o">=</span><span class="s2">&quot;profile/tavernaServer.rdf&quot;</span><span class="o">/&gt;</span>
+
+ <span class="o">&lt;</span><span class="nx">manifest</span><span class="o">:</span><span class="nx">file</span><span class="o">-</span><span class="nx">entry</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">media</span><span class="o">-</span><span class="nx">type</span><span class="o">=</span><span class="s2">&quot;text/turtle&quot;</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">full</span><span class="o">-</span><span class="nx">path</span><span class="o">=</span><span class="s2">&quot;workflowBundle.ttl&quot;</span><span class="o">/&gt;</span>
+ <span class="o">&lt;</span><span class="nx">manifest</span><span class="o">:</span><span class="nx">file</span><span class="o">-</span><span class="nx">entry</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">media</span><span class="o">-</span><span class="nx">type</span><span class="o">=</span><span class="s2">&quot;text/turtle&quot;</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">full</span><span class="o">-</span><span class="nx">path</span><span class="o">=</span><span class="s2">&quot;workflow/HelloWorld.ttl&quot;</span><span class="o">/&gt;</span>
+ <span class="o">&lt;</span><span class="nx">manifest</span><span class="o">:</span><span class="nx">file</span><span class="o">-</span><span class="nx">entry</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">media</span><span class="o">-</span><span class="nx">type</span><span class="o">=</span><span class="s2">&quot;text/turtle&quot;</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">full</span><span class="o">-</span><span class="nx">path</span><span class="o">=</span><span class="s2">&quot;annotation/workflow/HelloWorld.ttl&quot;</span><span class="o">/&gt;</span>
+ <span class="o">&lt;</span><span class="nx">manifest</span><span class="o">:</span><span class="nx">file</span><span class="o">-</span><span class="nx">entry</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">media</span><span class="o">-</span><span class="nx">type</span><span class="o">=</span><span class="s2">&quot;text/turtle&quot;</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">full</span><span class="o">-</span><span class="nx">path</span><span class="o">=</span><span class="s2">&quot;annotation/workflowBundle.ttl&quot;</span><span class="o">/&gt;</span>
+ <span class="o">&lt;</span><span class="nx">manifest</span><span class="o">:</span><span class="nx">file</span><span class="o">-</span><span class="nx">entry</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">media</span><span class="o">-</span><span class="nx">type</span><span class="o">=</span><span class="s2">&quot;text/turtle&quot;</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">full</span><span class="o">-</span><span class="nx">path</span><span class="o">=</span><span class="s2">&quot;profile/tavernaWorkbench.ttl&quot;</span><span class="o">/&gt;</span>
+ <span class="o">&lt;</span><span class="nx">manifest</span><span class="o">:</span><span class="nx">file</span><span class="o">-</span><span class="nx">entry</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">media</span><span class="o">-</span><span class="nx">type</span><span class="o">=</span><span class="s2">&quot;text/turtle&quot;</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">full</span><span class="o">-</span><span class="nx">path</span><span class="o">=</span><span class="s2">&quot;profile/tavernaServer.ttl&quot;</span><span class="o">/&gt;</span>
+
+ <span class="o">&lt;</span><span class="nx">manifest</span><span class="o">:</span><span class="nx">file</span><span class="o">-</span><span class="nx">entry</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">media</span><span class="o">-</span><span class="nx">type</span><span class="o">=</span><span class="s2">&quot;image/svg+xml&quot;</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">full</span><span class="o">-</span><span class="nx">path</span><span class="o">=</span><span class="s2">&quot;Thumbnails/thumbnail.svg&quot;</span><span class="o">/&gt;</span>
+ <span class="o">&lt;</span><span class="nx">manifest</span><span class="o">:</span><span class="nx">file</span><span class="o">-</span><span class="nx">entry</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">media</span><span class="o">-</span><span class="nx">type</span><span class="o">=</span><span class="s2">&quot;image/png&quot;</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">full</span><span class="o">-</span><span class="nx">path</span><span class="o">=</span><span class="s2">&quot;Thumbnails/thumbnail.png&quot;</span><span class="o">/&gt;</span>
+
+ <span class="o">&lt;</span><span class="nx">manifest</span><span class="o">:</span><span class="nx">file</span><span class="o">-</span><span class="nx">entry</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">media</span><span class="o">-</span><span class="nx">type</span><span class="o">=</span><span class="s2">&quot;image/svg+xml&quot;</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">full</span><span class="o">-</span><span class="nx">path</span><span class="o">=</span><span class="s2">&quot;diagram/workflow/HelloWorld.svg&quot;</span><span class="o">/&gt;</span>
+ <span class="o">&lt;</span><span class="nx">manifest</span><span class="o">:</span><span class="nx">file</span><span class="o">-</span><span class="nx">entry</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">media</span><span class="o">-</span><span class="nx">type</span><span class="o">=</span><span class="s2">&quot;image/png&quot;</span> <span class="nx">manifest</span><span class="o">:</span><span class="nx">full</span><span class="o">-</span><span class="nx">path</span><span class="o">=</span><span class="s2">&quot;diagram/workflow/HelloWorld.png&quot;</span><span class="o">/&gt;</span>
+<span class="o">&lt;</span><span class="err">/manifest:manifest&gt;</span>
+</pre></div>
+
+
+<h2 id="meta-infcontainerxml">META-INF/container.xml</h2>
+<p>This file, if present, should point to the root workflow bundle document, 
+   which in an <code>application/vnd.taverna.scufl2.workflow-bundle</code> must be  <code>workflowBundle.rdf</code>. 
+Alternative representation of the same file are permitted, 
+   but SCUFL2 compliant tools are only required to understand the  <code>application/rdf+xml</code> representations described here.</p>
+<p>The Adobe UCF specification defines the 
+   <a href="http://livedocs.adobe.com/navigator/9/Navigator_SDK9_HTMLHelp/wwhelp/wwhimpl/common/html/wwhelp.htm?context=Navigator_SDK9_HTMLHelp&amp;amp;file=Appx_Packaging.6.31.html">format of this container file</a>.</p>
+<p><img alt="" src="//img/warning.png" /> <em>XML namespace in container.xml</em></p>
+<blockquote>
+<div class="codehilite"><pre><span class="n">Adobe</span> <span class="n">UCF</span> <span class="n">have</span> <span class="n">used</span> <span class="n">the</span> <span class="n">XML</span> <span class="n">namespace</span> `<span class="n">urn</span><span class="p">:</span><span class="n">oasis</span><span class="p">:</span><span class="n">names</span><span class="p">:</span><span class="n">tc</span><span class="p">:</span><span class="n">opendocument</span><span class="p">:</span><span class="n">xmlns</span><span class="p">:</span><span class="n">container</span>` <span class="n">although</span> <span class="n">this</span> <span class="n">format</span>
+</pre></div>
+
+
+<p>is not defined by OASIS or the Open Document specification. </p>
+<div class="codehilite"><pre><span class="n">SCUFL2</span> <span class="n">compliant</span> <span class="n">tools</span> <span class="n">should</span> <span class="n">therefore</span> <span class="n">parse</span> `<span class="n">container</span><span class="p">.</span><span class="n">xml</span>` <span class="n">ignoring</span> <span class="n">any</span> <span class="n">default</span> <span class="n">namespaces</span><span class="p">,</span> <span class="n">and</span> <span class="n">write</span> <span class="n">using</span> <span class="n">the</span> <span class="n">default</span> <span class="n">name</span>
+</pre></div>
+
+
+<p>space and <code>&lt;container
+xmlns="urn:oasis:names:tc:opendocument:xmlns:container"</code>  as the root
+element.</p>
+</blockquote>
+<p>If the archive is of the mime type <code>application/vnd.taverna.scufl2.workflow-bundle</code> 
+   and contains other representations of the workflow bundle (for instance: JSON, 
+Turtle, t2flow) then the bundle <strong>must</strong> have a container file and list these representations in addition to 
+   <code>workflowBundle.rdf</code>. 
+Derived representations such as SVG diagrams and HTML reports should generally <strong>not</strong> be listed as 'root files' 
+   unless they can be considered to 'fully represent the workflow bundle', for instance by using RDFa.</p>
+<p>A SCUFL2 compliant parser can assume that an archive which is <em>not</em> of the mime type 
+   <code>application/vnd.taverna.scufl2.workflow-bundle</code>,
+    but does contain a <code>META-INF/container.xml</code>-listed root file named <code>workflowBundle.rdf</code>, 
+    that file <strong>can</strong> be read as an RDF/XML representation of a workflow bundle document, 
+    even if it is not declared as having the <code>application/rdf+xml</code> mime type. 
+This enables any future extensions superseeding this <code>application/vnd.taverna.scufl2.workflow-bundle</code> format.</p>
+<p>All rootfiles must be equivalent and describe the same workflow structure, 
+   although additional formats can include more or less information than the required format. 
+There should be only one rootfile per media-type, and there must be a rootfile for the media type <code>application/rdf+xml</code>.</p>
+<p>Example:</p>
+<div class="codehilite"><pre><span class="cp">&lt;?xml version=&quot;1.0&quot;?&gt;</span>
+<span class="nt">&lt;container</span> <span class="na">version=</span><span class="s">&quot;1.0&quot;</span>
+    <span class="na">xmlns=</span><span class="s">&quot;urn:oasis:names:tc:opendocument:xmlns:container&quot;</span><span class="nt">&gt;</span>
+    <span class="nt">&lt;rootfiles&gt;</span>
+        <span class="nt">&lt;rootfile</span> <span class="na">full-path=</span><span class="s">&quot;workflowBundle.ttl&quot;</span>
+         <span class="na">media-type=</span><span class="s">&quot;text/turtle&quot;</span> <span class="nt">/&gt;</span> 
+        <span class="nt">&lt;rootfile</span> <span class="na">full-path=</span><span class="s">&quot;workflowBundle.rdf&quot;</span>
+         <span class="na">media-type=</span><span class="s">&quot;application/rdf+xml&quot;</span> <span class="nt">/&gt;</span> 
+    <span class="nt">&lt;/rootfiles&gt;</span>
+    <span class="nt">&lt;relationships&gt;</span>
+        <span class="nt">&lt;relationship</span> <span class="na">type=</span><span class="s">&quot;metadata&quot;</span> <span class="na">target=</span><span class="s">&quot;/annotation/</span><span class="p">$</span><span class="nv">dir</span><span class="s">/</span><span class="p">$</span><span class="nv">filename</span><span class="s">.</span><span class="p">$</span><span class="nv">ext</span><span class="s">&quot;</span> <span class="nt">/&gt;</span>
+    <span class="nt">&lt;/relationships&gt;</span>
+<span class="nt">&lt;/container&gt;</span>
+</pre></div>
+
+
+<h2 id="unknown-files-and-file-types">Unknown files and file types</h2>
+<p>Any other files in <code>workflow</code> and <code>profile</code> <strong>should</strong> be ignored by SCUFL2 compliant parsers, 
+   regardless of if they have the <code>application/rdf+xml</code> mime type or not. 
+When a SCUFL2 compliant tool has <em>modified</em> an existing Workflow Bundle, 
+   it <strong>should</strong> remove such unknown files from <code>workflow</code> and <code>profile</code> when saving, 
+   unless it has the capabilities to also update these. 
+These files would typically be representations in other formats which would be out of date after the editing. 
+On the other hand, if the tool has not structurally modified a workflow or profile, 
+   the tool <strong>should not</strong> remove unknown files from <code>workflow</code> and <code>profile</code>.</p>
+<p>On removal of files, the tool should also remove them from <code>META-INF/manifest.xml</code> and if necessary from 
+   <code>META-INF/container.xml</code>.</p>
+<h2 id="additional-resources">Additional resources</h2>
+<p>The workflow bundle format is an open-ended specification, so the archive can include additional resources not described here.</p>
+<p>For instance the bundle can include:</p>
+<ul>
+<li>Thumbnail of bundle (mini-diagram) (Recommendation: <code>META-INF/Thumbnails/thumbnail.png</code> and <code>Thumbnails/thumbnail.svg</code>)</li>
+<li>Ontologies referenced from RDF/XML files, in particular from configurations 
+      (Recommendation: <code>ontology/taverna2.2/beanshell.rdf</code>)</li>
+<li>Diagrams of workflows (Recommendation: <code>diagram/workflow/HelloWorld.svg</code> and <code>.png</code>)</li>
+<li>Alternative representations (RDF, JSON)  (Recommendation: Same naming conventions with different extensions)</li>
+<li>Annotations (Recommendation: under <code>annotations/</code> in RDF/XML format) - 
+     one file per annotation source, like `myExperiment.rdf)</li>
+<li>Resources/binaries/data needed by workflow (Recommendation: under <code>resources/</code></li>
+<li>Example input and output data (Recommendation: as in data bundle)</li>
+<li>Provenance and data of one or more workflow runs (Recommendation: under <code>run/</code></li>
+</ul>
+<p>A workflow bundle can also play 'double roles' by being other bundles, like a data bundle. 
+It is the <code>mimetype</code> and <em>root file</em> that determines what is the "main function" of the bundle, 
+   suggesting which tool should primarily open the bundle.
+One can for instance imagine an UCF archive which primarily is an Adobe PDFXML file for a published paper 
+   (see: <a href="http://labs.adobe.com/technologies/mars/">Mars project</a>) and should be opened in Adobe Acrobat Reader. 
+However, it can also contain <code>workflowBundle.rdf</code>, <code>workflow/importantResearch.rdf</code>, 
+   and could therefore also be opened using SCUFL2 tools. </p>
+<h1 id="scufl2-datalink">Scufl2-DataLink</h1>
+<p>The definition of a data link.</p>
+<div class="codehilite"><pre><span class="n">Bundle</span> <span class="n">path</span><span class="p">:</span> <span class="o">/</span><span class="n">workflow</span><span class="o">/\</span>$<span class="n">workflowName</span><span class="p">.</span><span class="n">n3</span>
+</pre></div>
+
+
+<p>Datalink should be described in the same file as their containing workflow.</p>
+<h2 id="identifier_1">Identifier</h2>

[... 345 lines stripped ...]