Merge branch 'master' into TAVERNA-1027
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
index 0594f4e..13fa452 100644
--- 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
@@ -237,11 +237,21 @@
 	private static Model parseRDF(Path metadata) throws IOException {
 		Model model = createDefaultModel();
 		try (InputStream in = newInputStream(metadata)) {
-			read(model, in, metadata.toUri().toASCIIString(), RDFXML);
+			// TAVERNA-1027: Avoid Jena error over non-IANA URI scheme app://
+			read(model, in, fakeFileURI(metadata), RDFXML);
 		}
 		return model;
 	}
 
+	private static String fakeFileURI(Path path) {
+		return fakeFileURI(path.toAbsolutePath().toUri());
+	}
+	
+	private static String fakeFileURI(URI uri) {
+		// Assume path starts with "/"
+		return "file://" + uri.getPath();
+	}
+
 	protected static void setPrefixMapper(Marshaller marshaller) {
 		boolean setPrefixMapper = false;
 
@@ -330,6 +340,7 @@
 		Model metadata;
 		try {
 			metadata = parseRDF(metadataRdf);
+			metadata.write(System.out, "turtle");
 		} catch (IOException e) {
 			logger.log(WARNING, "Can't read " + metadataRdf, e);
 			return;
@@ -339,9 +350,11 @@
 		}
 
 		for (URI about : bundleSubjects()) {
-			Resource resource = metadata.getResource(about.toString());
-			if (!metadata.containsResource(resource))
+			Resource resource = metadata.getResource(fakeFileURI(about));
+			if (!metadata.containsResource(resource)) {
+				System.out.println("Nothing known about " + resource);
 				continue;
+			}
 
 			PathAnnotation ann = new PathAnnotation();
 			ann.setAbout(manifest.relativeToBundleRoot(about));