sparqlExtDispatchService/src/main/java/com/ge/research/semtk/services/dispatch/DispatcherServiceRestController.java
public JSONObject queryFromNodeGroup(@RequestBody QueryRequestBody requestBody, AutoGeneratedQueryTypes qt, SparqlResultTypes rt, Boolean useAuth){
		String jobId = this.generateJobId();
		SimpleResultSet retval = new SimpleResultSet(true);
		retval.addResult("requestID", jobId); // for backwards compatibility
		retval.addJobId(jobId);
		retval.addResultType(rt);
		
		AsynchronousNodeGroupBasedQueryDispatcher dsp = null;
		
		// create a request ID and set the value.
		
		// get the things we need for the dispatcher
		try {
			dsp = getDispatcher(props, jobId, (NodegroupRequestBody) requestBody, useAuth, true);
			dsp.getJobTracker().incrementPercentComplete(dsp.getJobId(), 1, 10);

			WorkThread thread = new WorkThread(dsp, requestBody.getExternalConstraints(), requestBody.getFlags(), qt, rt);
			
			if(qt.equals(AutoGeneratedQueryTypes.FILTER_CONSTRAINT)){
				// we should have a potential target object.				
				String target = ((FilterConstraintsRequestBody)requestBody).getTargetObjectSparqlID();
				thread.setTargetObjectSparqlID(target);
			}
		
			// set up a thread for the actual processing of the request
			thread.start();
			 
		} catch (Exception e) {
			LocalLogger.printStackTrace(e);
			retval.setSuccess(false);
			retval.addRationaleMessage(SERVICE_NAME, "../queryFromNodegroup()", e);
			
			try {
				JobTracker tracker = new JobTracker(servicesgraph_props.buildSei());
				tracker.setJobFailure(jobId, e.getMessage());
			} catch (Exception ee) {
				LocalLogger.printStackTrace(ee);
			}
			
		} 
		// send back the request ID.
		// the request is not finished but that is okay
		return retval.toJson();
	}
/**
	 * 
	 * @param requestBody
	 * @param qt
	 * @param useAuth    NOTE - set to true for performance.  Non-auth queries containing FROM clauses are very slow when using the non-auth endpoint.
	 * @return
	 */
@param requestBody
@param qt
@param useAuth    NOTE - set to true for performance.  Non-auth queries containing FROM clauses are very slow when using the non-auth endpoint.
@return
@param requestBody @param qt @param useAuth NOTE - set to true for performance . Non - auth queries containing FROM clauses are very slow when using the non - auth endpoint . @return
public JSONObject queryFromNodeGroup(@RequestBody QueryRequestBody requestBody, AutoGeneratedQueryTypes qt, SparqlResultTypes rt, Boolean useAuth){
		String jobId = this.generateJobId();
		SimpleResultSet retval = new SimpleResultSet(true);
		retval.addResult("requestID", jobId); 
		retval.addJobId(jobId);
		retval.addResultType(rt);
		AsynchronousNodeGroupBasedQueryDispatcher dsp = null;
		try {
			dsp = getDispatcher(props, jobId, (NodegroupRequestBody) requestBody, useAuth, true);
			dsp.getJobTracker().incrementPercentComplete(dsp.getJobId(), 1, 10);
			WorkThread thread = new WorkThread(dsp, requestBody.getExternalConstraints(), requestBody.getFlags(), qt, rt);
			if(qt.equals(AutoGeneratedQueryTypes.FILTER_CONSTRAINT)){
				String target = ((FilterConstraintsRequestBody)requestBody).getTargetObjectSparqlID();
				thread.setTargetObjectSparqlID(target);
			}
			thread.start();
		} catch (Exception e) {
			LocalLogger.printStackTrace(e);
			retval.setSuccess(false);
			retval.addRationaleMessage(SERVICE_NAME, "../queryFromNodegroup()", e);
			try {
				JobTracker tracker = new JobTracker(servicesgraph_props.buildSei());
				tracker.setJobFailure(jobId, e.getMessage());
			} catch (Exception ee) {
				LocalLogger.printStackTrace(ee);
			}
		} 
		return retval.toJson();
	}
public JSONObject queryFromNodeGroup ( @ RequestBody QueryRequestBody requestBody , AutoGeneratedQueryTypes qt , SparqlResultTypes rt , Boolean useAuth ) { String jobId = this . generateJobId ( ) ; SimpleResultSet retval = new SimpleResultSet ( true ) ; retval . addResult ( "requestID" , jobId ) ; retval . addJobId ( jobId ) ; retval . addResultType ( rt ) ; AsynchronousNodeGroupBasedQueryDispatcher dsp = null ; try { dsp = getDispatcher ( props , jobId , ( NodegroupRequestBody ) requestBody , useAuth , true ) ; dsp . getJobTracker ( ) . incrementPercentComplete ( dsp . getJobId ( ) , 1 , 10 ) ; WorkThread thread = new WorkThread ( dsp , requestBody . getExternalConstraints ( ) , requestBody . getFlags ( ) , qt , rt ) ; if ( qt . equals ( AutoGeneratedQueryTypes . FILTER_CONSTRAINT ) ) { String target = ( ( FilterConstraintsRequestBody ) requestBody ) . getTargetObjectSparqlID ( ) ; thread . setTargetObjectSparqlID ( target ) ; } thread . start ( ) ; } catch ( Exception e ) { LocalLogger . printStackTrace ( e ) ; retval . setSuccess ( false ) ; retval . addRationaleMessage ( SERVICE_NAME , "../queryFromNodegroup()" , e ) ; try { JobTracker tracker = new JobTracker ( servicesgraph_props . buildSei ( ) ) ; tracker . setJobFailure ( jobId , e . getMessage ( ) ) ; } catch ( Exception ee ) { LocalLogger . printStackTrace ( ee ) ; } } return retval . toJson ( ) ; }
@param requestBody
 @param qt
 @param useAuth    NOTE - set to true for performance.
@param requestBody @param qt @param useAuth NOTE - set to true for performance .
// for backwards compatibility // create a request ID and set the value. // get the things we need for the dispatcher // we should have a potential target object.				 // set up a thread for the actual processing of the request // send back the request ID. // the request is not finished but that is okay