private bool SetOptions(String[] args) { if (args.Length == 0 || (args.Length == 1 && args[0].Equals("-help"))) { this.ShowUsage(); return(false); } //Look through the arguments to see what we've been asked to do foreach (String arg in args) { if (arg.StartsWith("-uri:")) { this._inputs.Add(arg); } else if (arg.StartsWith("-hs")) { if (arg.Contains(':')) { bool hs; if (Boolean.TryParse(arg.Substring(arg.IndexOf(':') + 1), out hs)) { this._options.Add(new HighSpeedOption(hs)); } else { this._options.Add(new HighSpeedOption(true)); } } else { this._options.Add(new HighSpeedOption(true)); } } else if (arg.StartsWith("-pp")) { if (arg.Contains(':')) { bool pp; if (Boolean.TryParse(arg.Substring(arg.IndexOf(':') + 1), out pp)) { this._options.Add(new PrettyPrintingOption(pp)); } else { this._options.Add(new PrettyPrintingOption(true)); } } else { this._options.Add(new PrettyPrintingOption(true)); } } else if (arg.StartsWith("-c")) { if (arg.Contains(':')) { int c; if (Int32.TryParse(arg.Substring(arg.IndexOf(':') + 1), out c)) { this._options.Add(new CompressionLevelOption(c)); } else { this._options.Add(new CompressionLevelOption(WriterCompressionLevel.Default)); } } else { this._options.Add(new CompressionLevelOption(WriterCompressionLevel.Default)); } } else if (arg.StartsWith("-stylesheet:")) { String stylesheet = arg.Substring(arg.IndexOf(':') + 1); this._options.Add(new StylesheetOption(stylesheet)); } else if (arg.Equals("-merge")) { this._merge = true; } else if (arg.Equals("-overwrite")) { this._overwrite = true; } else if (arg.Equals("-dataset")) { this._dataset = true; this._merge = true; } else if (arg.StartsWith("-out:") || arg.StartsWith("-output:")) { this._output = arg.Substring(arg.IndexOf(':') + 1); //If the Writers have not been set then we'll set them now if (this._writer == null && this._storeWriter == null) { String format; try { format = MimeTypesHelper.GetMimeType(Path.GetExtension(this._output)); } catch (RdfException) { Console.Error.WriteLine("rdfConvert: The File Extension '" + Path.GetExtension(this._output) + "' is not permissible since dotNetRDF cannot infer a MIME type from the extension"); return(false); } try { this._writer = MimeTypesHelper.GetWriter(format); } catch (RdfException) { //Supress this error } try { this._storeWriter = MimeTypesHelper.GetStoreWriter(format); if (this._writer == null) { this._merge = true; } else if (this._writer is NTriplesWriter && !Path.GetExtension(this._output).Equals(".nt")) { this._writer = null; this._merge = true; } } catch (RdfException) { //Suppress this error } if (this._writer == null && this._storeWriter == null) { Console.Error.WriteLine("rdfConvert: The MIME Type '" + format + "' is not permissible since dotNetRDF does not support outputting in that format"); return(false); } } } else if (arg.StartsWith("-outformat:")) { String format = arg.Substring(arg.IndexOf(':') + 1); if (!format.Contains("/")) { try { format = MimeTypesHelper.GetMimeType(format); } catch (RdfException) { Console.Error.WriteLine("rdfConvert: The File Extension '" + format + "' is not permissible since dotNetRDF cannot infer a MIME type from the extension"); return(false); } } //Validate the MIME Type if (!IsValidMimeType(format)) { Console.Error.WriteLine("rdfConvert: The MIME Type '" + format + "' is not permissible since dotNetRDF does not support outputting in that format"); return(false); } try { this._writer = MimeTypesHelper.GetWriter(format); this._outExt = MimeTypesHelper.GetFileExtension(this._writer); } catch (RdfException) { //Supress this error } try { this._storeWriter = MimeTypesHelper.GetStoreWriter(format); if (this._writer == null) { //In the event that we can't get a valid Writer then individual graphs //will be put into a Store and output as a Dataset this._merge = true; this._outExt = MimeTypesHelper.GetFileExtension(this._storeWriter); } else if (this._writer is NTriplesWriter && (!format.Equals("nt") || !format.Equals(".nt") || !format.Equals("text/plain"))) { this._writer = null; this._merge = true; this._outExt = MimeTypesHelper.GetFileExtension(this._storeWriter); } } catch (RdfException) { //Suppress this error } if (this._writer == null && this._storeWriter == null) { Console.Error.WriteLine("rdfConvert: The MIME Type '" + format + "' is not permissible since dotNetRDF does not support outputting in that format"); return(false); } } else if (arg.StartsWith("-outext:")) { this._outExt = arg.Substring(arg.IndexOf(':') + 1); if (!this._outExt.StartsWith(".")) { this._outExt = "." + this._outExt; } } else if (arg.Equals("-debug")) { this._debug = true; } else if (arg.Equals("-help")) { //Ignore help argument if other arguments are present } else if (arg.Equals("-nocache")) { Options.UriLoaderCaching = false; } else if (arg.Equals("-nobom")) { Options.UseBomForUtf8 = false; } else if (arg.Equals("-warnings")) { this._warnings = true; UriLoader.Warning += this.ShowWarning; UriLoader.StoreWarning += this.ShowWarning; FileLoader.Warning += this.ShowWarning; FileLoader.StoreWarning += this.ShowWarning; } else { //Anything else is treated as an input file this._inputs.Add(arg); } } //If there are no this._inputs then we'll abort if (this._inputs.Count == 0) { Console.Error.WriteLine("rdfConvert: No Inputs were provided - please provide one/more files or URIs you wish to convert"); return(false); } //If there are no writers specified then we'll abort if (this._writer == null && this._storeWriter == null) { Console.Error.WriteLine("rdfConvert: Aborting since no output options have been specified, use the -out:filename or -outformat: arguments to specify output format"); return(false); } if (!this._outExt.Equals(String.Empty)) { if (!this._outExt.StartsWith(".")) { this._outExt = "." + this._outExt; } } else if (!this._output.Equals(String.Empty)) { this._outExt = Path.GetExtension(this._output); } //Apply the Options to the Writers foreach (IConversionOption option in this._options) { if (this._writer != null) { option.Apply(this._writer); } if (this._storeWriter != null) { option.Apply(this._storeWriter); } } return(true); }