diff --git a/taverna-scufl2-wfdesc/src/main/java/org/apache/taverna/scufl2/wfdesc/ontologies/RO.java b/taverna-scufl2-wfdesc/src/main/java/org/apache/taverna/scufl2/wfdesc/ontologies/RO.java
new file mode 100644
index 0000000..9a1feab
--- /dev/null
+++ b/taverna-scufl2-wfdesc/src/main/java/org/apache/taverna/scufl2/wfdesc/ontologies/RO.java
@@ -0,0 +1,56 @@
+/*
+ * 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
+ * "License"); 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
+ * "AS IS" 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.
+ * 
+ */
+package org.apache.taverna.scufl2.wfdesc.ontologies; 
+import org.apache.jena.rdf.model.*;
+import org.apache.jena.ontology.*;
+ 
+/**
+ * Constants for the Research Object ro vocabulary
+ * 
+ * @see https://w3id.org/ro/2016-01-28/ro
+ */
+public class RO {
+    /** <p>The ontology model that holds the vocabulary terms</p> */
+    private static final OntModel M_MODEL = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM, null );
+    
+    /** <p>The namespace of the vocabulary as a string</p> */
+    public static final String NS = "http://purl.org/wf4ever/ro#";
+    
+    /** <p>The namespace of the vocabulary as a string</p>
+     * @return namespace as String
+     * @see #NS */
+    public static String getURI() {return NS;}
+    
+    /** <p>The namespace of the vocabulary as a resource</p> */
+    public static final Resource NAMESPACE = M_MODEL.createResource( NS );
+    
+    public static final OntClass AggregatedAnnotation = M_MODEL.createClass( NS + "AggregatedAnnotation" );
+    public static final OntClass Folder = M_MODEL.createClass( NS + "Folder" );
+    public static final OntClass FolderEntry = M_MODEL.createClass( NS + "FolderEntry" );
+    public static final OntClass Manifest = M_MODEL.createClass( NS + "Manifest" );
+    public static final OntClass ResearchObject = M_MODEL.createClass( NS + "ResearchObject" );
+    public static final OntClass Resource = M_MODEL.createClass( NS + "Resource" );
+
+    public static final ObjectProperty annotatesAggregatedResource = M_MODEL.createObjectProperty( NS + "annotatesAggregatedResource" );
+    public static final ObjectProperty rootFolder = M_MODEL.createObjectProperty( NS + "rootFolder" );
+    
+    public static final DatatypeProperty entryName = M_MODEL.createDatatypeProperty( NS + "entryName" );
+    
+}
diff --git a/taverna-scufl2-wfdesc/src/main/java/org/apache/taverna/scufl2/wfdesc/ontologies/ROEvo.java b/taverna-scufl2-wfdesc/src/main/java/org/apache/taverna/scufl2/wfdesc/ontologies/ROEvo.java
new file mode 100644
index 0000000..f8826b7
--- /dev/null
+++ b/taverna-scufl2-wfdesc/src/main/java/org/apache/taverna/scufl2/wfdesc/ontologies/ROEvo.java
@@ -0,0 +1,74 @@
+/*
+ * 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
+ * "License"); 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
+ * "AS IS" 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.
+ * 
+ */
+package org.apache.taverna.scufl2.wfdesc.ontologies; 
+import org.apache.jena.rdf.model.*;
+import org.apache.jena.ontology.*;
+ 
+/**
+ * Constants for the Research Object roevo vocabulary
+ * 
+ * @see https://w3id.org/ro/2016-01-28/roevo
+ */
+public class ROEvo {
+    /** <p>The ontology model that holds the vocabulary terms</p> */
+    private static final OntModel M_MODEL = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM, null );
+    
+    /** <p>The namespace of the vocabulary as a string</p> */
+    public static final String NS = "http://purl.org/wf4ever/roevo#";
+    
+    /** <p>The namespace of the vocabulary as a string</p>
+     * @return namespace as String
+     * @see #NS */
+    public static String getURI() {return NS;}
+    
+    /** <p>The namespace of the vocabulary as a resource</p> */
+    public static final Resource NAMESPACE = M_MODEL.createResource( NS );
+    
+    public static final OntClass Addition = M_MODEL.createClass( NS + "Addition" );
+    
+    public static final OntClass AggregatedAnnotation = M_MODEL.createClass( NS + "AggregatedAnnotation" );
+    public static final OntClass ArchivedRO = M_MODEL.createClass( NS + "ArchivedRO" );
+    public static final OntClass Change = M_MODEL.createClass( NS + "Change" );
+    public static final OntClass ChangeSpecification = M_MODEL.createClass( NS + "ChangeSpecification" );
+    public static final OntClass LiveRO = M_MODEL.createClass( NS + "LiveRO" );
+    public static final OntClass Modification = M_MODEL.createClass( NS + "Modification" );
+    public static final OntClass Removal = M_MODEL.createClass( NS + "Removal" );
+    public static final OntClass SnapshotRO = M_MODEL.createClass( NS + "SnapshotRO" );
+    public static final OntClass VersionableResource = M_MODEL.createClass( NS + "VersionableResource" );
+    
+
+    public static final ObjectProperty fromVersion = M_MODEL.createObjectProperty( NS + "fromVersion" );
+    public static final ObjectProperty hasArchive = M_MODEL.createObjectProperty( NS + "hasArchive" );
+    public static final ObjectProperty hasChange = M_MODEL.createObjectProperty( NS + "hasChange" );
+    public static final ObjectProperty hasPreviousChange = M_MODEL.createObjectProperty( NS + "hasPreviousChange" );
+    public static final ObjectProperty hasRevision = M_MODEL.createObjectProperty( NS + "hasRevision" );
+    public static final ObjectProperty hasSnapshot = M_MODEL.createObjectProperty( NS + "hasSnapshot" );
+    public static final ObjectProperty isArchiveOf = M_MODEL.createObjectProperty( NS + "isArchiveOf" );
+    public static final ObjectProperty relatedResource = M_MODEL.createObjectProperty( NS + "relatedResource" );
+    public static final ObjectProperty toVersion = M_MODEL.createObjectProperty( NS + "toVersion" );
+    public static final ObjectProperty wasArchivedBy = M_MODEL.createObjectProperty( NS + "wasArchivedBy" );
+    public static final ObjectProperty wasChangedBy = M_MODEL.createObjectProperty( NS + "wasChangedBy" );
+    public static final ObjectProperty wasSnapshotedBy = M_MODEL.createObjectProperty( NS + "wasSnapshotedBy" );
+       
+    public static final DatatypeProperty archivedAtTime = M_MODEL.createDatatypeProperty( NS + "archivedAtTime" );
+    // Note: Typo "snapshoted" in upstream vocabulary
+    public static final DatatypeProperty snapshottedAtTime = M_MODEL.createDatatypeProperty( NS + "snapshotedAtTime" );
+}
+
