public static void main(String[] args) throws D2S_ModuleException, D2S_ModuleParameterException {
		
		if (args.length < 3) {
			System.out
					.println("\nModuleWrapper\n" +
							"Please use the following arguments: \n" +
							"[1] - The Java Class that is your module (use the full package path)" +
							"[2] - RDF file containing the data your module must run on.\n" +
							"[3] - The named graph URI in that file that contains the actual data (use 'default' for no graph).\n" +
							"[4] - The URI of a specific resource in the file."
							);
			return;
		}
		
		String moduleName = args[0];
		String fileName = args[1];
		String graph = args[2];
		String resource = args[3];
		
		D2S_AbstractModule module = constructModule(moduleName, fileName, graph,
				resource);

		log.info("Starting module");
		Repository outputRepository = module.start();
		log.info("Module run completed");

		// TODO Add provenance information about ModuleWrapper run

		String outputFileName = "output.n3";

		try {
			log.info("Starting RepositoryWriter (writing to output.n3)");

			FileOutputStream outputStream = new FileOutputStream(new File(
					outputFileName));
			OutputStreamWriter streamWriter = new OutputStreamWriter(
					outputStream);
			D2S_RepositoryWriter rw = new D2S_RepositoryWriter(outputRepository,
					streamWriter);

			rw.write();
			log.info("Done");

		}

		catch (FileNotFoundException e) {
			log.error("Failed to create output file " + outputFileName);
		}

	}