<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _get_edge_tuple(source, target, edge_data: EdgeData, ) -> Tuple[str, str, str, Optional[str], Tuple[str, Optional[Tuple], Optional[Tuple]]]: """Convert an edge to a consistent tuple. :param BaseEntity source: The source BEL node :param BaseEntity target: The target BEL node :param edge_data: The edge's data dictionary :return: A tuple that can be hashed representing this edge. Makes no promises to its structure. """

    return (
        source.as_bel(),
        target.as_bel(),
        _get_citation_str(edge_data),
        edge_data.get(EVIDENCE),
        canonicalize_edge(edge_data),
    )