def gen_cql_env(configuration, experiment_conf, output): ''' Generate environment files for StremPref ''' text = get_register_stream(configuration, experiment_conf) query_dir = get_query_dir(configuration, experiment_conf) # Environment files for equivalent CQL queries filename = query_dir + os.sep + 'table_ots.cql' text += REG_Q_STR.format(qname='table_ots', qfile=filename) filename = query_dir + os.sep + 'stream_ots.cql' text += REG_Q_STR.format(qname='stream_ots', qfile=filename) filename = query_dir + os.sep + 'z.cql' text += REG_Q_STR.format(qname='z', qfile=filename) filename = query_dir + os.sep + 'z_prime.cql' text += REG_Q_STR.format(qname='z_prime', qfile=filename) filename = query_dir + os.sep + 'p_start.cql' text += REG_Q_STR.format(qname='p_start', qfile=filename) filename = query_dir + os.sep + 'p_end.cql' text += REG_Q_STR.format(qname='p_end', qfile=filename) filename = query_dir + os.sep + 'p_start_end.cql' text += REG_Q_STR.format(qname='p_start_end', qfile=filename) # Final equivalent query filename = query_dir + os.sep + 'equiv.cql' if output: # Get output filename out_file = get_out_file(configuration, experiment_conf) text += REG_Q_OUTPUT_STR.format(qname='equiv', qfile=filename, ofile=out_file) else: text += REG_Q_STR.format(qname='equiv', qfile=filename) filename = get_env_file(configuration, experiment_conf) write_to_txt(filename, text)
def gen_seq_query(configuration, experiment_conf): ''' Generate queries with SEQ operator ''' query_dir = get_query_dir(configuration, experiment_conf) filename = query_dir + os.sep + 'seq.cql' query = SEQ_QUERY.format(ran=experiment_conf[RAN], sli=experiment_conf[SLI]) write_to_txt(filename, query)
def gen_cql_queries(configuration, experiment_conf): ''' Generate all CQL queries equivalent to SEQ operator ''' query_dir = get_query_dir(configuration, experiment_conf) gen_cql_rpos_spos_queries(query_dir) gen_cql_position_queries(query_dir, experiment_conf) gen_cql_w_query(query_dir, experiment_conf) gen_cql_final_query(query_dir, experiment_conf)
def gen_cql_queries(configuration, experiment_conf): ''' Generate all CQL queries equivalent to ENDSEQ operator ''' query_dir = get_query_dir(configuration, experiment_conf) query = CQL_Z.format(ran=experiment_conf[RAN], sli=experiment_conf[SLI]) filename = query_dir + os.sep + 'z.cql' write_to_txt(filename, query) gen_cql_final_query(query_dir, experiment_conf)
def gen_bestseq_query(configuration, experiment_conf): ''' Generate StreamPref queries with BESTSEQ operator ''' filename = get_query_dir(configuration, experiment_conf) + \ os.sep + 'bestseq.cql' rules_dict = gen_rules_dict(configuration, experiment_conf) pref_str = get_temporal_preferences(rules_dict) query = BESTSEQ_QUERY.format(ran=experiment_conf[RAN], sli=experiment_conf[SLI], pref=pref_str) write_to_txt(filename, query)
def gen_cql_queries(configuration, experiment_conf): ''' Generate queries with CQL original operators equivalent to BESTSEQ operator ''' filename = get_tup_file(configuration) gen_transitive_tup(configuration, filename) query_dir = get_query_dir(configuration, experiment_conf) # Generate z query (sequences) query = Z_QUERY.format(ran=experiment_conf[RAN], sli=experiment_conf[SLI]) filename = query_dir + os.sep + 'z.cql' write_to_txt(filename, query) # Generate p_join query (join z positions) # Get attribute list att_list = get_attribute_list(experiment_conf[ATT]) # Exclude sequence identifier (A1) att_list = att_list[1:] z1_att_list = ['z1.' + att for att in att_list] z1_att_list = ', '.join(z1_att_list) z2_att_list = ['z2.' + att + ' AS _' + att for att in att_list] z2_att_list = ', '.join(z2_att_list) query = P_JOIN_QUERY.format(z1_att=z1_att_list, z2_att=z2_att_list) filename = query_dir + os.sep + 'p_join.cql' write_to_txt(filename, query) # Generate query p (positions to be compared) diff_filter = ['NOT ' + att + ' = _' + att for att in att_list] diff_filter = ' OR '.join(diff_filter) query = P_QUERY.format(p_filter=diff_filter) filename = query_dir + os.sep + 'p.cql' write_to_txt(filename, query) # Get rule list rule_list = get_rule_list(configuration, experiment_conf) # Generate query t1 (identifier of dominant sequences) and # individual rule queries query_list = [] for index, rule in enumerate(rule_list): # Generates queries R_i and D_i for each rule gen_rule_queries(query_dir, experiment_conf, index + 1, rule) query = 'SELECT * FROM d' + str(index + 1) query_list.append(query) query = '\nUNION\n'.join(query_list) + ';' filename = query_dir + os.sep + 't1.cql' write_to_txt(filename, query) # Generate T_i Queries gen_cql_transitive_queries(experiment_conf, query_dir) # Generate ID query query = ID_QUERY.format(rn=experiment_conf[LEV]) filename = query_dir + os.sep + 'id.cql' write_to_txt(filename, query) # Generate query for final result query = 'SELECT z.* FROM z, id WHERE z.a1 = id.a1;' filename = query_dir + os.sep + 'equiv.cql' write_to_txt(filename, query)
def gen_cql_queries(configuration, experiment_conf): ''' Generate all CQL queries equivalent to MAXSEQ operator ''' query_dir = get_query_dir(configuration, experiment_conf) query = CQL_Z.format(ran=experiment_conf[RAN], sli=experiment_conf[SLI]) filename = query_dir + os.sep + 'z.cql' write_to_txt(filename, query) query = CQL_ZMAX.format(max=experiment_conf[MAX]) filename = query_dir + os.sep + 'zmax.cql' write_to_txt(filename, query) filename = query_dir + os.sep + 'equiv.cql' write_to_txt(filename, CQL_EQUIV)
def gen_endseq_env(configuration, experiment_conf, output): ''' Generate environment files for ENDSEQ operator ''' text = get_register_stream(configuration, experiment_conf) # Get query filename query_dir = get_query_dir(configuration, experiment_conf) filename = query_dir + os.sep + 'endseq.cql' # Register query if output: # Get output filename out_file = get_out_file(configuration, experiment_conf) text += REG_Q_OUTPUT_STR.format(qname='endseq', qfile=filename, ofile=out_file) else: text += REG_Q_STR.format(qname='endseq', qfile=filename) # Get environment filename filename = get_env_file(configuration, experiment_conf) write_to_txt(filename, text)
def gen_cql_env(configuration, experiment_conf, output): ''' Generate environment files for StremPref ''' text = get_register_stream(configuration, experiment_conf) query_dir = get_query_dir(configuration, experiment_conf) # Environment files for equivalent CQL queries # RPOS filename = query_dir + os.sep + 'rpos.cql' text += REG_Q_STR.format(qname='rpos', qfile=filename) # SPOS filename = query_dir + os.sep + 'spos.cql' text += REG_Q_STR.format(qname='spos', qfile=filename) # W filename = query_dir + os.sep + 'w.cql' text += REG_Q_STR.format(qname='w', qfile=filename) # W1 and P1 filename = query_dir + os.sep + 'w1.cql' text += REG_Q_STR.format(qname='w1', qfile=filename) filename = query_dir + os.sep + 'p1.cql' text += REG_Q_STR.format(qname='p1', qfile=filename) # W_i and P_i range_value = experiment_conf[RAN] for pos in range(2, range_value + 1): filename = query_dir + os.sep + 'w' + str(pos) + '.cql' text += REG_Q_STR.format(qname='w' + str(pos), qfile=filename) filename = query_dir + os.sep + 'p' + str(pos) + '.cql' text += REG_Q_STR.format(qname='p' + str(pos), qfile=filename) # Final equivalent query filename = query_dir + os.sep + 'equiv.cql' if output: # Get output filename out_file = get_out_file(configuration, experiment_conf) text += REG_Q_OUTPUT_STR.format(qname='equiv', qfile=filename, ofile=out_file) else: text += REG_Q_STR.format(qname='equiv', qfile=filename) filename = get_env_file(configuration, experiment_conf) write_to_txt(filename, text)
def gen_cql_env(configuration, experiment_conf, output): ''' Generate environment files for StremPref ''' # Register stream text = get_register_stream(configuration, experiment_conf, include_tup=True) query_dir = get_query_dir(configuration, experiment_conf) filename = query_dir + os.sep + 'z.cql' text += REG_Q_STR.format(qname='z', qfile=filename) filename = query_dir + os.sep + 'p_join.cql' text += REG_Q_STR.format(qname='p_join', qfile=filename) filename = query_dir + os.sep + 'p.cql' text += REG_Q_STR.format(qname='p', qfile=filename) text += gen_reg_rules_queries(configuration, query_dir, experiment_conf) query_name = 't1' filename = query_dir + os.sep + query_name + '.cql' text += REG_Q_STR.format(qname=query_name, qfile=filename) level = experiment_conf[LEV] for number in range(2, level + 1): query_name = 't' + str(number) filename = query_dir + os.sep + query_name + '.cql' text += REG_Q_STR.format(qname=query_name, qfile=filename) query_name = 'id' filename = query_dir + os.sep + query_name + '.cql' text += REG_Q_STR.format(qname=query_name, qfile=filename) query_name = 'equiv' filename = query_dir + os.sep + query_name + '.cql' if output: # Get output filename out_file = get_out_file(configuration, experiment_conf) text += REG_Q_OUTPUT_STR.format(qname=query_name, qfile=filename, ofile=out_file) else: text += REG_Q_STR.format(qname=query_name, qfile=filename) # Get environment filename filename = get_env_file(configuration, experiment_conf) write_to_txt(filename, text)
def gen_cql_queries(configuration, experiment_conf): ''' Generate all CQL queries equivalent to CONSEQ operator ''' query_dir = get_query_dir(configuration, experiment_conf) filename = query_dir + os.sep + 'table_ots.cql' write_to_txt(filename, CQL_TABLE_OTS) filename = query_dir + os.sep + 'stream_ots.cql' write_to_txt(filename, CQL_STREAM_OTS) gen_cql_z_query(query_dir, experiment_conf) filename = query_dir + os.sep + 'z_prime.cql' write_to_txt(filename, CQL_Z_PRIME) filename = query_dir + os.sep + 'p_start.cql' write_to_txt(filename, CQL_P_START) filename = query_dir + os.sep + 'p_end.cql' write_to_txt(filename, CQL_P_END) filename = query_dir + os.sep + 'p_start_end.cql' write_to_txt(filename, CQL_P_START_END) filename = query_dir + os.sep + 'equiv.cql' att_list = get_attribute_list(experiment_conf[ATT], 'z.') att_list = ', '.join(att_list) query = CQL_EQUIV.format(zatt=att_list) write_to_txt(filename, query)