def generate_refined_intermediate_sonata_queries(self): qid_2_queries_refined = {} refined_sonata_queries = {} filter_mappings = {} # First update the Sonata queries for different levels for (qid, sonata_query) in self.qid_2_query.iteritems(): if qid in self.qid_2_query: refined_sonata_queries[qid] = {} refinement_key = self.per_query_refinement_key[qid] ref_levels = self.ref_levels for ref_level in ref_levels[1:]: refined_sonata_queries[qid][ref_level] = {} refined_query_id = get_refined_query_id(sonata_query, ref_level) refined_sonata_query = apply_refinement_plan(sonata_query, refinement_key, refined_query_id, ref_level) qid_2_queries_refined[refined_query_id] = refined_sonata_query # Create target-specific partition object for this refined query partition_object = Partition(refined_sonata_query, self.target, ref_level) # generate intermediate queries for learning partition_object.generate_partitioned_queries_learning() # update intermediate queries and filter mappings sonata_intermediate_queries = partition_object.intermediate_learning_queries filter_mappings_tmp = partition_object.filter_mappings filter_mappings.update(filter_mappings_tmp) # Update refined sonata queries for part_qid in sonata_intermediate_queries: refined_sonata_queries[qid][ref_level][part_qid] = sonata_intermediate_queries[part_qid] self.refined_sonata_queries = refined_sonata_queries self.filter_mappings = filter_mappings self.qid_2_refined_queries = qid_2_queries_refined