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

[43/51] [partial] incubator-taverna-language git commit: temporarily empty repository

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/PathAnnotation.java
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/PathAnnotation.java b/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/PathAnnotation.java
deleted file mode 100644
index e5e76e3..0000000
--- a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/PathAnnotation.java
+++ /dev/null
@@ -1,126 +0,0 @@
-package org.apache.taverna.robundle.manifest;
-
-/*
- * 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.
- */
-
-
-import java.net.URI;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonPropertyOrder;
-
-@JsonPropertyOrder(value = { "uri", "about", "content" })
-public class PathAnnotation {
-	private List<URI> about = new ArrayList<>();
-	private URI content;
-	private URI uri;
-
-	public void generateAnnotationId() {
-		setUri(URI.create("urn:uuid:" + UUID.randomUUID()));
-	}
-
-	@JsonIgnore
-	public URI getAbout() {
-		if (about.isEmpty()) {
-			return null;
-		} else {
-			return about.get(0);
-		}
-	}
-
-	@JsonIgnore
-	public List<URI> getAboutList() {
-		return about;
-	}
-
-	@JsonProperty("about")
-	public Object getAboutObject() {
-		if (about.isEmpty()) {
-			return null;
-		}
-		if (about.size() == 1) {
-			return about.get(0);
-		} else {
-			return about;
-		}
-	}
-
-	@Deprecated
-	public URI getAnnotion() {
-		return getUri();
-	}
-
-	public URI getContent() {
-		return content;
-	}
-
-	public URI getUri() {
-		return uri;
-	}
-
-	private URI relativizePath(Path path) {
-		return URI.create("/.ro/").relativize(
-				URI.create(path.toUri().getRawPath()));
-	}
-
-	public void setAbout(List<URI> about) {
-		if (about == null) {
-			throw new NullPointerException("about list can't be null");
-		}
-		this.about = about;
-	}
-
-	public void setAbout(Path path) {
-		setAbout(relativizePath(path));
-	}
-
-	public void setAbout(URI about) {
-		this.about.clear();
-		if (about != null) {
-			this.about.add(about);
-		}
-	}
-
-	@Deprecated
-	public void setAnnotation(URI annotation) {
-		setUri(annotation);
-	}
-
-	public void setContent(Path path) {
-		this.content = relativizePath(path);
-	}
-
-	public void setContent(URI content) {
-		this.content = content;
-	}
-
-	public void setUri(URI uri) {
-		this.uri = uri;
-	}
-
-	@Override
-	public String toString() {
-		return "Annotation: " + getContent() + " about " + getAbout();
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/PathMetadata.java
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/PathMetadata.java b/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/PathMetadata.java
deleted file mode 100644
index 2e22ae2..0000000
--- a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/PathMetadata.java
+++ /dev/null
@@ -1,207 +0,0 @@
-package org.apache.taverna.robundle.manifest;
-
-/*
- * 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.
- */
-
-
-import java.net.URI;
-import java.nio.file.Path;
-import java.nio.file.attribute.FileTime;
-import java.util.ArrayList;
-import java.util.List;
-
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonPropertyOrder;
-
-@JsonPropertyOrder(value = { "uri", "mediatype", "createdOn", "createdBy",
-		"authoredOn", "authoredBy", "conformsTo", "bundledAs" })
-public class PathMetadata {
-
-	private static URI ROOT = URI.create("/");
-
-	private List<Agent> authoredBy = new ArrayList<>();
-	private FileTime authoredOn;
-	private Proxy bundledAs;
-
-	private URI conformsTo;
-	private Agent createdBy;
-
-	private FileTime createdOn;
-	private Path file;
-
-	private String mediatype;
-
-	private URI uri;
-
-	protected PathMetadata() {
-	}
-
-	@JsonCreator
-	public PathMetadata(String uriStr) {
-		setUri(URI.create(uriStr));
-	}
-
-	public List<Agent> getAuthoredBy() {
-		return authoredBy;
-	}
-
-	public FileTime getAuthoredOn() {
-		return authoredOn;
-	}
-
-	public Proxy getBundledAs() {
-		return bundledAs;
-	}
-
-	public URI getConformsTo() {
-		return conformsTo;
-	}
-
-	public Agent getCreatedBy() {
-		return createdBy;
-	}
-
-	public FileTime getCreatedOn() {
-		return createdOn;
-	}
-
-	@JsonIgnore
-	public Path getFile() {
-		return file;
-	}
-
-	@JsonIgnore
-	@Deprecated
-	public Path getFolder() {
-		Proxy bundledAs = getBundledAs();
-		if (bundledAs == null) {
-			return null;
-		}
-		return bundledAs.getFolder();
-	}
-
-	public String getMediatype() {
-		return mediatype;
-	}
-
-	@JsonIgnore
-	public Proxy getOrCreateBundledAs() {
-		if (bundledAs == null) {
-			bundledAs = new Proxy();
-			setProxy();
-		}
-		return bundledAs;
-	}
-
-	@JsonIgnore
-	@Deprecated
-	public URI getProxy() {
-		Proxy bundledAs = getBundledAs();
-		if (bundledAs == null) {
-			return null;
-		}
-		return bundledAs.getURI();
-	}
-
-	public URI getUri() {
-		return uri;
-	}
-
-	public void setAuthoredBy(List<Agent> authoredBy) {
-		if (authoredBy == null) {
-			throw new NullPointerException("authoredBy list can't be empty");
-		}
-		this.authoredBy = authoredBy;
-	}
-
-	public void setAuthoredOn(FileTime authoredOn) {
-		this.authoredOn = authoredOn;
-	}
-
-	public void setBundledAs(Proxy bundledAs) {
-		if (bundledAs == null) {
-			throw new NullPointerException(
-					"bundledAs can't be empty (try a new Proxy instance)");
-		}
-		this.bundledAs = bundledAs;
-	}
-
-	public void setConformsTo(URI conformsTo) {
-		this.conformsTo = conformsTo;
-	}
-
-	public void setCreatedBy(Agent createdBy) {
-		this.createdBy = createdBy;
-	}
-
-	public void setCreatedOn(FileTime createdOn) {
-		this.createdOn = createdOn;
-	}
-
-	public void setFile(Path file) {
-		this.file = file;
-		Path root = this.file.resolve("/");
-		URI uri = ROOT.resolve(root.toUri().relativize(file.toUri()));
-		setUri(uri);
-	}
-
-	@Deprecated
-	public void setFolder(Path folder) {
-		getOrCreateBundledAs().setFolder(folder);
-	}
-
-	public void setMediatype(String mediatype) {
-		this.mediatype = mediatype;
-	}
-
-	@Deprecated
-	public void setProxy() {
-		getOrCreateBundledAs().setURI();
-	}
-
-	@Deprecated
-	public void setProxy(URI proxy) {
-		getOrCreateBundledAs().setURI(proxy);
-	}
-
-	public void setUri(URI uri) {
-		this.uri = uri;
-		if (!uri.isAbsolute()) {
-			// TODO: How to create a Path without knowing the root?
-			// file = uri;
-			// this.uri = null;
-		}
-	}
-
-	@Override
-	public String toString() {
-		if (getUri() != null) {
-			return getUri().toString();
-		}
-		if (getFile() != null) {
-			return getFile().toString();
-		}
-		if (getProxy() != null) {
-			return getProxy().toString();
-		}
-		return "PathMetadata <null>";
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/Proxy.java
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/Proxy.java b/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/Proxy.java
deleted file mode 100644
index b303bc8..0000000
--- a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/Proxy.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package org.apache.taverna.robundle.manifest;
-
-/*
- * 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.
- */
-
-
-import java.net.URI;
-import java.nio.file.Path;
-import java.nio.file.attribute.FileTime;
-import java.util.UUID;
-
-import com.fasterxml.jackson.annotation.JsonPropertyOrder;
-
-@JsonPropertyOrder(value = { "uri", "folder", "filename", "aggregatedBy",
-		"aggregatedOn" })
-public class Proxy {
-
-	private Agent aggregatedBy;
-	private FileTime aggregatedOn;
-	private String filename;
-	private Path folder;
-	private URI uri;
-
-	public Agent getAggregatedBy() {
-		return aggregatedBy;
-	}
-
-	public FileTime getAggregatedOn() {
-		return aggregatedOn;
-	}
-
-	public String getFilename() {
-		return filename;
-	}
-
-	public Path getFolder() {
-		return folder;
-	}
-
-	public URI getURI() {
-		return uri;
-	}
-
-	public void setAggregatedBy(Agent aggregatedBy) {
-		this.aggregatedBy = aggregatedBy;
-	}
-
-	public void setAggregatedOn(FileTime aggregatedOn) {
-		this.aggregatedOn = aggregatedOn;
-	}
-
-	public void setFilename(String filename) {
-		this.filename = filename;
-	}
-
-	public void setFolder(Path folder) {
-		this.folder = folder;
-	}
-
-	public void setURI() {
-		setURI(URI.create("urn:uuid:" + UUID.randomUUID()));
-	}
-
-	public void setURI(URI uri) {
-		this.uri = uri;
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/RDFToManifest.java
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/RDFToManifest.java b/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/RDFToManifest.java
deleted file mode 100644
index 6328bb8..0000000
--- a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/RDFToManifest.java
+++ /dev/null
@@ -1,514 +0,0 @@
-package org.apache.taverna.robundle.manifest;
-
-/*
- * 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.
- */
-
-
-import static com.hp.hpl.jena.ontology.OntModelSpec.OWL_DL_MEM_RULE_INF;
-import static com.hp.hpl.jena.rdf.model.ModelFactory.createOntologyModel;
-import static org.apache.taverna.robundle.utils.PathHelper.relativizeFromBase;
-import static org.apache.taverna.robundle.utils.RDFUtils.literalAsFileTime;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.UUID;
-import java.util.logging.Logger;
-
-import org.apache.jena.riot.Lang;
-import org.apache.jena.riot.RDFDataMgr;
-import org.apache.jena.riot.RiotException;
-
-import com.hp.hpl.jena.ontology.DatatypeProperty;
-import com.hp.hpl.jena.ontology.Individual;
-import com.hp.hpl.jena.ontology.ObjectProperty;
-import com.hp.hpl.jena.ontology.OntClass;
-import com.hp.hpl.jena.ontology.OntModel;
-import com.hp.hpl.jena.ontology.OntResource;
-import com.hp.hpl.jena.rdf.model.Model;
-import com.hp.hpl.jena.rdf.model.ModelFactory;
-import com.hp.hpl.jena.rdf.model.RDFNode;
-import com.hp.hpl.jena.util.iterator.ExtendedIterator;
-
-public class RDFToManifest {
-	public static class ClosableIterable<T> implements AutoCloseable,
-			Iterable<T> {
-
-		private ExtendedIterator<T> iterator;
-
-		public ClosableIterable(ExtendedIterator<T> iterator) {
-			this.iterator = iterator;
-		}
-
-		@Override
-		public void close() {
-			iterator.close();
-		}
-
-		@Override
-		public ExtendedIterator<T> iterator() {
-			return iterator;
-		}
-	}
-
-	private static final String BUNDLE = "http://purl.org/wf4ever/bundle#";
-
-	private static final String BUNDLE_RDF = "/ontologies/bundle.owl";
-	private static final String DCT = "http://purl.org/dc/terms/";
-	private static final String FOAF_0_1 = "http://xmlns.com/foaf/0.1/";
-	private static final String FOAF_RDF = "/ontologies/foaf.rdf";
-
-	private static Logger logger = Logger.getLogger(RDFToManifest.class
-			.getCanonicalName());
-	private static final String OA = "http://www.w3.org/ns/oa#";
-	private static final String OA_RDF = "/ontologies/oa.rdf";
-	private static final String ORE = "http://www.openarchives.org/ore/terms/";
-	private static final String PAV = "http://purl.org/pav/";
-	private static final String PAV_RDF = "/ontologies/pav.rdf";
-	private static final String PROV = "http://www.w3.org/ns/prov#";
-	private static final String PROV_AQ_RDF = "/ontologies/prov-aq.rdf";
-	private static final String PROV_O = "http://www.w3.org/ns/prov-o#";
-	private static final String PROV_O_RDF = "/ontologies/prov-o.rdf";
-	@SuppressWarnings("unused")
-	private static final String RO = "http://purl.org/wf4ever/ro#";
-	static {
-		setCachedHttpClientInJsonLD();
-	}
-
-	public static <T> ClosableIterable<T> iterate(ExtendedIterator<T> iterator) {
-		return new ClosableIterable<T>(iterator);
-	}
-
-	protected static Model jsonLdAsJenaModel(InputStream jsonIn, URI base)
-			throws IOException, RiotException {
-		Model model = ModelFactory.createDefaultModel();
-		RDFDataMgr.read(model, jsonIn, base.toASCIIString(), Lang.JSONLD);
-		return model;
-
-		//
-		// Object input = JSONUtils.fromInputStream(jsonIn);
-		// JSONLDTripleCallback callback = new JenaTripleCallback();
-		// Model model = (Model)JSONLD.toRDF(input, callback, new
-		// Options(base.toASCIIString()));
-		// return model;
-	}
-
-	protected static URI makeBaseURI() throws URISyntaxException {
-		return new URI("app", UUID.randomUUID().toString(), "/", (String) null);
-	}
-
-	/**
-	 * Use a JarCacheStorage so that our JSON-LD @context can be loaded from our
-	 * classpath and not require network connectivity
-	 * 
-	 */
-	protected static void setCachedHttpClientInJsonLD() {
-		// JarCacheStorage cacheStorage = new JarCacheStorage(
-		// RDFToManifest.class.getClassLoader());
-		// synchronized (DocumentLoader.class) {
-		// HttpClient oldHttpClient = DocumentLoader.getHttpClient();
-		// CachingHttpClient wrappedHttpClient = new CachingHttpClient(
-		// oldHttpClient, cacheStorage, cacheStorage.getCacheConfig());
-		// DocumentLoader.setHttpClient(wrappedHttpClient);
-		// }
-		// synchronized (JSONUtils.class) {
-		// HttpClient oldHttpClient = JSONUtilsSub.getHttpClient();
-		// CachingHttpClient wrappedHttpClient = new CachingHttpClient(
-		// oldHttpClient, cacheStorage, cacheStorage.getCacheConfig());
-		// JSONUtilsSub.setHttpClient(wrappedHttpClient);
-		// }
-	}
-	private ObjectProperty aggregates;
-	private OntClass aggregation;
-	private ObjectProperty authoredBy;
-	private DatatypeProperty authoredOn;
-	private OntModel bundle;
-	private ObjectProperty conformsTo;
-	private ObjectProperty createdBy;
-	private DatatypeProperty createdOn;
-	private OntModel dct;
-	private OntModel foaf;
-	private DatatypeProperty foafName;
-	private DatatypeProperty format;
-	private ObjectProperty hasAnnotation;
-
-	private ObjectProperty hasBody;
-
-	private ObjectProperty hasProvenance;
-
-	private ObjectProperty hasProxy;
-
-	private ObjectProperty hasTarget;
-	private ObjectProperty inFolder;
-	private ObjectProperty isDescribedBy;
-	private OntModel oa;
-	private OntModel ore;
-	private OntModel pav;
-
-	private OntModel prov;
-
-	private OntModel provaq;
-
-	private ObjectProperty proxyFor;
-
-	private ObjectProperty proxyIn;
-
-	private OntClass standard;
-
-	public RDFToManifest() {
-		loadOntologies();
-	}
-
-	private void checkNotNull(Object... possiblyNulls) {
-		int i = 0;
-		for (Object check : possiblyNulls) {
-			if (check == null)
-				throw new IllegalStateException("Could not load item #" + i);
-			i++;
-		}
-	}
-
-	private Individual findRO(OntModel model, URI base) {
-		try (ClosableIterable<? extends OntResource> instances = iterate(aggregation
-				.listInstances())) {
-			for (OntResource o : instances)
-				// System.out.println("Woo " + o);
-				return o.asIndividual();
-		}
-		// Fallback - resolve as "/"
-		// TODO: Ensure it's an Aggregation?
-		return model.getIndividual(base.toString());
-	}
-
-	private List<Agent> getAgents(URI base, Individual in,
-			ObjectProperty property) {
-		List<Agent> creators = new ArrayList<>();
-		for (Individual agent : listObjectProperties(in, property)) {
-			Agent a = new Agent();
-			if (agent.getURI() != null)
-				a.setUri(relativizeFromBase(agent.getURI(), base));
-
-			RDFNode name = agent.getPropertyValue(foafName);
-			if (name != null && name.isLiteral())
-				a.setName(name.asLiteral().getLexicalForm());
-			creators.add(a);
-		}
-		return creators;
-	}
-
-	protected OntModel getOntModel() {
-		OntModel ontModel = createOntologyModel(OWL_DL_MEM_RULE_INF);
-		ontModel.setNsPrefix("foaf", FOAF_0_1);
-		ontModel.setNsPrefix("prov", PROV);
-		ontModel.setNsPrefix("ore", ORE);
-		ontModel.setNsPrefix("pav", PAV);
-		ontModel.setNsPrefix("dct", DCT);
-		// ontModel.getDocumentManager().loadImports(foaf.getOntModel());
-		return ontModel;
-	}
-
-	private Set<Individual> listObjectProperties(OntResource ontResource,
-			ObjectProperty prop) {
-		LinkedHashSet<Individual> results = new LinkedHashSet<>();
-		try (ClosableIterable<RDFNode> props = iterate(ontResource
-				.listPropertyValues(prop))) {
-			for (RDFNode node : props) {
-				if (!node.isResource() || !node.canAs(Individual.class))
-					continue;
-				results.add(node.as(Individual.class));
-			}
-		}
-		return results;
-	}
-
-	protected synchronized void loadBundle() {
-		if (bundle != null)
-			return;
-		OntModel ontModel = loadOntologyFromClasspath(BUNDLE_RDF, BUNDLE);
-		hasProxy = ontModel.getObjectProperty(BUNDLE + "hasProxy");
-		hasAnnotation = ontModel.getObjectProperty(BUNDLE + "hasAnnotation");
-		inFolder = ontModel.getObjectProperty(BUNDLE + "inFolder");
-		checkNotNull(hasProxy, hasAnnotation, inFolder);
-		bundle = ontModel;
-	}
-
-	protected synchronized void loadDCT() {
-		if (dct != null)
-			return;
-
-		OntModel ontModel = loadOntologyFromClasspath(
-				"/ontologies/dcterms_od.owl",
-				"http://purl.org/wf4ever/dcterms_od");
-
-		// properties from dct
-		standard = ontModel.getOntClass(DCT + "Standard");
-		conformsTo = ontModel.getObjectProperty(DCT + "conformsTo");
-
-		// We'll cheat dc:format in
-		format = ontModel
-				.createDatatypeProperty("http://purl.org/dc/elements/1.1/"
-						+ "format");
-		checkNotNull(standard, conformsTo, format);
-
-		dct = ontModel;
-	}
-
-	//
-	protected synchronized void loadFOAF() {
-		if (foaf != null)
-			return;
-
-		OntModel ontModel = loadOntologyFromClasspath(FOAF_RDF, FOAF_0_1);
-
-		// properties from foaf
-		foafName = ontModel.getDatatypeProperty(FOAF_0_1 + "name");
-		checkNotNull(foafName);
-
-		foaf = ontModel;
-	}
-
-	protected synchronized void loadOA() {
-		if (oa != null)
-			return;
-		OntModel ontModel = loadOntologyFromClasspath(OA_RDF, OA);
-		hasTarget = ontModel.getObjectProperty(OA + "hasTarget");
-		hasBody = ontModel.getObjectProperty(OA + "hasBody");
-		checkNotNull(hasTarget, hasBody);
-		oa = ontModel;
-	}
-
-	protected void loadOntologies() {
-		loadDCT();
-		loadORE();
-		loadFOAF();
-		loadPROVO();
-		loadPAV();
-		loadPROVAQ();
-		loadOA();
-		loadBundle();
-	}
-
-	protected OntModel loadOntologyFromClasspath(String classPathUri, String uri) {
-		OntModel ontModel = createOntologyModel();
-
-		// Load from classpath
-		InputStream inStream = getClass().getResourceAsStream(classPathUri);
-		if (inStream == null)
-			throw new IllegalArgumentException("Can't load " + classPathUri);
-		// Ontology ontology = ontModel.createOntology(uri);
-		ontModel.read(inStream, uri);
-		try {
-			inStream.close();
-		} catch (IOException e) {
-			// Shouldn't happen
-		}
-		return ontModel;
-	}
-
-	protected synchronized void loadORE() {
-		if (ore != null)
-			return;
-		OntModel ontModel = loadOntologyFromClasspath(
-				"/ontologies/ore-owl.owl", "http://purl.org/wf4ever/ore-owl");
-		aggregation = ontModel.getOntClass(ORE + "Aggregation");
-
-		aggregates = ontModel.getObjectProperty(ORE + "aggregates");
-		proxyFor = ontModel.getObjectProperty(ORE + "proxyFor");
-		proxyIn = ontModel.getObjectProperty(ORE + "proxyIn");
-		isDescribedBy = ontModel.getObjectProperty(ORE + "isDescribedBy");
-
-		checkNotNull(aggregation, aggregates, proxyFor, proxyIn, isDescribedBy);
-
-		ore = ontModel;
-	}
-
-	protected synchronized void loadPAV() {
-		if (pav != null)
-			return;
-
-		OntModel ontModel = loadOntologyFromClasspath(PAV_RDF, PAV);
-		// properties from foaf
-		createdBy = ontModel.getObjectProperty(PAV + "createdBy");
-		createdOn = ontModel.getDatatypeProperty(PAV + "createdOn");
-		authoredBy = ontModel.getObjectProperty(PAV + "authoredBy");
-		authoredOn = ontModel.getDatatypeProperty(PAV + "authoredOn");
-		checkNotNull(createdBy, createdOn, authoredBy, authoredOn);
-
-		pav = ontModel;
-	}
-
-	protected synchronized void loadPROVAQ() {
-		if (provaq != null)
-			return;
-		OntModel ontModel = loadOntologyFromClasspath(PROV_AQ_RDF, PAV);
-
-		// properties from foaf
-		hasProvenance = ontModel.getObjectProperty(PROV + "has_provenance");
-		checkNotNull(hasProvenance);
-
-		provaq = ontModel;
-	}
-
-	protected synchronized void loadPROVO() {
-		if (prov != null)
-			return;
-		OntModel ontModel = loadOntologyFromClasspath(PROV_O_RDF, PROV_O);
-
-		checkNotNull(ontModel);
-
-		prov = ontModel;
-	}
-
-	@SuppressWarnings("deprecation")
-	private static void setPathProxy(PathMetadata meta, URI proxy) {
-		meta.setProxy(proxy);
-	}
-
-	public void readTo(InputStream manifestResourceAsStream, Manifest manifest,
-			URI manifestResourceBaseURI) throws IOException, RiotException {
-		OntModel model = new RDFToManifest().getOntModel();
-		model.add(jsonLdAsJenaModel(manifestResourceAsStream,
-				manifestResourceBaseURI));
-
-		// model.write(System.out, "TURTLE");
-		// System.out.println();
-
-		URI root = manifestResourceBaseURI.resolve("/");
-		Individual ro = findRO(model, root);
-		if (ro == null)
-			throw new IOException("root ResearchObject not found - "
-					+ "Not a valid RO Bundle manifest");
-
-		for (Individual manifestResource : listObjectProperties(ro,
-				isDescribedBy)) {
-			String uriStr = manifestResource.getURI();
-			if (uriStr == null) {
-				logger.warning("Skipping manifest without URI: "
-						+ manifestResource);
-				continue;
-			}
-			// URI relative = relativizeFromBase(uriStr, root);
-			Path path = manifest.getBundle().getFileSystem().provider()
-					.getPath(URI.create(uriStr));
-			manifest.getManifest().add(path);
-		}
-
-		List<Agent> creators = getAgents(root, ro, createdBy);
-		if (!creators.isEmpty()) {
-			manifest.setCreatedBy(creators.get(0));
-			if (creators.size() > 1)
-				logger.warning("Ignoring additional createdBy agents");
-		}
-
-		RDFNode created = ro.getPropertyValue(createdOn);
-		manifest.setCreatedOn(literalAsFileTime(created));
-
-		List<Agent> authors = getAgents(root, ro, authoredBy);
-		if (!authors.isEmpty())
-			manifest.setAuthoredBy(authors);
-		RDFNode authored = ro.getPropertyValue(authoredOn);
-		manifest.setAuthoredOn(literalAsFileTime(authored));
-
-		for (Individual aggrResource : listObjectProperties(ro, aggregates)) {
-			String uriStr = aggrResource.getURI();
-			// PathMetadata meta = new PathMetadata();
-			if (uriStr == null) {
-				logger.warning("Skipping aggregation without URI: "
-						+ aggrResource);
-				continue;
-			}
-
-			PathMetadata meta = manifest.getAggregation(relativizeFromBase(
-					uriStr, root));
-
-			Set<Individual> proxies = listObjectProperties(aggrResource,
-					hasProxy);
-			if (!proxies.isEmpty()) {
-				// We can only deal with the first one
-				Individual proxy = proxies.iterator().next();
-
-				String proxyUri = null;
-				if (proxy.getURI() != null)
-					proxyUri = proxy.getURI();
-				else if (proxy.getSameAs() != null)
-					proxyUri = proxy.getSameAs().getURI();
-				if (proxyUri != null)
-					setPathProxy(meta, relativizeFromBase(proxyUri, root));
-			}
-
-			creators = getAgents(root, aggrResource, createdBy);
-			if (!creators.isEmpty()) {
-				meta.setCreatedBy(creators.get(0));
-				if (creators.size() > 1)
-					logger.warning("Ignoring additional createdBy agents for "
-							+ meta);
-			}
-			meta.setCreatedOn(literalAsFileTime(aggrResource
-					.getPropertyValue(createdOn)));
-
-			for (Individual standard : listObjectProperties(aggrResource,
-					conformsTo))
-				if (standard.getURI() != null)
-					meta.setConformsTo(relativizeFromBase(standard.getURI(),
-							root));
-
-			RDFNode mediaType = aggrResource.getPropertyValue(format);
-			if (mediaType != null && mediaType.isLiteral())
-				meta.setMediatype(mediaType.asLiteral().getLexicalForm());
-		}
-
-		for (Individual ann : listObjectProperties(ro, hasAnnotation)) {
-			/*
-			 * Normally just one body per annotation, but just in case we'll
-			 * iterate and split them out (as our PathAnnotation can only keep a
-			 * single setContent() at a time)
-			 */
-			for (Individual body : listObjectProperties(
-					model.getOntResource(ann), hasBody)) {
-				if (body.getURI() == null) {
-					logger.warning("Can't find annotation body for anonymous "
-							+ body);
-					continue;
-				}
-				PathAnnotation pathAnn = new PathAnnotation();
-				pathAnn.setContent(relativizeFromBase(body.getURI(), root));
-
-				if (ann.getURI() != null)
-					pathAnn.setUri(relativizeFromBase(ann.getURI(), root));
-				else if (ann.getSameAs() != null
-						&& ann.getSameAs().getURI() != null)
-					pathAnn.setUri(relativizeFromBase(ann.getSameAs().getURI(),
-							root));
-
-				// Handle multiple about/hasTarget
-				for (Individual target : listObjectProperties(ann, hasTarget))
-					if (target.getURI() != null)
-						pathAnn.getAboutList().add(
-								relativizeFromBase(target.getURI(), root));
-				manifest.getAnnotations().add(pathAnn);
-			}
-		}
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/combine/CombineManifest.java
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/combine/CombineManifest.java b/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/combine/CombineManifest.java
deleted file mode 100644
index e75df7b..0000000
--- a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/combine/CombineManifest.java
+++ /dev/null
@@ -1,511 +0,0 @@
-package org.apache.taverna.robundle.manifest.combine;
-
-/*
- * 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.
- */
-
-
-import static com.hp.hpl.jena.rdf.model.ModelFactory.createDefaultModel;
-import static java.nio.file.Files.createDirectories;
-import static java.nio.file.Files.exists;
-import static java.nio.file.Files.isRegularFile;
-import static java.nio.file.Files.newInputStream;
-import static java.nio.file.Files.newOutputStream;
-import static java.nio.file.Files.setLastModifiedTime;
-import static java.util.logging.Level.FINE;
-import static java.util.logging.Level.WARNING;
-import static org.apache.jena.riot.RDFDataMgr.read;
-import static org.apache.jena.riot.RDFLanguages.RDFXML;
-import static org.apache.taverna.robundle.utils.RDFUtils.literalAsFileTime;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.file.Path;
-import java.nio.file.attribute.FileTime;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.logging.Logger;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.transform.Source;
-import javax.xml.transform.sax.SAXSource;
-
-import org.apache.jena.riot.RiotException;
-import org.apache.taverna.robundle.Bundle;
-import org.apache.taverna.robundle.manifest.Agent;
-import org.apache.taverna.robundle.manifest.PathAnnotation;
-import org.apache.taverna.robundle.manifest.PathMetadata;
-import org.identifiers.combine_specifications.omex_manifest.Content;
-import org.identifiers.combine_specifications.omex_manifest.ObjectFactory;
-import org.identifiers.combine_specifications.omex_manifest.OmexManifest;
-import org.xml.sax.InputSource;
-
-import com.hp.hpl.jena.query.QueryExecution;
-import com.hp.hpl.jena.query.QueryExecutionFactory;
-import com.hp.hpl.jena.query.QueryFactory;
-import com.hp.hpl.jena.query.QuerySolutionMap;
-import com.hp.hpl.jena.query.ResultSet;
-import com.hp.hpl.jena.rdf.model.Model;
-import com.hp.hpl.jena.rdf.model.Property;
-import com.hp.hpl.jena.rdf.model.RDFNode;
-import com.hp.hpl.jena.rdf.model.Resource;
-import com.hp.hpl.jena.rdf.model.Statement;
-import com.sun.xml.bind.marshaller.NamespacePrefixMapper;
-
-/**
- * Parse and generate COMBINE Archive OMEX manifest
- * 
- * @author Stian Soiland-Reyes
- */
-public class CombineManifest {
-	public static class ManifestNamespacePrefixMapperJAXB_RI extends
-			NamespacePrefixMapper {
-		@Override
-		public String[] getPreDeclaredNamespaceUris() {
-			return new String[] { OMEX_METADATA.toString() };
-		}
-
-		@Override
-		public String getPreferredPrefix(String namespaceUri,
-				String suggestion, boolean requirePrefix) {
-			if (namespaceUri.equals(OMEX_METADATA.toString()))
-				return "";
-			return suggestion;
-		}
-	}
-
-	private static final Logger logger = Logger.getLogger(CombineManifest.class
-			.getCanonicalName());
-	private static final String MANIFEST_XML = "manifest.xml";
-	private static final String OMEX_MANIFEST = "http://identifiers.org/combine.specifications/omex-manifest";
-		private static final URI OMEX_METADATA = URI
-			.create("http://identifiers.org/combine.specifications/omex-metadata");
-	private static final String sparqlPrefixes = "PREFIX foaf:  <http://xmlns.com/foaf/0.1/> \n"
-			+ "PREFIX vcard: <http://www.w3.org/2006/vcard/ns#> \n"
-			+ "PREFIX rdfs:  <http://www.w3.org/2000/01/rdf-schema#> \n"
-			+ "PREFIX dct:   <http://purl.org/dc/terms/> \n";
-
-	private static JAXBContext jaxbContext;
-	private static ObjectFactory objectFactory = new ObjectFactory();
-	private static boolean warnedPrefixMapper;
-
-	public static boolean containsManifest(Bundle bundle) {
-		return isRegularFile(manifestXmlPath(bundle));
-	}
-
-	protected static synchronized Marshaller createMarshaller()
-			throws JAXBException {
-		Marshaller marshaller = getJaxbContext().createMarshaller();
-		setPrefixMapper(marshaller);
-		return marshaller;
-	}
-
-	protected static synchronized Unmarshaller createUnMarshaller()
-			throws JAXBException {
-		Unmarshaller unmarshaller = getJaxbContext().createUnmarshaller();
-		return unmarshaller;
-	}
-
-	private static List<RDFNode> creatingAgentsFor(Resource r) {
-		logger.fine("Finding creator of " + r);
-		String queryStr = sparqlPrefixes + "SELECT ?agent WHERE { \n" + " { \n"
-				+ "  ?r dct:creator [ \n" + "	    rdfs:member ?agent \n"
-				+ "  ] \n" + " } UNION { \n" + "   ?r dct:creator ?agent .\n "
-				+ "   FILTER NOT EXISTS { ?agent rdfs:member ?member } \n"
-				+ " } \n" + "} \n";
-		logger.finer(QueryFactory.create(queryStr).toString());
-		QueryExecution qexec = QueryExecutionFactory.create(queryStr,
-				r.getModel());
-		QuerySolutionMap binding = new QuerySolutionMap();
-		binding.add("r", r);
-		qexec.setInitialBinding(binding);
-		ResultSet select = qexec.execSelect();
-		List<RDFNode> agents = new ArrayList<>();
-
-		while (select.hasNext()) {
-			RDFNode agent = select.next().get("agent");
-			logger.fine("Found: " + agent);
-			agents.add(agent);
-		}
-		return agents;
-	}
-
-	protected static synchronized JAXBContext getJaxbContext()
-			throws JAXBException {
-		if (jaxbContext == null)
-			jaxbContext = JAXBContext.newInstance(ObjectFactory.class);
-		return jaxbContext;
-	}
-
-	private static Path manifestXmlPath(Bundle bundle) {
-		return bundle.getRoot().resolve(MANIFEST_XML);
-	}
-
-	private static Resource mboxForAgent(Resource agentResource) {
-		logger.fine("Finding mbox of " + agentResource);
-		String queryStr = sparqlPrefixes + "SELECT ?mbox WHERE { \n"
-				+ "		{ ?agent foaf:mbox ?mbox } \n" + "	UNION  \n"
-				+ "		{ ?agent vcard:hasEmail ?mbox } \n" + "	UNION  \n"
-				+ "		{ ?agent vcard:email ?email .  \n"
-				+ "       BIND(IRI(CONCAT(\"mbox:\", ?email)) AS ?mbox) \n" // legacy
-				+ "	    } \n" + "} \n";
-		logger.finer(QueryFactory.create(queryStr).toString());
-		QueryExecution qexec = QueryExecutionFactory.create(queryStr,
-				agentResource.getModel());
-		QuerySolutionMap binding = new QuerySolutionMap();
-		binding.add("agent", agentResource);
-		qexec.setInitialBinding(binding);
-		ResultSet select = qexec.execSelect();
-		if (select.hasNext()) {
-			Resource mbox = select.next().getResource("mbox");
-			logger.fine("Found mbox: " + mbox);
-			return mbox;
-		}
-		logger.fine("mbox not found");
-		return null;
-	}
-
-	private static String nameForAgent(Resource agentResource) {
-		logger.fine("Finding name of " + agentResource);
-		String queryStr = sparqlPrefixes
-				+ "SELECT ?name WHERE { \n"
-				+ "		{ ?agent foaf:name ?name } \n"
-				+ "	UNION  \n"
-				+ "		{ ?agent vcard:fn ?name } \n"
-				+ "	UNION  \n"
-				+ "		{ ?agent vcard:FN ?name } \n"
-				+ // legacy
-				"	UNION  \n"
-				+ "		{ ?agent rdfs:label ?name } \n"
-				+ " UNION  \n"
-				+ "     { \n"
-				+ "         { ?agent vcard:n ?n } UNION { ?agent vcard:hasName ?n } \n"
-				+ "         ?n vcard:family-name ?family ; \n"
-				+ "            vcard:given-name ?given . \n"
-				+ "          BIND(CONCAT(?given, \" \", ?family) AS ?name) \n"
-				+ "     } \n" + " UNION \n" + "     { "
-				+ "         ?agent foaf:givenName ?given ; \n"
-				+ "                foaf:familyName ?family \n"
-				+ "          BIND(CONCAT(?given, \" \", ?family) AS ?name) \n"
-				+ "     } \n" + " UNION \n" + "     { "
-				+ "         ?agent foaf:firstName ?given ; \n"
-				+ "                foaf:surname ?family \n"
-				+ "          BIND(CONCAT(?given, \" \", ?family) AS ?name) \n"
-				+ "     } \n" + "	}  \n";
-		logger.finer(QueryFactory.create(queryStr).toString());
-		QueryExecution qexec = QueryExecutionFactory.create(queryStr,
-				agentResource.getModel());
-		QuerySolutionMap binding = new QuerySolutionMap();
-		binding.add("agent", agentResource);
-		qexec.setInitialBinding(binding);
-		ResultSet select = qexec.execSelect();
-		if (select.hasNext()) {
-			String name = select.next().getLiteral("name").getString();
-			logger.fine(name);
-			return name;
-		}
-		logger.fine("(null)");
-		return null;
-	}
-
-	private static Model parseRDF(Path metadata) throws IOException {
-		Model model = createDefaultModel();
-		try (InputStream in = newInputStream(metadata)) {
-			read(model, in, metadata.toUri().toASCIIString(), RDFXML);
-		}
-		return model;
-	}
-
-	protected static void setPrefixMapper(Marshaller marshaller) {
-		boolean setPrefixMapper = false;
-
-		try {
-			/*
-			 * This only works with JAXB RI, in which case we can set the
-			 * namespace prefix mapper
-			 */
-			Class.forName("com.sun.xml.bind.marshaller.NamespacePrefixMapper");
-			marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper",
-					new ManifestNamespacePrefixMapperJAXB_RI());
-			/*
-			 * Note: A similar mapper for the built-in java
-			 * (com.sun.xml.bind.internal.namespacePrefixMapper) is no longer
-			 * included here, as it will not (easily) compile with Maven.
-			 */
-			setPrefixMapper = true;
-		} catch (Exception e) {
-			logger.log(FINE, "Can't find NamespacePrefixMapper", e);
-		}
-
-		if (!setPrefixMapper && !warnedPrefixMapper) {
-			logger.info("Could not set prefix mapper (missing or incompatible JAXB) "
-					+ "- will use prefixes ns0, ns1, ..");
-			warnedPrefixMapper = true;
-		}
-	}
-
-	private Bundle bundle;
-
-	private org.apache.taverna.robundle.manifest.Manifest manifest;
-
-	public CombineManifest(org.apache.taverna.robundle.manifest.Manifest manifest) {
-		this.manifest = manifest;
-		this.bundle = manifest.getBundle();
-	}
-
-	@SuppressWarnings("deprecation")
-	private Collection<URI> bundleSubjects() throws IOException {
-		Set<URI> subjects = new HashSet<>();
-		subjects.add(bundle.getRoot().toUri());
-		for (PathMetadata pathMetadata : manifest.getAggregates()) {
-			subjects.add(pathMetadata.getUri());
-			if (pathMetadata.getFile() != null)
-				subjects.add(pathMetadata.getFile().toUri());
-			if (pathMetadata.getFolder() != null)
-				subjects.add(pathMetadata.getFolder().toUri());
-			// subjects.add(pathMetadata.getProxy());
-		}
-		for (PathAnnotation a : manifest.getAnnotations())
-			subjects.add(a.getUri());
-		subjects.remove(null);
-		return subjects;
-	}
-
-	public Path createManifestXML() throws IOException {
-		OmexManifest omexManifest = makeOmexManifest();
-
-		Path manifestXml = manifestXmlPath(bundle);
-		createDirectories(manifestXml.getParent());
-		try (OutputStream outStream = newOutputStream(manifestXml)) {
-			try {
-				createMarshaller().marshal(omexManifest, outStream);
-			} catch (JAXBException e) {
-				throw new RuntimeException("Could not serialize OMEX Manifest",
-						e);
-			}
-		}
-		return manifestXml;
-	}
-
-	private void findAnnotations() throws IOException {
-		Path metadataRdf = null;
-		for (PathMetadata agg : manifest.getAggregates())
-			if (OMEX_METADATA.equals(agg.getConformsTo())) {
-				metadataRdf = agg.getFile();
-				break; // TODO: Support not just the first one
-				// TODO: support external metadata with agg.getUri() ?
-			}
-		if (metadataRdf == null)
-			// fallback to hard-coded filename
-			metadataRdf = bundle.getRoot().resolve("metadata.rdf");
-		if (!exists(metadataRdf))
-			return;
-
-		Model metadata;
-		try {
-			metadata = parseRDF(metadataRdf);
-		} catch (IOException e) {
-			logger.log(WARNING, "Can't read " + metadataRdf, e);
-			return;
-		} catch (RiotException e) {
-			logger.log(WARNING, "Can't parse " + metadataRdf, e);
-			return;
-		}
-
-		for (URI about : bundleSubjects()) {
-			Resource resource = metadata.getResource(about.toString());
-			if (!metadata.containsResource(resource))
-				continue;
-
-			PathAnnotation ann = new PathAnnotation();
-			ann.setAbout(manifest.relativeToBundleRoot(about));
-			ann.setContent(manifest.relativeToBundleRoot(metadataRdf.toUri()));
-			manifest.getAnnotations().add(ann);
-
-			// Extract information that could be in our manifest
-			PathMetadata pathMetadata = manifest.getAggregation(about);
-
-			// Created date. We'll prefer dcModified.
-			Property dcCreated = metadata
-					.getProperty("http://purl.org/dc/terms/created");
-			Property dcModified = metadata
-					.getProperty("http://purl.org/dc/terms/modified");
-			Statement createdSt = resource.getProperty(dcModified);
-			if (createdSt == null)
-				createdSt = resource.getProperty(dcCreated);
-			if (createdSt != null) {
-				FileTime fileTime = literalAsFileTime(createdSt.getObject());
-				if (fileTime == null && createdSt.getResource().isResource()) {
-					// perhaps one of those strange mixups of XML and RDF...
-					Property dcW3CDTF = metadata
-							.getProperty("http://purl.org/dc/terms/W3CDTF");
-					Statement w3cSt = createdSt.getResource().getProperty(
-							dcW3CDTF);
-					if (w3cSt != null)
-						fileTime = literalAsFileTime(w3cSt.getObject());
-				}
-				if (fileTime != null) {
-					pathMetadata.setCreatedOn(fileTime);
-					if (pathMetadata.getFile() != null)
-						setLastModifiedTime(pathMetadata.getFile(),
-								fileTime);
-				}
-			}
-
-			for (RDFNode s : creatingAgentsFor(resource)) {
-				if (pathMetadata.getCreatedBy() != null) {
-					logger.warning("Ignoring additional createdBy agents for "
-							+ resource);
-					break;
-				}
-				if (s.isLiteral()) {
-					pathMetadata.setCreatedBy(new Agent(s.asLiteral()
-							.getLexicalForm()));
-					continue;
-				}
-				Resource agentResource = s.asResource();
-				Agent agent = new Agent();
-				if (agentResource.isURIResource()) {
-					URI agentUri = URI.create(agentResource.getURI());
-					if (agentResource.getURI().startsWith("http://orcid.org/"))
-						agent.setOrcid(agentUri);
-					else
-						agent.setUri(agentUri);
-				} else {
-					Resource mbox = mboxForAgent(agentResource);
-					if (mbox != null && mbox.isURIResource())
-						agent.setUri(URI.create(mbox.getURI()));
-				}
-				agent.setName(nameForAgent(agentResource));
-				pathMetadata.setCreatedBy(agent);
-			}
-			if (pathMetadata.getFile().equals(bundle.getRoot())
-					|| pathMetadata.getFile().equals(metadataRdf)) {
-				// Statements where about the RO itself
-				manifest.setCreatedOn(pathMetadata.getCreatedOn());
-				manifest.setCreatedBy(pathMetadata.getCreatedBy());
-			}
-		}
-	}
-
-	private OmexManifest makeOmexManifest() {
-		Path manifestXml = bundle.getRoot().resolve("manifest.xml");
-		OmexManifest omexManifest = objectFactory.createOmexManifest();
-
-		PathMetadata aggr = manifest.getAggregation(manifestXml);
-		if (aggr.getConformsTo() == null) {
-			// Add the manifest itself
-			aggr.setConformsTo(URI.create(OMEX_MANIFEST));
-		}
-
-		for (PathMetadata metadata : manifest.getAggregates()) {
-			Content content = objectFactory.createContent();
-			Path file = metadata.getFile();
-
-			if (file == null) {
-				content.setLocation(metadata.getUri().toString());
-			} else {
-				Path relPath = metadata.getFile().relativize(bundle.getRoot());
-				content.setLocation("./" + relPath);
-			}
-			if (metadata.getMediatype() != null
-					&& !metadata.getMediatype().isEmpty()) {
-				content.setFormat(metadata.getMediatype());
-			} else if (metadata.getConformsTo() != null) {
-				content.setFormat(metadata.getConformsTo().toString());
-			} else {
-				// Binary fallback as 'format' is required attribute
-				content.setFormat("application/octet-stream");
-			}
-
-			// TODO: Handle 'master' attribute
-
-			omexManifest.getContent().add(content);
-		}
-		// TODO: Should we add .ro/manifest.json and .ro/* ?
-		return omexManifest;
-	}
-
-	public void readCombineArchive() throws IOException {
-		readManifestXML();
-		findAnnotations();
-
-	}
-
-	public void readManifestXML() throws IOException {
-		Path manifestXml = manifestXmlPath(bundle);
-		OmexManifest omexManifest;
-		try (InputStream inStream = newInputStream(manifestXml)) {
-			InputSource src = new InputSource(inStream);
-			Source source = new SAXSource(src);
-			omexManifest = createUnMarshaller().unmarshal(source,
-					OmexManifest.class).getValue();
-			// omexManifest = (OmexManifest) createUnMarshaller().unmarshal(inStream);
-		} catch (JAXBException | ClassCastException e) {
-			// logger.warning("Could not parse " + manifestXml);
-			throw new IOException("Could not parse " + manifestXml, e);
-		}
-		if (!manifest.getManifest().contains(manifestXml))
-			manifest.getManifest().add(manifestXml);
-		for (Content c : omexManifest.getContent()) {
-			PathMetadata metadata;
-			if (c.getLocation().contains(":")) {
-				try {
-					URI uri = new URI(c.getLocation());
-					if (!uri.isAbsolute()) {
-						logger.warning("Not an absolute URI, but contains :"
-								+ c.getLocation());
-						continue;
-					}
-					metadata = manifest.getAggregation(uri);
-				} catch (URISyntaxException e) {
-					logger.warning("Invalid URI " + c.getLocation());
-					continue;
-				}
-			} else {
-				Path path = bundle.getRoot().resolve(c.getLocation());
-				if (!exists(path)) {
-					logger.warning(MANIFEST_XML + " listed relative path "
-							+ path + ", but it does not exist in bundle");
-					continue;
-				}
-				metadata = manifest.getAggregation(path);
-			}
-
-			// Format - is it an URI or media type?
-			if (c.getFormat().contains(":")) {
-				metadata.setConformsTo(URI.create(c.getFormat()));
-			} else if (!c.getFormat().isEmpty()) {
-				metadata.setMediatype(c.getFormat());
-			} else if (metadata.getFile() != null) {
-				metadata.setMediatype(manifest.guessMediaType(metadata
-						.getFile()));
-			} // else: Not needed for URIs
-		}
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/odf/ODFManifest.java
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/odf/ODFManifest.java b/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/odf/ODFManifest.java
deleted file mode 100644
index 4f96679..0000000
--- a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/odf/ODFManifest.java
+++ /dev/null
@@ -1,321 +0,0 @@
-package org.apache.taverna.robundle.manifest.odf;
-
-/*
- * 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.
- */
-
-
-import static java.nio.file.Files.createDirectories;
-import static java.nio.file.Files.exists;
-import static java.nio.file.Files.isRegularFile;
-import static java.nio.file.Files.newInputStream;
-import static java.nio.file.Files.newOutputStream;
-import static java.nio.file.Files.size;
-import static java.util.logging.Level.FINE;
-import static java.util.logging.Level.WARNING;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.math.BigInteger;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.file.Path;
-import java.util.logging.Logger;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
-import javax.xml.bind.Unmarshaller;
-
-import oasis.names.tc.opendocument.xmlns.manifest._1.FileEntry;
-import oasis.names.tc.opendocument.xmlns.manifest._1.Manifest;
-import oasis.names.tc.opendocument.xmlns.manifest._1.ObjectFactory;
-
-import org.apache.taverna.robundle.Bundle;
-import org.apache.taverna.robundle.manifest.PathMetadata;
-
-import com.sun.xml.bind.marshaller.NamespacePrefixMapper;
-
-public class ODFManifest {
-	public static class ManifestNamespacePrefixMapperJAXB_RI extends
-			NamespacePrefixMapper {
-		@Override
-		public String[] getPreDeclaredNamespaceUris() {
-			// TODO Auto-generated method stub
-			return super.getPreDeclaredNamespaceUris();
-		}
-
-		@Override
-		public String getPreferredPrefix(String namespaceUri,
-				String suggestion, boolean requirePrefix) {
-			if (namespaceUri
-					.equals("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"))
-				return "manifest";
-			return suggestion;
-		}
-	}
-
-	public static final String CONTAINER_XML = "META-INF/container.xml";
-	private static JAXBContext jaxbContext;
-	private static Logger logger = Logger.getLogger(ODFManifest.class
-			.getCanonicalName());
-
-	public static final String MANIFEST_XML = "META-INF/manifest.xml";
-
-	private static final String ODF_MANIFEST_VERSION = "1.2";
-	private static boolean warnedPrefixMapper;
-
-	public static boolean containsManifest(Bundle bundle) {
-		return isRegularFile(manifestXmlPath(bundle));
-	}
-
-	protected static synchronized Marshaller createMarshaller()
-			throws JAXBException {
-		Marshaller marshaller = getJaxbContext().createMarshaller();
-		setPrefixMapper(marshaller);
-		return marshaller;
-	}
-	protected static synchronized Unmarshaller createUnMarshaller()
-			throws JAXBException {
-		return getJaxbContext().createUnmarshaller();
-	}
-
-	protected static synchronized JAXBContext getJaxbContext()
-			throws JAXBException {
-		if (jaxbContext == null) {
-			jaxbContext = JAXBContext.newInstance(ObjectFactory.class
-					// ,
-					// org.oasis_open.names.tc.opendocument.xmlns.container.ObjectFactory.class,
-					// org.w3._2000._09.xmldsig_.ObjectFactory.class,
-					// org.w3._2001._04.xmlenc_.ObjectFactory.class
-					);
-		}
-		return jaxbContext;
-	}
-
-	private static Path manifestXmlPath(Bundle bundle) {
-		return bundle.getRoot().resolve(MANIFEST_XML);
-	}
-
-	protected static void setPrefixMapper(Marshaller marshaller) {
-		boolean setPrefixMapper = false;
-
-		try {
-			/*
-			 * This only works with JAXB RI, in which case we can set the
-			 * namespace prefix mapper
-			 */
-			Class.forName("com.sun.xml.bind.marshaller.NamespacePrefixMapper");
-			marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper",
-					new ManifestNamespacePrefixMapperJAXB_RI());
-			/*
-			 * Note: A similar mapper for the built-in java
-			 * (com.sun.xml.bind.internal.namespacePrefixMapper) is no longer
-			 * included here, as it will not (easily) compile with Maven.
-			 */
-			setPrefixMapper = true;
-		} catch (Exception e) {
-			logger.log(FINE, "Can't find NamespacePrefixMapper", e);
-		}
-
-		if (!setPrefixMapper && !warnedPrefixMapper) {
-			logger.info("Could not set prefix mapper (missing or incompatible JAXB) "
-					+ "- will use prefixes ns0, ns1, ..");
-			warnedPrefixMapper = true;
-		}
-	}
-
-	private Bundle bundle;
-
-	// protected void prepareContainerXML() throws IOException {
-	//
-	//
-	// /* Check if we should prune <rootFiles> */
-	// Iterator<Object> iterator = containerXml.getValue().getRootFilesOrAny()
-	// .iterator();
-	// boolean foundAlready = false;
-	// while (iterator.hasNext()) {
-	// Object anyOrRoot = iterator.next();
-	// if (!(anyOrRoot instanceof JAXBElement)) {
-	// continue;
-	// }
-	// @SuppressWarnings("rawtypes")
-	// JAXBElement elem = (JAXBElement) anyOrRoot;
-	// if (!elem.getDeclaredType().equals(RootFiles.class)) {
-	// continue;
-	// }
-	// RootFiles rootFiles = (RootFiles) elem.getValue();
-	// if (foundAlready
-	// || (rootFiles.getOtherAttributes().isEmpty() && rootFiles
-	// .getAnyOrRootFile().isEmpty())) {
-	// // Delete it!
-	// System.err.println("Deleting unneccessary <rootFiles>");
-	// iterator.remove();
-	// }
-	// foundAlready = true;
-	// }
-	//
-	// Marshaller marshaller;
-	// OutputStream outStream = null;
-	// try {
-	// marshaller = createMarshaller();
-	// // XMLStreamWriter xmlStreamWriter = XMLOutputFactory
-	// // .newInstance().createXMLStreamWriter(outStream);
-	// // xmlStreamWriter.setDefaultNamespace(containerElem.getName()
-	// // .getNamespaceURI());
-	// //
-	// // xmlStreamWriter.setPrefix("dsig",
-	// // "http://www.w3.org/2000/09/xmldsig#");
-	// // xmlStreamWriter.setPrefix("xmlenc",
-	// // "http://www.w3.org/2001/04/xmlenc#");
-	// outStream = odfPackage.insertOutputStream(CONTAINER_XML);
-	//
-	// // FIXME: Set namespace prefixes and default namespace
-	//
-	// marshaller.setProperty("jaxb.formatted.output", true);
-	//
-	// // TODO: Ensure using default namespace
-	// marshaller.marshal(containerXml, outStream);
-	//
-	// } catch (IOException e) {
-	// throw e;
-	// } catch (Exception e) {
-	// throw new IOException("Could not parse " + CONTAINER_XML, e);
-	// } finally {
-	// if (outStream != null) {
-	// outStream.close();
-	// }
-	// }
-	// }
-	//
-	// @SuppressWarnings("unchecked")
-	// protected void parseContainerXML() throws IOException {
-	// createdContainerXml = false;
-	// InputStream containerStream = getResourceAsInputStream(CONTAINER_XML);
-	// if (containerStream == null) {
-	// // Make an empty containerXml
-	// Container container = containerFactory.createContainer();
-	// containerXml = containerFactory.createContainer(container);
-	// createdContainerXml = true;
-	// return;
-	// }
-	// try {
-	// Unmarshaller unMarshaller = createUnMarshaller();
-	// containerXml = (JAXBElement<Container>) unMarshaller
-	// .unmarshal(containerStream);
-	// } catch (JAXBException e) {
-	// throw new IOException("Could not parse " + CONTAINER_XML, e);
-	// }
-	//
-	// }
-
-	private org.apache.taverna.robundle.manifest.Manifest manifest;
-
-	private ObjectFactory manifestFactory = new ObjectFactory();
-
-	public ODFManifest(org.apache.taverna.robundle.manifest.Manifest manifest) {
-		this.manifest = manifest;
-		this.bundle = manifest.getBundle();
-	}
-
-	public Path createManifestXML() throws IOException {
-		Manifest odfManifest = manifestFactory.createManifest();
-		odfManifest.setVersion(ODF_MANIFEST_VERSION);
-		for (PathMetadata pathMetadata : manifest.getAggregates()) {
-			Path path = pathMetadata.getFile();
-			if (path == null)
-				logger.finest("Skipping non-path entry "
-						+ pathMetadata.getUri());
-			// if (! Files.isRegularFile(path)) {
-			// logger.fine("Not adding " + path +
-			// " to  manifest, not a regular file");
-			// }
-			FileEntry entry = manifestFactory.createFileEntry();
-			entry.setFullPath(bundle.getRoot().relativize(path).toString());
-			if (pathMetadata.getMediatype() != null)
-				entry.setMediaType(pathMetadata.getMediatype());
-			else
-				entry.setMediaType("application/octet-stream");
-
-			try {
-				entry.setSize(BigInteger.valueOf(size(path)));
-			} catch (IOException e) {
-				logger.log(WARNING, "Can't find size of " + path, e);
-			}
-			if (pathMetadata.getConformsTo() != null)
-				entry.setVersion(pathMetadata.getConformsTo().toString());
-			odfManifest.getFileEntry().add(entry);
-		}
-		Path manifestXml = manifestXmlPath(bundle);
-		createDirectories(manifestXml.getParent());
-		try (OutputStream outStream = newOutputStream(manifestXml)) {
-			try {
-				createMarshaller().marshal(odfManifest, outStream);
-			} catch (JAXBException e) {
-				throw new RuntimeException("Could not serialize ODF Manifest",
-						e);
-			}
-		}
-		return manifestXml;
-
-	}
-
-	public void readManifestXML() throws IOException {
-		Path manifestXml = manifestXmlPath(bundle);
-		Manifest odfManifest;
-		try (InputStream inStream = newInputStream(manifestXml)) {
-			odfManifest = (Manifest) createUnMarshaller().unmarshal(inStream);
-		} catch (JAXBException e) {
-			// logger.warning("Could not parse " + manifestXml);
-			throw new IOException("Could not parse " + manifestXml, e);
-		}
-		if (!manifest.getManifest().contains(manifestXml))
-			manifest.getManifest().add(manifestXml);
-		for (FileEntry f : odfManifest.getFileEntry()) {
-			Path path = bundle.getRoot().resolve(f.getFullPath());
-			if (!exists(path)) {
-				logger.warning(MANIFEST_XML + " listed " + path
-						+ ", but it does not exist in bundle");
-				continue;
-			}
-			PathMetadata metadata = manifest.getAggregation(path);
-			if (f.getMediaType() != null && f.getMediaType().contains("/"))
-				metadata.setMediatype(f.getMediaType());
-			if (f.getEncryptionData() != null) {
-				logger.warning("Unsupported encryption for " + path);
-				continue;
-			}
-			try {
-				if (f.getVersion() != null)
-					metadata.setConformsTo(new URI(f.getVersion()));
-			} catch (URISyntaxException e) {
-				logger.warning("Ignoring unsupported version " + f.getVersion());
-			}
-			if (isRegularFile(path) && f.getSize() != null) {
-				long actualSize = size(path);
-				long expectedSize = f.getSize().longValue();
-				if (expectedSize != actualSize)
-					logger.warning("Wrong file size for " + path
-							+ ", expected: " + expectedSize + ", actually: "
-							+ actualSize);
-			}
-		}
-	}
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/PathHelper.java
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/PathHelper.java b/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/PathHelper.java
deleted file mode 100644
index e8bbcc6..0000000
--- a/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/PathHelper.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.apache.taverna.robundle.utils;
-
-/*
- * 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.
- */
-
-
-import java.net.URI;
-
-public class PathHelper {
-	private static final URI ROOT = URI.create("/");
-
-	public static URI relativizeFromBase(String uri, URI base) {
-		return relativizeFromBase(URI.create(uri), base);
-	}
-
-	public static URI relativizeFromBase(URI uri, URI base) {
-		return ROOT.resolve(base.relativize(uri));
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/RDFUtils.java
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/RDFUtils.java b/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/RDFUtils.java
deleted file mode 100644
index ee3575e..0000000
--- a/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/RDFUtils.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package org.apache.taverna.robundle.utils;
-
-/*
- * 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.
- */
-
-
-import static com.hp.hpl.jena.datatypes.xsd.XSDDatatype.XSDdateTime;
-import static java.nio.file.attribute.FileTime.fromMillis;
-
-import java.nio.file.attribute.FileTime;
-import java.util.logging.Logger;
-
-import com.hp.hpl.jena.datatypes.DatatypeFormatException;
-import com.hp.hpl.jena.datatypes.xsd.XSDDateTime;
-import com.hp.hpl.jena.rdf.model.Literal;
-import com.hp.hpl.jena.rdf.model.RDFNode;
-
-public class RDFUtils {
-	private static final Logger logger = Logger.getLogger(RDFUtils.class
-			.getCanonicalName());
-
-	public static FileTime literalAsFileTime(RDFNode rdfNode) {
-		if (rdfNode == null)
-			return null;
-		if (!rdfNode.isLiteral()) {
-			logger.warning("Expected literal. not " + rdfNode);
-			return null;
-		}
-		Literal literal = rdfNode.asLiteral();
-		Object value = literal.getValue();
-		XSDDateTime dateTime;
-		if (value instanceof XSDDateTime) {
-			dateTime = (XSDDateTime) value;
-		} else {
-			logger.info("Literal not an XSDDateTime, but: " + value.getClass()
-					+ " " + value);
-
-			// Try to parse it anyway
-			try {
-				dateTime = (XSDDateTime) XSDdateTime.parse(literal
-						.getLexicalForm());
-			} catch (DatatypeFormatException e) {
-				logger.warning("Invalid datetime: " + literal);
-				return null;
-			}
-		}
-		return fromMillis(dateTime.asCalendar().getTimeInMillis());
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/RecursiveCopyFileVisitor.java
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/RecursiveCopyFileVisitor.java b/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/RecursiveCopyFileVisitor.java
deleted file mode 100644
index ae42ca4..0000000
--- a/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/RecursiveCopyFileVisitor.java
+++ /dev/null
@@ -1,235 +0,0 @@
-package org.apache.taverna.robundle.utils;
-
-/*
- * 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.
- */
-
-
-import static java.lang.Integer.MAX_VALUE;
-import static java.nio.file.FileVisitOption.FOLLOW_LINKS;
-import static java.nio.file.FileVisitResult.CONTINUE;
-import static java.nio.file.FileVisitResult.SKIP_SUBTREE;
-import static java.nio.file.Files.copy;
-import static java.nio.file.Files.getFileAttributeView;
-import static java.nio.file.Files.isDirectory;
-import static java.nio.file.Files.readAttributes;
-import static java.nio.file.Files.walkFileTree;
-import static java.nio.file.LinkOption.NOFOLLOW_LINKS;
-import static java.nio.file.StandardCopyOption.COPY_ATTRIBUTES;
-import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
-import static java.util.EnumSet.noneOf;
-import static org.apache.taverna.robundle.utils.RecursiveCopyFileVisitor.RecursiveCopyOption.IGNORE_ERRORS;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.file.CopyOption;
-import java.nio.file.FileAlreadyExistsException;
-import java.nio.file.FileVisitOption;
-import java.nio.file.FileVisitResult;
-import java.nio.file.LinkOption;
-import java.nio.file.Path;
-import java.nio.file.SimpleFileVisitor;
-import java.nio.file.attribute.BasicFileAttributeView;
-import java.nio.file.attribute.BasicFileAttributes;
-import java.util.Arrays;
-import java.util.EnumSet;
-import java.util.HashSet;
-import java.util.Set;
-
-public class RecursiveCopyFileVisitor extends SimpleFileVisitor<Path> {
-	public enum RecursiveCopyOption implements java.nio.file.CopyOption {
-		/**
-		 * Ignore any errors, copy as much as possible. The default is to stop
-		 * on the first IOException.
-		 */
-		IGNORE_ERRORS,
-	}
-
-	public static void copyRecursively(final Path source,
-			final Path destination, final CopyOption... copyOptions)
-			throws IOException {
-		final Set<CopyOption> copyOptionsSet = new HashSet<>(
-				Arrays.asList(copyOptions));
-
-		if (!isDirectory(source))
-			throw new FileNotFoundException("Not a directory: " + source);
-		if (isDirectory(destination)
-				&& !copyOptionsSet.contains(REPLACE_EXISTING))
-			throw new FileAlreadyExistsException(destination.toString());
-		Path destinationParent = destination.getParent();
-		if (destinationParent != null && !isDirectory(destinationParent))
-			throw new FileNotFoundException("Not a directory: "
-					+ destinationParent);
-
-		RecursiveCopyFileVisitor visitor = new RecursiveCopyFileVisitor(
-				destination, copyOptionsSet, source);
-		Set<FileVisitOption> walkOptions = noneOf(FileVisitOption.class);
-		if (!copyOptionsSet.contains(NOFOLLOW_LINKS))
-			walkOptions = EnumSet.of(FOLLOW_LINKS);
-		walkFileTree(source, walkOptions, MAX_VALUE, visitor);
-	}
-
-	private final CopyOption[] copyOptions;
-	private final Set<CopyOption> copyOptionsSet;
-	private final Path destination;
-	private boolean ignoreErrors;
-	private final LinkOption[] linkOptions;
-	private final Path source;
-
-	RecursiveCopyFileVisitor(Path destination, Set<CopyOption> copyOptionsSet,
-			Path source) {
-		this.destination = destination;
-		this.source = source;
-		this.copyOptionsSet = new HashSet<>(copyOptionsSet);
-
-		HashSet<Object> linkOptionsSet = new HashSet<>();
-		for (CopyOption option : copyOptionsSet) {
-			copyOptionsSet.add(option);
-			if (option instanceof LinkOption)
-				linkOptionsSet.add((LinkOption) option);
-		}
-		this.linkOptions = linkOptionsSet
-				.toArray(new LinkOption[(linkOptionsSet.size())]);
-
-		this.ignoreErrors = copyOptionsSet.contains(IGNORE_ERRORS);
-
-		/*
-		 * To avoid UnsupporteOperationException from native java.nio operations
-		 * we strip our own options out
-		 */
-		copyOptionsSet.removeAll(EnumSet.allOf(RecursiveCopyOption.class));
-		copyOptions = copyOptionsSet.toArray(new CopyOption[(copyOptionsSet
-				.size())]);
-	}
-
-	private URI pathOnly(URI uri) {
-		if (!uri.isAbsolute())
-			return uri;
-		String path = uri.getRawPath();
-		// if (! uri.isOpaque()) {
-		// path = uri.getPath();
-		// }
-		if (uri.getScheme().equals("jar")) {
-			String part = uri.getSchemeSpecificPart();
-			int slashPos = part.indexOf("!/");
-			path = part.substring(slashPos + 1, part.length());
-		}
-		if (path == null)
-			throw new IllegalArgumentException("Can't extract path from URI "
-					+ uri);
-
-		if (!path.startsWith("/"))
-			path = "/" + path;
-		try {
-			return new URI(null, null, path, null);
-		} catch (URISyntaxException e) {
-			throw new IllegalArgumentException("Can't extract path from URI "
-					+ uri, e);
-		}
-	}
-
-	@Override
-	public FileVisitResult postVisitDirectory(Path dir, IOException exc)
-			throws IOException {
-		try {
-			if (copyOptionsSet.contains(COPY_ATTRIBUTES)) {
-				/*
-				 * Copy file times. Inspired by
-				 * java.nio.file.CopyMoveHelper.copyToForeignTarget()
-				 */
-				BasicFileAttributes attrs = readAttributes(dir,
-						BasicFileAttributes.class, linkOptions);
-				BasicFileAttributeView view = getFileAttributeView(
-						toDestination(dir), BasicFileAttributeView.class,
-						linkOptions);
-				view.setTimes(attrs.lastModifiedTime(), attrs.lastAccessTime(),
-						attrs.creationTime());
-			}
-			return CONTINUE;
-		} catch (IOException ex) {
-			return visitFileFailed(dir, ex);
-		}
-	}
-
-	@Override
-	public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs)
-			throws IOException {
-		try {
-			Path destinationDir = toDestination(dir);
-			if (copyOptionsSet.contains(REPLACE_EXISTING)
-					&& isDirectory(destinationDir))
-				return CONTINUE;
-			copy(dir, destinationDir, copyOptions);
-			// Files.createDirectory(destinationDir);
-			// System.out.println("Created " + destinationDir + " " +
-			// destinationDir.toUri());
-			return CONTINUE;
-		} catch (IOException ex) {
-			// Eat or rethrow depending on IGNORE_ERRORS
-			return visitFileFailed(dir, ex);
-		}
-	}
-
-	private Path toDestination(Path path) {
-		if (path.equals(source))
-			// Top-level folder
-			return destination;
-		// Path relativize = source.relativize(path);
-		// return destination.resolve(relativize);
-		/*
-		 * The above does not work as ZipPath throws ProviderMisMatchException
-		 * when given a relative filesystem Path
-		 */
-
-		URI rel = pathOnly(uriWithSlash(source)).relativize(
-				pathOnly(path.toUri()));
-		if (rel.isAbsolute())
-			throw new IllegalStateException("Can't relativize " + rel);
-		URI dest = uriWithSlash(destination).resolve(rel);
-		return destination.getFileSystem().provider().getPath(dest);
-	}
-
-	private URI uriWithSlash(Path dir) {
-		URI uri = dir.toUri();
-		if (!uri.toString().endsWith("/"))
-			return URI.create(uri.toString() + "/");
-		return uri;
-	}
-
-	@Override
-	public FileVisitResult visitFile(final Path file, BasicFileAttributes attrs)
-			throws IOException {
-		try {
-			copy(file, toDestination(file), copyOptions);
-			return CONTINUE;
-		} catch (IOException ex) {
-			return visitFileFailed(file, ex);
-		}
-	}
-
-	@Override
-	public FileVisitResult visitFileFailed(Path file, IOException exc)
-			throws IOException {
-		if (ignoreErrors)
-			return SKIP_SUBTREE;
-		// Or - throw exception
-		return super.visitFileFailed(file, exc);
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/RecursiveDeleteVisitor.java
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/RecursiveDeleteVisitor.java b/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/RecursiveDeleteVisitor.java
deleted file mode 100644
index 92f6135..0000000
--- a/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/RecursiveDeleteVisitor.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package org.apache.taverna.robundle.utils;
-
-/*
- * 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.
- */
-
-
-import static java.nio.file.FileVisitResult.CONTINUE;
-import static java.nio.file.Files.delete;
-import static java.nio.file.Files.isDirectory;
-import static java.nio.file.Files.walkFileTree;
-
-import java.io.IOException;
-import java.nio.file.FileVisitResult;
-import java.nio.file.Path;
-import java.nio.file.SimpleFileVisitor;
-import java.nio.file.attribute.BasicFileAttributes;
-
-public class RecursiveDeleteVisitor extends SimpleFileVisitor<Path> {
-	public static void deleteRecursively(Path p) throws IOException {
-		if (isDirectory(p))
-			walkFileTree(p, new RecursiveDeleteVisitor());
-		else
-			delete(p);
-	}
-
-	@Override
-	public FileVisitResult postVisitDirectory(Path dir, IOException exc)
-			throws IOException {
-		super.postVisitDirectory(dir, exc);
-		delete(dir);
-		return CONTINUE;
-	}
-
-	@Override
-	public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
-			throws IOException {
-		delete(file);
-		return CONTINUE;
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/TemporaryFiles.java
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/TemporaryFiles.java b/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/TemporaryFiles.java
deleted file mode 100644
index 52f3520..0000000
--- a/taverna-robundle/src/main/java/org/apache/taverna/robundle/utils/TemporaryFiles.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package org.apache.taverna.robundle.utils;
-
-/*
- * 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.
- */
-
-
-import static java.nio.file.Files.createTempDirectory;
-
-import java.io.IOException;
-import java.nio.file.Path;
-
-public class TemporaryFiles {
-	public static Path temporaryBundle() throws IOException {
-		Path tempDir = createTempDirectory("robundle");
-		tempDir.toFile().deleteOnExit();
-		/*
-		 * Why inside a tempDir? Because ZipFileSystemProvider creates
-		 * neighbouring temporary files per file that is written to zip, which
-		 * could mean a lot of temporary files directly in /tmp - making it
-		 * difficult to clean up
-		 */
-		Path bundle = tempDir.resolve("robundle.zip");
-		bundle.toFile().deleteOnExit();
-		return bundle;
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-robundle/src/main/resources/META-INF/services/java.nio.file.spi.FileSystemProvider
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/main/resources/META-INF/services/java.nio.file.spi.FileSystemProvider b/taverna-robundle/src/main/resources/META-INF/services/java.nio.file.spi.FileSystemProvider
deleted file mode 100644
index 1025748..0000000
--- a/taverna-robundle/src/main/resources/META-INF/services/java.nio.file.spi.FileSystemProvider
+++ /dev/null
@@ -1 +0,0 @@
-org.apache.taverna.robundle.fs.BundleFileSystemProvider

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-robundle/src/main/resources/META-INF/services/java.nio.file.spi.FileTypeDetector
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/main/resources/META-INF/services/java.nio.file.spi.FileTypeDetector b/taverna-robundle/src/main/resources/META-INF/services/java.nio.file.spi.FileTypeDetector
deleted file mode 100644
index 66fc906..0000000
--- a/taverna-robundle/src/main/resources/META-INF/services/java.nio.file.spi.FileTypeDetector
+++ /dev/null
@@ -1 +0,0 @@
-org.apache.taverna.robundle.fs.BundleFileTypeDetector

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-robundle/src/main/resources/contexts/bundle.jsonld
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/main/resources/contexts/bundle.jsonld b/taverna-robundle/src/main/resources/contexts/bundle.jsonld
deleted file mode 100644
index 9ab7bb6..0000000
--- a/taverna-robundle/src/main/resources/contexts/bundle.jsonld
+++ /dev/null
@@ -1,141 +0,0 @@
-{
-  "http://purl.org/dc/terms/license" : 
-  "Licensed to the Apache Software Foundation (ASF) under one or more\n contributor license agreements.  See the NOTICE file distributed with\n this work for additional information regarding copyright ownership.\n The ASF licenses this file to You under the Apache License, Version 2.0\n (the \"License\"); you may not use this file except in compliance with\n the License.  You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n",
-  "@context": {
-    "ao": "http://purl.org/ao/",
-    "oa": "http://www.w3.org/ns/oa#",
-    "dc": "http://purl.org/dc/elements/1.1/",
-    "dct": "http://purl.org/dc/terms/",
-    "ore": "http://www.openarchives.org/ore/terms/",
-    "ro": "http://purl.org/wf4ever/ro#",
-    "roterms": "http://purl.org/wf4ever/roterms#",
-    "bundle": "http://purl.org/wf4ever/bundle#",
-    "prov": "http://www.w3.org/ns/prov#",
-    "pav": "http://purl.org/pav/",
-    "xsd": "http://www.w3.org/2001/XMLSchema#",
-    "foaf": "http://xmlns.com/foaf/0.1/",
-    "owl": "http://www.w3.org/2002/07/owl#",
-
-    "uri": "@id",
-    "id": {
-      "@id": "owl:sameAs",
-      "@type": "@id" },
-    "file": {
-      "@id": "owl:sameAs",
-      "@type": "@id" },
-    "annotation": {
-      "@id": "owl:sameAs",
-      "@type": "@id" },
-
-    "manifest": {
-        "@id": "ore:isDescribedBy",
-        "@type": "@id"
-    },
-
-    "createdOn": {
-        "@id": "pav:createdOn",
-        "@type": "xsd:dateTime"
-    },
-    "createdBy": {
-        "@id": "pav:createdBy",
-        "@type": "@id"
-    },
-    "aggregatedOn": {
-        "@id": "pav:createdOn",
-        "@type": "xsd:dateTime"
-    },
-    "aggregatedBy": {
-        "@id": "pav:createdBy",
-        "@type": "@id"
-    },
-    "authoredOn": {
-        "@id": "pav:authoredOn",
-        "@type": "xsd:dateTime"
-    },
-    "authoredBy": {
-        "@id": "pav:authoredBy",
-        "@type": "@id"
-    },
-    "curatedOn": {
-        "@id": "pav:curatedOn",
-        "@type": "xsd:dateTime"
-    },
-    "curatedBy": {
-        "@id": "pav:curatedBy",
-        "@type": "@id"
-    },
-    "contributedOn": {
-        "@id": "pav:contributedOn",
-        "@type": "xsd:dateTime"
-    },
-    "contributedBy": {
-        "@id": "pav:contributedBy",
-        "@type": "@id"
-    },
-    "retrievedOn": {
-        "@id": "pav:retrievedOn",
-        "@type": "xsd:dateTime"
-    },
-    "retrievedBy": {
-        "@id": "pav:retrievedBy",
-        "@type": "@id"
-    },
-    "retrievedFrom": {
-        "@id": "pav:retrievedFrom",
-        "@type": "@id"
-    },
-    "name": {
-        "@id": "foaf:name"
-    },
-    "orcid": {
-        "@id": "roterms:orcid",
-        "@type": "@id"
-    },
-
-    "history": {
-        "@id": "prov:has_provenance",
-        "@type": "@id"
-    },
-    "aggregates": {
-      "@id": "ore:aggregates",
-      "@type": "@id"
-    },
-    "mediatype": {
-        "@id": "dc:format"
-    },
-    "folder": {
-      "@id": "bundle:inFolder",
-      "@type": "@id"
-    },
-    "filename": {
-        "@id": "ro:entryName"
-    },
-    "proxy": {
-      "@id": "bundle:hasProxy",
-      "@type": "@id"
-    },
-    "bundledAs": {
-        "@id": "bundle:bundledAs",
-        "@type": "@id"
-    },
-    "conformsTo": {
-        "@id": "dct:conformsTo",
-        "@type": "@id"
-    },
-    "annotations": {
-      "@id": "bundle:hasAnnotation",
-      "@type": "@id"
-    },
-    "content": {
-       "@id": "oa:hasBody",
-       "@type": "@id"
-    },
-    "about": {
-       "@id": "oa:hasTarget",
-       "@type": "@id"
-    }
-
-  },
-  "http://purl.org/pav/retrievedFrom": { "@id": "https://raw.githubusercontent.com/wf4ever/ro/61b563e7e9941485ff6e7b338875d4015d734b6f/bundle/draft/context.json" } 
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-robundle/src/main/resources/jarcache.json
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/main/resources/jarcache.json b/taverna-robundle/src/main/resources/jarcache.json
deleted file mode 100644
index 34df158..0000000
--- a/taverna-robundle/src/main/resources/jarcache.json
+++ /dev/null
@@ -1,8 +0,0 @@
-[
-  {
-  	"Content-Location": "https://w3id.org/bundle/context",
-  	"X-Classpath": "contexts/bundle.jsonld",
-  	"Content-Type": "application/ld+json"
-  }
-]
-

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/316e4a8a/taverna-robundle/src/main/resources/ontologies/bundle.owl
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/main/resources/ontologies/bundle.owl b/taverna-robundle/src/main/resources/ontologies/bundle.owl
deleted file mode 100644
index 950ef2b..0000000
--- a/taverna-robundle/src/main/resources/ontologies/bundle.owl
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-
-<!DOCTYPE rdf:RDF [
-    <!ENTITY ao "http://purl.org/ao/" >
-    <!ENTITY oa "http://www.w3.org/ns/oa#" >
-    <!ENTITY ro "http://purl.org/wf4ever/ro#" >
-    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
-    <!ENTITY bundle "http://purl.org/wf4ever/bundle#" >
-    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
-    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
-    <!ENTITY ore "http://www.openarchives.org/ore/terms/" >
-    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
-]>
-
-
-<rdf:RDF xmlns="http://purl.org/wf4ever/bundle#"
-     xml:base="http://purl.org/wf4ever/bundle"
-     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
-     xmlns:ro="http://purl.org/wf4ever/ro#"
-     xmlns:ao="http://purl.org/ao/"
-     xmlns:oa="http://www.w3.org/ns/oa#"
-     xmlns:owl="http://www.w3.org/2002/07/owl#"
-     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
-     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-     xmlns:bundle="http://purl.org/wf4ever/bundle#"
-     xmlns:ore="http://www.openarchives.org/ore/terms/">
-    <owl:Ontology rdf:about="http://purl.org/wf4ever/bundle">
-        <owl:imports rdf:resource="http://purl.org/wf4ever/ro"/>
-        <owl:versionIRI rdf:resource="http://purl.org/wf4ever/bundle/0.1.0-SNAPSHOT"/>
-        <owl:imports rdf:resource="http://www.w3.org/ns/oa#"/>
-    </owl:Ontology>
-    
-
-
-    <!-- 
-    ///////////////////////////////////////////////////////////////////////////////////////
-    //
-    // Object Properties
-    //
-    ///////////////////////////////////////////////////////////////////////////////////////
-     -->
-
-    
-
-
-    <!-- http://purl.org/ao/annotatesResource -->
-
-    <rdf:Description rdf:about="&ao;annotatesResource">
-        <owl:equivalentProperty rdf:resource="&oa;hasTarget"/>
-    </rdf:Description>
-    
-
-
-    <!-- http://purl.org/ao/body -->
-
-    <rdf:Description rdf:about="&ao;body">
-        <owl:equivalentProperty rdf:resource="&oa;hasBody"/>
-    </rdf:Description>
-    
-
-
-    <!-- http://purl.org/wf4ever/bundle#hasAnnotation -->
-
-    <owl:ObjectProperty rdf:about="&bundle;hasAnnotation">
-        <rdfs:range rdf:resource="&ao;Annotation"/>
-        <rdfs:domain rdf:resource="&ro;ResearchObject"/>
-        <rdfs:subPropertyOf rdf:resource="&ore;aggregates"/>
-        <rdfs:range rdf:resource="&oa;Annotation"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://purl.org/wf4ever/bundle#hasProxy -->
-
-    <owl:ObjectProperty rdf:about="&bundle;hasProxy"/>
-    
-
-
-    <!-- http://purl.org/wf4ever/bundle#inFolder -->
-
-    <owl:ObjectProperty rdf:about="&bundle;inFolder">
-        <rdfs:range rdf:resource="&ro;Folder"/>
-        <rdfs:domain rdf:resource="&ro;Resource"/>
-        <rdfs:subPropertyOf rdf:resource="&ore;isAggregatedBy"/>
-    </owl:ObjectProperty>
-    
-
-
-    <!-- http://www.openarchives.org/ore/terms/aggregates -->
-
-    <rdf:Description rdf:about="&ore;aggregates">
-        <owl:propertyChainAxiom rdf:parseType="Collection">
-            <rdf:Description rdf:about="&ore;aggregates"/>
-            <rdf:Description rdf:about="&bundle;inFolder"/>
-        </owl:propertyChainAxiom>
-    </rdf:Description>
-    
-
-
-    <!-- http://www.openarchives.org/ore/terms/proxyFor -->
-
-    <rdf:Description rdf:about="&ore;proxyFor">
-        <owl:inverseOf rdf:resource="&bundle;hasProxy"/>
-    </rdf:Description>
-    
-
-
-    <!-- http://www.w3.org/ns/oa#hasBody -->
-
-    <rdf:Description rdf:about="&oa;hasBody"/>
-    
-
-
-    <!-- http://www.w3.org/ns/oa#hasTarget -->
-
-    <rdf:Description rdf:about="&oa;hasTarget"/>
-</rdf:RDF>
-
-
-
-<!-- Generated by the OWL API (version 3.4.2) http://owlapi.sourceforge.net -->
-