// Path: reasoner/src/main/java/org/earthcube/geosoft/software/classes/sn/SNAssumption.java
// public class SNAssumption extends URIEntity {
//   private static final long serialVersionUID = 1L;
//   
//   private String categoryId;
//   private String note;
//   
//   public SNAssumption(String id) {
//     super(id);
//   }
// 
//   public String getCategoryId() {
//     return categoryId;
//   }
// 
//   public void setCategoryId(String categoryId) {
//     this.categoryId = categoryId;
//   }
// 
//   public String getNote() {
//     return note;
//   }
// 
//   public void setNote(String note) {
//     this.note = note;
//   }
// }
// 
// Path: reasoner/src/main/java/org/earthcube/geosoft/software/classes/sn/StandardName.java
// public class StandardName extends URIEntity {
//   private static final long serialVersionUID = 1L;
// 
//   private String objectId;
//   private String quantityId;
//   private ArrayList<String> operatorIds;
//   private String internalVariable;
//   private String note;
//   
//   public StandardName(String id) {
//     super(id);
//     operatorIds = new ArrayList<String>();
//   }
// 
//   public String getObjectId() {
//     return objectId;
//   }
// 
//   public void setObjectId(String objectId) {
//     this.objectId = objectId;
//   }
// 
//   public String getQuantityId() {
//     return quantityId;
//   }
// 
//   public void setQuantityId(String quantityId) {
//     this.quantityId = quantityId;
//   }
// 
//   public ArrayList<String> getOperatorIds() {
//     return operatorIds;
//   }
// 
//   public void addOperatorId(String operatorId) {
//     this.operatorIds.add(operatorId);
//   }
// 
//   public String getInternalVariable() {
//     return internalVariable;
//   }
// 
//   public void setInternalVariable(String internalVariable) {
//     this.internalVariable = internalVariable;
//   }
// 
//   public String getNote() {
//     return note;
//   }
// 
//   public void setNote(String note) {
//     this.note = note;
//   }
// 
// }
// 
// Path: reasoner/src/main/java/org/earthcube/geosoft/util/URIEntity.java
// public class URIEntity implements Serializable {
// 	private static final long serialVersionUID = 1L;
// 	private URI id;
// 	private String label;
// 	
// 	HashMap<String, Object> provenance;
// 	
// 	public URIEntity(String id) {
// 		setID(id);
// 		this.provenance = new HashMap<String, Object>();
// 	}
// 	
// 	public URIEntity(String id, String label) {
// 	  setID(id);
// 	  this.label = label;
// 	  this.provenance = new HashMap<String, Object>();
// 	}
// 
// 	public String getID() {
// 		if (id != null)
// 			return id.toString();
// 		else
// 			return null;
// 	}
// 
// 	public void setID(String id) {
// 		try {
// 			this.id = new URI(id).normalize();
// 		} catch (Exception e) {
// 			System.err.println(id + " Not a URI. Only URIs allowed for IDs");
// 		}
// 	}
// 	
// 	public String getURL() {
// 		return this.getNamespace().replaceAll("#$", "");
// 	}
// 
// 	public String getName() {
// 		if (id != null)
// 			return id.getFragment();
// 		else
// 			return null;
// 	}
// 
// 	public String getNamespace() {
// 		if (id != null)
// 			return id.getScheme() + ":" + id.getSchemeSpecificPart() + "#";
// 		else
// 			return null;
// 	}
// 
//   public String getLabel() {
//     return label;
//   }
// 
//   public void setLabel(String label) {
//     this.label = label;
//   }
//   
// 	public HashMap<String, Object> getProvenance() {
//     return provenance;
//   }
// 
//   public void addProvenance(String propId, Object value) {
//     this.provenance.put(propId, value);
//   }
// 
//   public String toString() {
// 		return getName();
// 	}
// 
// 	public int hashCode() {
// 		return id.hashCode();
// 	}
// 
// }


import java.util.ArrayList;
import java.util.HashMap;
import org.earthcube.geosoft.software.classes.sn.SNAssumption;
import org.earthcube.geosoft.software.classes.sn.StandardName;
import org.earthcube.geosoft.util.URIEntity;
package org.earthcube.geosoft.software.classes;



public class Software extends URIEntity {
  private static final long serialVersionUID = 1L;

  String classId;
  ArrayList<SWPropertyValue> propertyValues;
  ArrayList<SoftwareRole> inputs;
  ArrayList<SoftwareRole> outputs;
  ArrayList<String> explanations;
  HashMap<String, String> labels;
  
  ArrayList<SNAssumption> assumptions;
// Path: reasoner/src/main/java/org/earthcube/geosoft/software/classes/sn/SNAssumption.java
// public class SNAssumption extends URIEntity {
//   private static final long serialVersionUID = 1L;
//   
//   private String categoryId;
//   private String note;
//   
//   public SNAssumption(String id) {
//     super(id);
//   }
// 
//   public String getCategoryId() {
//     return categoryId;
//   }
// 
//   public void setCategoryId(String categoryId) {
//     this.categoryId = categoryId;
//   }
// 
//   public String getNote() {
//     return note;
//   }
// 
//   public void setNote(String note) {
//     this.note = note;
//   }
// }
// 
// Path: reasoner/src/main/java/org/earthcube/geosoft/software/classes/sn/StandardName.java
// public class StandardName extends URIEntity {
//   private static final long serialVersionUID = 1L;
// 
//   private String objectId;
//   private String quantityId;
//   private ArrayList<String> operatorIds;
//   private String internalVariable;
//   private String note;
//   
//   public StandardName(String id) {
//     super(id);
//     operatorIds = new ArrayList<String>();
//   }
// 
//   public String getObjectId() {
//     return objectId;
//   }
// 
//   public void setObjectId(String objectId) {
//     this.objectId = objectId;
//   }
// 
//   public String getQuantityId() {
//     return quantityId;
//   }
// 
//   public void setQuantityId(String quantityId) {
//     this.quantityId = quantityId;
//   }
// 
//   public ArrayList<String> getOperatorIds() {
//     return operatorIds;
//   }
// 
//   public void addOperatorId(String operatorId) {
//     this.operatorIds.add(operatorId);
//   }
// 
//   public String getInternalVariable() {
//     return internalVariable;
//   }
// 
//   public void setInternalVariable(String internalVariable) {
//     this.internalVariable = internalVariable;
//   }
// 
//   public String getNote() {
//     return note;
//   }
// 
//   public void setNote(String note) {
//     this.note = note;
//   }
// 
// }
// 
// Path: reasoner/src/main/java/org/earthcube/geosoft/util/URIEntity.java
// public class URIEntity implements Serializable {
// 	private static final long serialVersionUID = 1L;
// 	private URI id;
// 	private String label;
// 	
// 	HashMap<String, Object> provenance;
// 	
// 	public URIEntity(String id) {
// 		setID(id);
// 		this.provenance = new HashMap<String, Object>();
// 	}
// 	
// 	public URIEntity(String id, String label) {
// 	  setID(id);
// 	  this.label = label;
// 	  this.provenance = new HashMap<String, Object>();
// 	}
// 
// 	public String getID() {
// 		if (id != null)
// 			return id.toString();
// 		else
// 			return null;
// 	}
// 
// 	public void setID(String id) {
// 		try {
// 			this.id = new URI(id).normalize();
// 		} catch (Exception e) {
// 			System.err.println(id + " Not a URI. Only URIs allowed for IDs");
// 		}
// 	}
// 	
// 	public String getURL() {
// 		return this.getNamespace().replaceAll("#$", "");
// 	}
// 
// 	public String getName() {
// 		if (id != null)
// 			return id.getFragment();
// 		else
// 			return null;
// 	}
// 
// 	public String getNamespace() {
// 		if (id != null)
// 			return id.getScheme() + ":" + id.getSchemeSpecificPart() + "#";
// 		else
// 			return null;
// 	}
// 
//   public String getLabel() {
//     return label;
//   }
// 
//   public void setLabel(String label) {
//     this.label = label;
//   }
//   
// 	public HashMap<String, Object> getProvenance() {
//     return provenance;
//   }
// 
//   public void addProvenance(String propId, Object value) {
//     this.provenance.put(propId, value);
//   }
// 
//   public String toString() {
// 		return getName();
// 	}
// 
// 	public int hashCode() {
// 		return id.hashCode();
// 	}
// 
// }


// Path: reasoner/src/main/java/org/earthcube/geosoft/software/classes/Software.java
import java.util.ArrayList;
import java.util.HashMap;
import org.earthcube.geosoft.software.classes.sn.SNAssumption;
import org.earthcube.geosoft.software.classes.sn.StandardName;
import org.earthcube.geosoft.util.URIEntity;

package org.earthcube.geosoft.software.classes;



public class Software extends URIEntity {
  private static final long serialVersionUID = 1L;

  String classId;
  ArrayList<SWPropertyValue> propertyValues;
  ArrayList<SoftwareRole> inputs;
  ArrayList<SoftwareRole> outputs;
  ArrayList<String> explanations;
  HashMap<String, String> labels;
  
  ArrayList<SNAssumption> assumptions;
  ArrayList<StandardName> standardnames;