Memory Structure Type List

		//All these classes correspond to all DBCN classes.
		//Get a graph instance and setup the whole DB initial hierarchy.
		txGraph.createEdgeType(DBCN.E.parent, DBCN.E.cn);
		txGraph.createEdgeType(DBCN.E.data, DBCN.E.cn);
		//These 3 edge are the only edge with property, to record the start time offset for operation timing purposes.
		EdgeType requirement = txGraph.createEdgeType(DBCN.E.requirement, DBCN.E.cn);
		requirement.createProperty(LP.startTimeOffset, PropertyType.LONG);
		EdgeType result = txGraph.createEdgeType(DBCN.E.result, DBCN.E.cn);
		result.createProperty(LP.startTimeOffset, PropertyType.LONG);
		EdgeType prediction = txGraph.createEdgeType(DBCN.E.prediction, DBCN.E.cn);
		prediction.createProperty(LP.startTimeOffset, PropertyType.LONG);

		txGraph.createEdgeType(DBCN.E.polyVal, DBCN.E.cn);
		txGraph.createEdgeType(DBCN.E.processing, DBCN.E.cn);
		txGraph.createEdgeType(DBCN.E.completed, DBCN.E.cn);
		txGraph.createEdgeType(DBCN.E.source, DBCN.E.cn);
		txGraph.createEdgeType(DBCN.E.GCA, DBCN.E.cn);
		txGraph.createEdgeType(DBCN.E.previous, DBCN.E.cn);
		txGraph.createEdgeType(DBCN.E.occurrence, DBCN.E.cn);
		txGraph.createEdgeType(DBCN.E.session, DBCN.E.cn);
		txGraph.createEdgeType(DBCN.E.parentSession, DBCN.E.cn);
		txGraph.createEdgeType(DBCN.E.modDuringSession, DBCN.E.cn);
		txGraph.createEdgeType(DBCN.E.expMain, DBCN.E.cn);
		txGraph.createEdgeType(DBCN.E.convergenceMain, DBCN.E.cn);
		txGraph.createEdgeType(DBCN.E.startupStartGCA, DBCN.E.cn);
		txGraph.createEdgeType(DBCN.E.startupEndGCA, DBCN.E.cn);

		//For vertex property, if doesn't specify, means it doesn't have property. For every property, we skipped its initial DBCN_V as it is redundant.
		//Store the initial data for each full system startup for statistical purposes.
		VertexType startup = txGraph.createVertexType(DBCN.V.startup.cn, DBCN.V.cn);
		startup.createProperty(LP.startupStartTime, PropertyType.LONG);
		startup.createProperty(LP.startupEndTime, PropertyType.LONG);
		startup.createProperty(LP.startupPrecisionRate, PropertyType.DOUBLE);
		startup.createProperty(LP.startupPrecisionRateElementCount, PropertyType.INTEGER);
		startup.createProperty(LP.startupGCALength, PropertyType.INTEGER);

		txGraph.createVertexType(DBCN.V.startup.current.cn, DBCN.V.cn);

		txGraph.createVertexType(DBCN.V.globalDist.cn, DBCN.V.cn);
		VertexType globalDist_in = txGraph.createVertexType(DBCN.V.globalDist.in.cn, DBCN.V.cn);
		globalDist_in.createProperty(LP.data, PropertyType.DOUBLE);
		VertexType globalDist_out = txGraph.createVertexType(DBCN.V.globalDist.out.cn, DBCN.V.cn);
		globalDist_out.createProperty(LP.data, PropertyType.DOUBLE);

		VertexType worker = txGraph.createVertexType(DBCN.V.worker.cn, DBCN.V.cn);
		worker.createProperty(LP.nodeUID, PropertyType.STRING);	//Stores registered computing node id.
		worker.createProperty(LP.workerList, PropertyType.STRING);	//yml file that stores all main worker's sub worker list.
		worker.createProperty(LP.storageId, PropertyType.STRING);	//The command storage id.

		VertexType worker_storageRegister = txGraph.createVertexType(DBCN.V.worker.storageRegister.cn, DBCN.V.cn);
		worker_storageRegister.createProperty(LP.storageId, PropertyType.STRING);
		worker_storageRegister.createProperty(LP.isRegistered, PropertyType.BOOLEAN);
		worker_storageRegister.createProperty(LP.registrant, PropertyType.STRING);
		worker_storageRegister.createProperty(LP.lastPingTime, PropertyType.LONG);
		worker_storageRegister.createProperty(LP.pingLatency, PropertyType.LONG);
		worker_storageRegister.createProperty(LP.timeStamp, PropertyType.LONG);

		//Stores the connection detail, how can you connect to him.
		VertexType worker_registrar = txGraph.createVertexType(DBCN.V.worker.registrar.cn, DBCN.V.cn);
		worker_registrar.createProperty(LP.hostName, PropertyType.STRING);
		worker_registrar.createProperty(LP.port, PropertyType.INTEGER);

		VertexType worker_WMRequestListener = txGraph.createVertexType(DBCN.V.worker.WMRequestListener.cn, DBCN.V.cn);
		worker_WMRequestListener.createProperty(LP.nodeUID, PropertyType.STRING);
		worker_WMRequestListener.createProperty(LP.hostName, PropertyType.STRING);
		worker_WMRequestListener.createProperty(LP.port, PropertyType.INTEGER);

		txGraph.createVertexType(DBCN.V.LTM.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.LTM.rawData.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.LTM.rawData.PI.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.LTM.rawData.PI.dev.cn, DBCN.V.cn);
		VertexType LTM_rawData_PI_dev_camera1 = txGraph.createVertexType(DBCN.V.LTM.rawData.PI.dev.camera1.cn, DBCN.V.cn);
		LTM_rawData_PI_dev_camera1.createProperty(LP.data, PropertyType.BINARY);
		VertexType LTM_rawData_PI_dev_mic1 = txGraph.createVertexType(DBCN.V.LTM.rawData.PI.dev.mic1.cn, DBCN.V.cn);
		LTM_rawData_PI_dev_mic1.createProperty(LP.data, PropertyType.BINARY);

		txGraph.createVertexType(DBCN.V.LTM.rawData.POFeedback.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.LTM.rawData.POFeedback.dev.cn, DBCN.V.cn);
		VertexType LTM_rawData_POFeedback_dev_motor1 = txGraph.createVertexType(DBCN.V.LTM.rawData.POFeedback.dev.motor1.cn, DBCN.V.cn);
		LTM_rawData_POFeedback_dev_motor1.createProperty(LP.data, PropertyType.DOUBLE);
		VertexType LTM_rawData_POFeedback_dev_motor2 = txGraph.createVertexType(DBCN.V.LTM.rawData.POFeedback.dev.motor2.cn, DBCN.V.cn);
		LTM_rawData_POFeedback_dev_motor2.createProperty(LP.data, PropertyType.DOUBLE);
		VertexType LTM_rawData_POFeedback_dev_motor3 = txGraph.createVertexType(DBCN.V.LTM.rawData.POFeedback.dev.motor3.cn, DBCN.V.cn);
		LTM_rawData_POFeedback_dev_motor3.createProperty(LP.data, PropertyType.DOUBLE);
		VertexType LTM_rawData_POFeedback_dev_motor4 = txGraph.createVertexType(DBCN.V.LTM.rawData.POFeedback.dev.motor4.cn, DBCN.V.cn);
		LTM_rawData_POFeedback_dev_motor4.createProperty(LP.data, PropertyType.DOUBLE);
		VertexType LTM_rawData_POFeedback_dev_speaker1 = txGraph.createVertexType(DBCN.V.LTM.rawData.POFeedback.dev.speaker1.cn, DBCN.V.cn);
		LTM_rawData_POFeedback_dev_speaker1.createProperty(LP.data, PropertyType.BINARY);

		txGraph.createVertexType(DBCN.V.LTM.polyVal.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.LTM.polyVal.rawData.cn, DBCN.V.cn);
		VertexType LTM_polyVal_rawData_visual = txGraph.createVertexType(DBCN.V.LTM.polyVal.rawData.visual.cn, DBCN.V.cn);
		LTM_polyVal_rawData_visual.createProperty(LP.data, PropertyType.DOUBLE);
		VertexType LTM_polyVal_rawData_audio = txGraph.createVertexType(DBCN.V.LTM.polyVal.rawData.audio.cn, DBCN.V.cn);
		LTM_polyVal_rawData_audio.createProperty(LP.data, PropertyType.DOUBLE);
		VertexType LTM_polyVal_rawData_movement = txGraph.createVertexType(DBCN.V.LTM.polyVal.rawData.movement.cn, DBCN.V.cn);
		LTM_polyVal_rawData_movement.createProperty(LP.data, PropertyType.DOUBLE);

		txGraph.createVertexType(DBCN.V.LTM.rawDataICL.cn, DBCN.V.cn);
		VertexType LTM_rawDataICL_visual = txGraph.createVertexType(DBCN.V.LTM.rawDataICL.visual.cn, DBCN.V.cn);
		LTM_rawDataICL_visual.createProperty(LP.data, PropertyType.BINARY);
		LTM_rawDataICL_visual.createProperty(LP.imgX, PropertyType.INTEGER);
		LTM_rawDataICL_visual.createProperty(LP.imgY, PropertyType.INTEGER);
		VertexType LTM_rawDataICL_audio = txGraph.createVertexType(DBCN.V.LTM.rawDataICL.audio.cn, DBCN.V.cn);
		LTM_rawDataICL_audio.createProperty(LP.data, PropertyType.BINARY);
		LTM_rawDataICL_audio.createProperty(LP.audioAbsTimestamp, PropertyType.LONG);
		//Temporary useless as our current movement data doesn't go through ICL phrase but direct into GCA phrase as it has nothing to pair with.
		txGraph.createVertexType(DBCN.V.LTM.rawDataICL.movement.cn, DBCN.V.cn);

		txGraph.createVertexType(DBCN.V.LTM.GCAMain.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.LTM.GCAMain.rawData.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.LTM.GCAMain.rawDataICL.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.LTM.GCAMain.POFeedbackGCA.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.LTM.GCAMain.exp.cn, DBCN.V.cn);

		txGraph.createVertexType(DBCN.V.LTM.exp.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.LTM.exp.requirement.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.LTM.exp.result.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.LTM.exp.prediction.cn, DBCN.V.cn);

		txGraph.createVertexType(DBCN.V.general.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.general.rawData.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.general.rawData.PI.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.general.rawData.PI.dev.cn, DBCN.V.cn);
		VertexType general_rawData_PI_dev_camera1 = txGraph.createVertexType(DBCN.V.general.rawData.PI.dev.camera1.cn, DBCN.V.cn);
		general_rawData_PI_dev_camera1.createProperty(LP.polyVal, PropertyType.DOUBLE);
		VertexType general_rawData_PI_dev_mic1 = txGraph.createVertexType(DBCN.V.general.rawData.PI.dev.mic1.cn, DBCN.V.cn);
		general_rawData_PI_dev_mic1.createProperty(LP.polyVal, PropertyType.DOUBLE);

		txGraph.createVertexType(DBCN.V.general.rawData.POFeedback.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.general.rawData.POFeedback.dev.cn, DBCN.V.cn);
		VertexType general_rawData_POFeedback_dev_motor1 = txGraph.createVertexType(DBCN.V.general.rawData.POFeedback.dev.motor1.cn, DBCN.V.cn);
		general_rawData_POFeedback_dev_motor1.createProperty(LP.polyVal, PropertyType.DOUBLE);
		VertexType general_rawData_POFeedback_dev_motor2 = txGraph.createVertexType(DBCN.V.general.rawData.POFeedback.dev.motor2.cn, DBCN.V.cn);
		general_rawData_POFeedback_dev_motor2.createProperty(LP.polyVal, PropertyType.DOUBLE);
		VertexType general_rawData_POFeedback_dev_motor3 = txGraph.createVertexType(DBCN.V.general.rawData.POFeedback.dev.motor3.cn, DBCN.V.cn);
		general_rawData_POFeedback_dev_motor3.createProperty(LP.polyVal, PropertyType.DOUBLE);
		VertexType general_rawData_POFeedback_dev_motor4 = txGraph.createVertexType(DBCN.V.general.rawData.POFeedback.dev.motor4.cn, DBCN.V.cn);
		general_rawData_POFeedback_dev_motor4.createProperty(LP.polyVal, PropertyType.DOUBLE);
		VertexType general_rawData_POFeedback_dev_speaker1 = txGraph.createVertexType(DBCN.V.general.rawData.POFeedback.dev.speaker1.cn, DBCN.V.cn);
		general_rawData_POFeedback_dev_speaker1.createProperty(LP.polyVal, PropertyType.DOUBLE);

		txGraph.createVertexType(DBCN.V.general.rawDataICL.cn, DBCN.V.cn);
		VertexType general_rawDataICL_visual = txGraph.createVertexType(DBCN.V.general.rawDataICL.visual.cn, DBCN.V.cn);
		general_rawDataICL_visual.createProperty(LP.polyVal, PropertyType.DOUBLE);
		VertexType general_rawDataICL_audio = txGraph.createVertexType(DBCN.V.general.rawDataICL.audio.cn, DBCN.V.cn);
		general_rawDataICL_audio.createProperty(LP.polyVal, PropertyType.DOUBLE);
		VertexType general_rawDataICL_movement = txGraph.createVertexType(DBCN.V.general.rawDataICL.movement.cn, DBCN.V.cn);
		general_rawDataICL_movement.createProperty(LP.polyVal, PropertyType.DOUBLE);

		VertexType general_GCAMain = txGraph.createVertexType(DBCN.V.general.GCAMain.cn, DBCN.V.cn);
		general_GCAMain.createProperty(LP.timeStamp, PropertyType.LONG);
		general_GCAMain.createProperty(LP.polyVal, PropertyType.DOUBLE);
		txGraph.createVertexType(DBCN.V.general.GCAMain.rawData.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.general.GCAMain.rawDataICL.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.general.GCAMain.POFeedbackGCA.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.general.GCAMain.exp.cn, DBCN.V.cn);

		VertexType general_convergenceMain = txGraph.createVertexType(DBCN.V.general.convergenceMain.cn, DBCN.V.cn);
		general_convergenceMain.createProperty(LP.timeRequirementList, PropertyType.BINARY);
		general_convergenceMain.createProperty(LP.timeRanList, PropertyType.BINARY);
		general_convergenceMain.createProperty(LP.polyValList, PropertyType.BINARY);
		general_convergenceMain.createProperty(LP.precisionRateList, PropertyType.BINARY);
		general_convergenceMain.createProperty(LP.originalOrdering, PropertyType.INTEGER);
		general_convergenceMain.createProperty(LP.totalSolutionSize, PropertyType.INTEGER);
		general_convergenceMain.createProperty(LP.requirementList, PropertyType.BINARY);
		general_convergenceMain.createProperty(LP.selectedSolutionIndex, PropertyType.INTEGER);
		general_convergenceMain.createProperty(LP.sortedSolutionIndexList, PropertyType.BINARY);
		general_convergenceMain.createProperty(LP.SCCRSCompletedSize, PropertyType.INTEGER);

		VertexType general_convergenceSecondary = txGraph.createVertexType(DBCN.V.general.convergenceSecondary.cn, DBCN.V.cn);
		general_convergenceSecondary.createProperty(LP.originalOrdering, PropertyType.INTEGER);
		general_convergenceSecondary.createProperty(LP.realityPairFailedIndexList, PropertyType.BINARY);
		general_convergenceSecondary.createProperty(LP.totalSolutionSize, PropertyType.INTEGER);
		general_convergenceSecondary.createProperty(LP.remainingSolutionToBeCompleted, PropertyType.INTEGER);

		//It will hold an edge convergenceHead to the head of a decision tree, where its underlying type will be a convergenceMain
		//created during STISS.
		VertexType general_convergenceHead = txGraph.createVertexType(DBCN.V.general.convergenceHead.cn, DBCN.V.cn);
		//Timestamp is the moment of creation of this vertex, NOT the end of this tree.
		general_convergenceHead.createProperty(LP.timeStamp, PropertyType.LONG);
		//Set after WM PaRc completes, if whole tree fail, then this will be set to false. Default is true.
		general_convergenceHead.createProperty(LP.PaRcPassed, PropertyType.BOOLEAN);

		VertexType general_exp = txGraph.createVertexType(DBCN.V.general.exp.cn, DBCN.V.cn);
		//Read EXPSTATE.java for all available state.
		general_exp.createProperty(LP.expState, PropertyType.INTEGER);
		general_exp.createProperty(LP.polyVal, PropertyType.DOUBLE);
		general_exp.createProperty(LP.timeStamp, PropertyType.LONG);
		general_exp.createProperty(LP.duration, PropertyType.LONG);
		general_exp.createProperty(LP.precisionRate, PropertyType.DOUBLE);
		general_exp.createProperty(LP.occurrenceCountPR, PropertyType.LONG);
		general_exp.createProperty(LP.depth, PropertyType.INTEGER);
		VertexType general_exp_requirement = txGraph.createVertexType(DBCN.V.general.exp.requirement.cn, DBCN.V.cn);
		general_exp_requirement.createProperty(LP.polyVal, PropertyType.DOUBLE);
		VertexType general_exp_result = txGraph.createVertexType(DBCN.V.general.exp.result.cn, DBCN.V.cn);
		general_exp_result.createProperty(LP.polyVal, PropertyType.DOUBLE);
		VertexType general_exp_prediction = txGraph.createVertexType(DBCN.V.general.exp.prediction.cn, DBCN.V.cn);
		general_exp_prediction.createProperty(LP.polyVal, PropertyType.DOUBLE);

		VertexType general_session = txGraph.createVertexType(DBCN.V.general.session.cn, DBCN.V.cn);
		general_session.createProperty(LP.nodeUID, PropertyType.STRING);
		general_session.createProperty(LP.expState, PropertyType.INTEGER);
		general_session.createProperty(LP.lastPrecisionRate, PropertyType.DOUBLE);
		general_session.createProperty(LP.bestPrecisionRate, PropertyType.DOUBLE);
		general_session.createProperty(LP.bestPrecisionRateRid, PropertyType.STRING);
		//No should be added as the things that can be added in is large and we are responsible to calculate which is the best at the run time.
		general_session.createProperty(LP.banList, PropertyType.BINARY);
		general_session.createProperty(LP.greenList, PropertyType.BINARY);

		txGraph.createVertexType(DBCN.V.temp.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.temp.ICLPatternFeedback.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.temp.ICLPatternFeedback.rawData.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.temp.ICLPatternFeedback.rawData.visual.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.temp.ICLPatternFeedback.rawData.audio.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.temp.ICLPatternFeedback.rawData.movement.cn, DBCN.V.cn);

		txGraph.createVertexType(DBCN.V.extInterface.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.extInterface.hw.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.extInterface.hw.camera.cn, DBCN.V.cn);
		VertexType extInterface_hw_camera_cam1 = txGraph.createVertexType(DBCN.V.extInterface.hw.camera.cam1.cn, DBCN.V.cn);
		//source data url.
		extInterface_hw_camera_cam1.createProperty(LP.data, PropertyType.STRING);

		txGraph.createVertexType(DBCN.V.extInterface.hw.mic.cn, DBCN.V.cn);
		VertexType extInterface_hw_mic_mic1 = txGraph.createVertexType(DBCN.V.extInterface.hw.mic.mic1.cn, DBCN.V.cn);
		extInterface_hw_mic_mic1.createProperty(LP.data, PropertyType.STRING);

		txGraph.createVertexType(DBCN.V.extInterface.hw.controller.cn, DBCN.V.cn);
		VertexType extInterface_hw_controller_rpi = txGraph.createVertexType(DBCN.V.extInterface.hw.controller.rpi.cn, DBCN.V.cn);
		extInterface_hw_controller_rpi.createProperty(LP.data, PropertyType.STRING);

		txGraph.createVertexType(DBCN.V.extInterface.sw.cn, DBCN.V.cn);

		txGraph.createVertexType(DBCN.V.actionScheduler.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.actionScheduler.config.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.actionScheduler.addAction.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.actionScheduler.allAction.cn, DBCN.V.cn);

		txGraph.createVertexType(DBCN.V.WM.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.WM.timeline.cn, DBCN.V.cn);
		VertexType WM_timeline_addPrediction = txGraph.createVertexType(DBCN.V.WM.timeline.addPrediction.cn, DBCN.V.cn);
		WM_timeline_addPrediction.createProperty(LP.sessionRid, PropertyType.STRING);
		txGraph.createVertexType(DBCN.V.WM.timeline.addPhysicalOutput.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.WM.timeline.errorRouteRid.cn, DBCN.V.cn);

		VertexType taskDetail = txGraph.createVertexType(DBCN.V.taskDetail.cn, DBCN.V.cn);
		taskDetail.createProperty(LP.data, PropertyType.BINARY);

		/*
		 * For job center, data field is the work storage, nodeUid is the optional field provided during creation of worker node, used to force
		 * remove the subscription to these task as if the worker crashes, we have completely no idea where to recover its original work storage
		 * id (the data field), or simply just time consuming (trace back to the main manager node, then dig out the work storage id).
		 */
		txGraph.createVertexType(DBCN.V.jobCenter.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.rawDataDistCacl.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.rawDataDistCacl.task.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.rawDataDistCacl.processing.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.rawDataDistCacl.completed.cn, DBCN.V.cn);
		VertexType jc_crawler_rawDataDistCacl_worker = txGraph.createVertexType(DBCN.V.jobCenter.crawler.rawDataDistCacl.worker.cn, DBCN.V.cn);
		jc_crawler_rawDataDistCacl_worker.createProperty(LP.data, PropertyType.STRING);
		jc_crawler_rawDataDistCacl_worker.createProperty(LP.nodeUID, PropertyType.STRING);

		txGraph.createVertexType(DBCN.V.jobCenter.crawler.rawDataICL.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.rawDataICL.task.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.rawDataICL.processing.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.rawDataICL.completed.cn, DBCN.V.cn);
		VertexType jc_crawler_rawDataICL_worker = txGraph.createVertexType(DBCN.V.jobCenter.crawler.rawDataICL.worker.cn, DBCN.V.cn);
		jc_crawler_rawDataICL_worker.createProperty(LP.data, PropertyType.STRING);
		jc_crawler_rawDataICL_worker.createProperty(LP.nodeUID, PropertyType.STRING);

		txGraph.createVertexType(DBCN.V.jobCenter.crawler.STISS.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.STISS.task.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.STISS.processing.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.STISS.completed.cn, DBCN.V.cn);
		VertexType jc_crawler_STISS_worker = txGraph.createVertexType(DBCN.V.jobCenter.crawler.STISS.worker.cn, DBCN.V.cn);
		jc_crawler_STISS_worker.createProperty(LP.data, PropertyType.STRING);
		jc_crawler_STISS_worker.createProperty(LP.nodeUID, PropertyType.STRING);

		txGraph.createVertexType(DBCN.V.jobCenter.crawler.RSG.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.RSG.task.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.RSG.processing.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.RSG.completed.cn, DBCN.V.cn);
		VertexType jc_crawler_RSG_worker = txGraph.createVertexType(DBCN.V.jobCenter.crawler.RSG.worker.cn, DBCN.V.cn);
		jc_crawler_RSG_worker.createProperty(LP.data, PropertyType.STRING);
		jc_crawler_RSG_worker.createProperty(LP.nodeUID, PropertyType.STRING);

		txGraph.createVertexType(DBCN.V.jobCenter.crawler.SCCRS.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.SCCRS.task.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.SCCRS.processing.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.SCCRS.completed.cn, DBCN.V.cn);
		VertexType jc_crawler_SCCRS_worker = txGraph.createVertexType(DBCN.V.jobCenter.crawler.SCCRS.worker.cn, DBCN.V.cn);
		jc_crawler_SCCRS_worker.createProperty(LP.data, PropertyType.STRING);
		jc_crawler_SCCRS_worker.createProperty(LP.nodeUID, PropertyType.STRING);

		txGraph.createVertexType(DBCN.V.jobCenter.crawler.ACTGDR.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.ACTGDR.task.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.ACTGDR.processing.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.ACTGDR.completed.cn, DBCN.V.cn);
		VertexType jc_crawler_ACTGDR_worker = txGraph.createVertexType(DBCN.V.jobCenter.crawler.ACTGDR.worker.cn, DBCN.V.cn);
		jc_crawler_ACTGDR_worker.createProperty(LP.data, PropertyType.STRING);
		jc_crawler_ACTGDR_worker.createProperty(LP.nodeUID, PropertyType.STRING);

		txGraph.createVertexType(DBCN.V.jobCenter.crawler.RSGFSB.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.RSGFSB.task.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.RSGFSB.processing.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.RSGFSB.completed.cn, DBCN.V.cn);
		VertexType jc_crawler_RSGFSB_worker = txGraph.createVertexType(DBCN.V.jobCenter.crawler.RSGFSB.worker.cn, DBCN.V.cn);
		jc_crawler_RSGFSB_worker.createProperty(LP.data, PropertyType.STRING);
		jc_crawler_RSGFSB_worker.createProperty(LP.nodeUID, PropertyType.STRING);

		txGraph.createVertexType(DBCN.V.jobCenter.crawler.RERAUP.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.RERAUP.task.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.RERAUP.processing.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.crawler.RERAUP.completed.cn, DBCN.V.cn);
		VertexType jc_crawler_RERAUP_worker = txGraph.createVertexType(DBCN.V.jobCenter.crawler.RERAUP.worker.cn, DBCN.V.cn);
		jc_crawler_RERAUP_worker.createProperty(LP.data, PropertyType.STRING);
		jc_crawler_RERAUP_worker.createProperty(LP.nodeUID, PropertyType.STRING);

		txGraph.createVertexType(DBCN.V.jobCenter.STM.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.STM.globalDistUpdate.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.STM.globalDistUpdate.task.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.STM.globalDistUpdate.processing.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.STM.globalDistUpdate.completed.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.STM.globalDistUpdate.worker.cn, DBCN.V.cn);

		txGraph.createVertexType(DBCN.V.jobCenter.STM.GCAMain.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.STM.GCAMain.task.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.STM.GCAMain.completed.cn, DBCN.V.cn);
		VertexType jc_STM_GCAMain_worker = txGraph.createVertexType(DBCN.V.jobCenter.STM.GCAMain.worker.cn, DBCN.V.cn);
		jc_STM_GCAMain_worker.createProperty(LP.data, PropertyType.STRING);
		jc_STM_GCAMain_worker.createProperty(LP.nodeUID, PropertyType.STRING);
		txGraph.createVertexType(DBCN.V.jobCenter.STM.GCAMain.previous.cn, DBCN.V.cn);

		txGraph.createVertexType(DBCN.V.jobCenter.STM.GCAMain.rawData.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.STM.GCAMain.rawData.task.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.STM.GCAMain.rawData.completed.cn, DBCN.V.cn);
		VertexType jv_STM_GCAMain_rawData_worker = txGraph.createVertexType(DBCN.V.jobCenter.STM.GCAMain.rawData.worker.cn, DBCN.V.cn);
		jv_STM_GCAMain_rawData_worker.createProperty(LP.data, PropertyType.STRING);
		jv_STM_GCAMain_rawData_worker.createProperty(LP.nodeUID, PropertyType.STRING);

		txGraph.createVertexType(DBCN.V.jobCenter.STM.GCAMain.rawDataICL.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.STM.GCAMain.rawDataICL.task.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.STM.GCAMain.rawDataICL.completed.cn, DBCN.V.cn);
		VertexType jc_STM_GCAMain_rawDataICL_worker = txGraph.createVertexType(DBCN.V.jobCenter.STM.GCAMain.rawDataICL.worker.cn, DBCN.V.cn);
		jc_STM_GCAMain_rawDataICL_worker.createProperty(LP.data, PropertyType.STRING);
		jc_STM_GCAMain_rawDataICL_worker.createProperty(LP.nodeUID, PropertyType.STRING);

		txGraph.createVertexType(DBCN.V.jobCenter.STM.GCAMain.exp.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.STM.GCAMain.exp.task.cn, DBCN.V.cn);
		txGraph.createVertexType(DBCN.V.jobCenter.STM.GCAMain.exp.completed.cn, DBCN.V.cn);
		VertexType jc_STM_GCAMain_exp_worker = txGraph.createVertexType(DBCN.V.jobCenter.STM.GCAMain.exp.worker.cn, DBCN.V.cn);
		jc_STM_GCAMain_exp_worker.createProperty(LP.data, PropertyType.STRING);
		jc_STM_GCAMain_exp_worker.createProperty(LP.nodeUID, PropertyType.STRING);

		VertexType devNull = txGraph.createVertexType(DBCN.V.devnull.cn, DBCN.V.cn);
		devNull.createProperty(LP.data, PropertyType.STRING);
		//Index vertex type are not created as they are not yet final.

		VertexType log = txGraph.createVertexType(DBCN.V.log.cn, DBCN.V.cn);
		log.createProperty(Logger.LPLOG.credentialUid, PropertyType.STRING);
		log.createProperty(Logger.LPLOG.LVL, PropertyType.STRING);
		log.createProperty(Logger.LPLOG.CLA, PropertyType.STRING);
		log.createProperty(Logger.LPLOG.message, PropertyType.STRING);
		log.createProperty(Logger.LPLOG.exception, PropertyType.STRING);
		log.createProperty(Logger.LPLOG.timeStamp, PropertyType.LONG);

		VertexType logCredential = txGraph.createVertexType(DBCN.V.logCredential.cn, DBCN.V.cn);
		logCredential.createProperty(Logger.LPCREDENTIAL.UID, PropertyType.STRING);
		logCredential.createProperty(Logger.LPCREDENTIAL.threadName, PropertyType.STRING);
		logCredential.createProperty(Logger.LPCREDENTIAL.parentName, PropertyType.STRING);
		logCredential.createProperty(Logger.LPCREDENTIAL.taskList, PropertyType.STRING);
		logCredential.createProperty(Logger.LPCREDENTIAL.timeStamp, PropertyType.LONG);

		//Console feedback data is the log message generated into 1 string and committed to him.
		VertexType consoleFeedback = txGraph.createVertexType(DBCN.V.consoleFeedback.cn, DBCN.V.cn);
		consoleFeedback.createProperty(LP.data, PropertyType.STRING);

		//The configuration vertexes to manage clustered index.
		VertexType index_WMTimeRanIndex = txGraph.createVertexType(DBCN.index.WMTimeRanIndex.cn, DBCN.V.cn);
		index_WMTimeRanIndex.createProperty(LP.initialized, PropertyType.BOOLEAN);
		index_WMTimeRanIndex.createProperty(LP.maxClusterCount, PropertyType.INTEGER);
		index_WMTimeRanIndex.createProperty(LP.elementPerCluster, PropertyType.INTEGER);
		index_WMTimeRanIndex.createProperty(LP.currentInsertClusterIndex, PropertyType.INTEGER);
		index_WMTimeRanIndex.createProperty(LP.currentInsertClusterElementCount, PropertyType.INTEGER);
		VertexType index_WMPrecisionRateIndex = txGraph.createVertexType(DBCN.index.WMPrecisionRateIndex.cn, DBCN.V.cn);
		index_WMPrecisionRateIndex.createProperty(LP.initialized, PropertyType.BOOLEAN);
		index_WMPrecisionRateIndex.createProperty(LP.maxClusterCount, PropertyType.INTEGER);
		index_WMPrecisionRateIndex.createProperty(LP.elementPerCluster, PropertyType.INTEGER);
		index_WMPrecisionRateIndex.createProperty(LP.currentInsertClusterIndex, PropertyType.INTEGER);
		index_WMPrecisionRateIndex.createProperty(LP.currentInsertClusterElementCount, PropertyType.INTEGER);

		for (int i=0; i<workStorageCount; i++) {
			NumberFormat formatter = new DecimalFormat("00000");
			txGraph.createVertexType("W" + formatter.format(i), DBCN.V.cn);
		}

		for (int i=0; i<workStorageCount; i++) {
			NumberFormat formatter = new DecimalFormat("00000");
			Vertex add = txGraph.addVertex(DBCN.V.worker.storageRegister.cn, DBCN.V.worker.storageRegister.cn);
			add.setProperty(LP.storageId, "W" + formatter.format(i));
			add.setProperty(LP.isRegistered, false);
			add.setProperty(LP.registrant, "");
			add.setProperty(LP.lastPingTime, System.currentTimeMillis());
			add.setProperty(LP.pingLatency, 0);
		}

		//Setup the initial vertexes.
		Vertex V_extInterface_hw_camera_cam1 = txGraph.addVertex(DBCN.V.extInterface.hw.camera.cam1.cn, DBCN.V.extInterface.hw.camera.cam1.cn);
		V_extInterface_hw_camera_cam1.setProperty(LP.data, "http://10.42.0.92:8080/shot.jpg");

		Vertex V_extInterface_hw_mic_mic1 = txGraph.addVertex(DBCN.V.extInterface.hw.mic.mic1.cn, DBCN.V.extInterface.hw.mic.mic1.cn);
		V_extInterface_hw_mic_mic1.setProperty(LP.data, "http://10.42.0.92:8080/audio.wav");

		Vertex V_extInterface_hw_controller_rpi = txGraph.addVertex(DBCN.V.extInterface.hw.controller.rpi.cn, DBCN.V.extInterface.hw.controller.rpi.cn);
		V_extInterface_hw_controller_rpi.setProperty(LP.data, "10.42.0.56");

		Vertex V_worker_registrar = txGraph.addVertex(DBCN.V.worker.registrar.cn, DBCN.V.worker.registrar.cn);
		V_worker_registrar.setProperty(LP.hostName, "UNSET");
		V_worker_registrar.setProperty(LP.port, 4567);

		Vertex WMRequestListener = txGraph.addVertex(DBCN.V.worker.WMRequestListener.cn, DBCN.V.worker.WMRequestListener.cn);
		WMRequestListener.setProperty(LP.nodeUID, "UNSET");
		WMRequestListener.setProperty(LP.hostName, "UNSET");
		WMRequestListener.setProperty(LP.port, 9988);

		Vertex V_globalDist_out = txGraph.addVertex(V.globalDist.out.cn, V.globalDist.out.cn);
		V_globalDist_out.setProperty(LP.data, 50d);

		Vertex V_jc_STM_GCAmain_previous = txGraph.addVertex(V.jobCenter.STM.GCAMain.previous.cn, V.jobCenter.STM.GCAMain.previous.cn);
		Vertex V_general_GCAMain = txGraph.addVertex(V.general.GCAMain.cn, V.general.GCAMain.cn);
		V_general_GCAMain.setProperty(LP.timeStamp, System.currentTimeMillis());
		V_jc_STM_GCAmain_previous.addEdge(DBCN.E.source, V_general_GCAMain);

		Vertex V_index_WMTimeRanIndex = txGraph.addVertex(DBCN.index.WMTimeRanIndex.cn, DBCN.index.WMTimeRanIndex.cn);
		V_index_WMTimeRanIndex.setProperty(LP.initialized, false);
		Vertex V_index_WMPrecisionRateIndex = txGraph.addVertex(DBCN.index.WMPrecisionRateIndex.cn, DBCN.index.WMPrecisionRateIndex.cn);
		V_index_WMPrecisionRateIndex.setProperty(LP.initialized, false);