'Transforms a neo4j returned by executing a query into an iterator of
{src: <dict>, flow: <dict>, dst: <dict>}.'

@classmethod
def cursor2json_iter(cls, cursor):

    for (src, flow, dst) in cursor:
        for rec in [src, flow, dst]:
            cls._cleanup_record(rec)
        src_props = cls._get_props(src['elt'], src.get('meta'))
        src_ref = cls._get_ref(src['elt'], src_props)
        src_labels = cls._get_labels(src['elt'], src_props)
        src_node = cls._node2json(src_ref, src_labels, src_props)
        dst_props = cls._get_props(dst['elt'], dst.get('meta'))
        dst_ref = cls._get_ref(dst['elt'], dst_props)
        dst_labels = cls._get_labels(dst['elt'], dst_props)
        dst_node = cls._node2json(dst_ref, dst_labels, dst_props)
        flow_props = cls._get_props(flow['elt'], flow.get('meta'))
        flow_ref = cls._get_ref(flow['elt'], flow_props)
        flow_labels = cls._get_labels(flow['elt'], flow_props)
        flow_node = cls._edge2json(flow_ref, src_ref, dst_ref, flow_labels, flow_props)
        (yield {'src': src_node, 'dst': dst_node, 'flow': flow_node})
