Returns SQL representation of an explicit constraint. An explicit
        constraint is one of the form Element COMP Element type, explicitly
        listed in the conjunctive query. E.G. R(X,Y), Y>2 specifies that R.2 > 2

def get_explicit_constraints(self,constraints,var_dict):
        '''
        Returns SQL representation of an explicit constraint. An explicit
        constraint is one of the form Element COMP Element type, explicitly
        listed in the conjunctive query. E.G. R(X,Y), Y>2 specifies that R.2 > 2
        '''

        constraints_strings = []
        for constraint in constraints:
            ls = constraint.get_left_side()
            rs = constraint.get_right_side()

            if not (ls.is_variable() and constraint.is_equality_constraint()):
                ''' Every Var = Constant constraint where var is only in head. We don't want this type of constraints.
                    We assume that if there is a Var = Constraint, var occurs in the head. Otherwise it would be unified in the preprocessor.
                '''
                if ls.is_variable():
                    left_side = self.mapVariableToRelationDotField(ls, var_dict)
                elif ls.is_constant():
                    left_side = str(ls)

                if rs.is_variable():
                    right_side = self.mapVariableToRelationDotField(rs, var_dict)
                elif rs.is_constant():
                    right_side = str(rs)

                constraints_strings.append(
                    str(left_side) + ' ' + str(constraint.get_operator()) + ' ' + str(right_side)
                )

        return constraints_strings