1. A method for controlling one or more drones to respond to a request for information, comprising; receiving a natural language request for information about a spatial location; parsing the natural language request into a plurality of data requests; searching for existing sources for the plurality of data requests; determining that there are one or more existing sources for one or more of the plurality of data requests; analyzing the existing sources to obtain first data responsive to the plurality of data requests; determining that there are no existing sources for two or more of the plurality of data requests and identifying the data requests with no existing source as missing data requests; configuring a flight plan for one or more drones over the spatial location based on the plurality of data requests and based on the missing data requests; controlling one or more drones to fly over the spatial location according to the configured flight plan to obtain a plurality of data types from the spatial location based on the plurality of data requests and based on the missing data requests; extracting a plurality of data points responsive to the plurality of data requests from the plurality of data types obtained by the one or more drones; obtaining labels from a user for one or more of the plurality of data points; determining whether there are unlabeled data points; predicting labels for the unlabeled data points from a learning algorithm using the labels obtained from the user; determining the predicted labels are true labels for the unlabeled data points; analyzing the responsive data to provide an answer to the natural language request for information, the analyzing including combining the first data, the user labeled data points and the true labeled data points to provide an answer to the first natural language request for information.