This is the main body of the process that does the work.

    Summary:
    - load the raw data
    - read in rules list
    - create log events for AIKIF according to rules [map]
    - create new facts / reports based on rules [report]
    
    OUTPUT = 
                AIKIF mapping  : Date_of_transaction => event
                AIKIF mapping  : Amount => fact
                AIKIF mapping  : Details => location
                New column     : trans_type = DB WHERE amount > 0 ELSE CR
                summing        : details contains "CALTEX" into Travel Expense
                Done

def main():
    """
    This is the main body of the process that does the work.

    Summary:
    - load the raw data
    - read in rules list
    - create log events for AIKIF according to rules [map]
    - create new facts / reports based on rules [report]
    
    OUTPUT = 
                AIKIF mapping  : Date_of_transaction => event
                AIKIF mapping  : Amount => fact
                AIKIF mapping  : Details => location
                New column     : trans_type = DB WHERE amount > 0 ELSE CR
                summing        : details contains "CALTEX" into Travel Expense
                Done    
    
    """
    
    print('AIKIF example: Processing Finance data\n')
    data = read_bank_statements('your_statement.csv')
    print(data)
    maps = load_column_maps()
    rules = load_rules()
    
    for m in maps:
        print('AIKIF mapping  : ' + m[0] + ' => ' + m[1])

    for rule in rules:
        #print(rule)
        if rule[0] == 'agg':
            print('summing        : ' + rule[1] + ' into ' +  rule[2] )
        elif rule[0] == 'derive':
            print('New column     : ' + rule[1] + ' = ' + rule[2] + ' WHERE ' + rule[1] + ' ELSE ' + rule[3] )
    
    print('Done\n')