<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def edge_to_bel(u: BaseEntity, v: BaseEntity, data: EdgeData, sep: Optional[str] = None) -> str: """Take two nodes and gives back a BEL string representing the statement. :param u: The edge's source's PyBEL node data dictionary :param v: The edge's target's PyBEL node data dictionary :param data: The edge's data dictionary :param sep: The separator between the source, relation, and target. Defaults to ' ' """

    sep = sep or ' '
    u_str = _decanonicalize_edge_node(u, data, node_position=SUBJECT)
    v_str = _decanonicalize_edge_node(v, data, node_position=OBJECT)

    return sep.join((u_str, data[RELATION], v_str))