Example #1
0
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)
Example #2
0
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)
Example #3
0
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)
Example #4
0
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)
Example #5
0
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)
Example #6
0
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)
Example #7
0
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)
Example #8
0
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)
Example #9
0
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)
Example #10
0
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)
Example #11
0
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)