docs: def to_jgif(graph):
      """Build a JGIF dictionary from a BEL graph.
  
      :param pybel.BELGraph graph: A BEL graph
      :return: A JGIF dictionary
      :rtype: dict
  
      .. warning::
  
          Untested! This format is not general purpose and is therefore time is not heavily invested. If you want to
          use Cytoscape.js, we suggest using :func:`pybel.to_cx` instead.
  
      Example:
  
      >>> import pybel, os, json
      >>> graph_url = 'https://arty.scai.fraunhofer.de/artifactory/bel/knowledge/selventa-small-corpus/selventa-small-corpus-20150611.bel'
      >>> graph = pybel.from_url(graph_url)
      >>> graph_jgif_json = pybel.to_jgif(graph)
      >>> with open(os.path.expanduser('~/Desktop/small_corpus.json'), 'w') as f:
      ...     json.dump(graph_jgif_json, f)
      """
      node_bel = {}
      u_v_r_bel = {}
  
      nodes_entry = []
      edges_entry = []
  
      for i, node in enumerate(sorted(graph, key=methodcaller('as_bel'))):
          node_bel[node] = bel = node.as_bel()
  
          nodes_entry.append({
              'id': bel,
              'label': bel,
              'nodeId': i,
              'bel_function_type': node[FUNCTION],
              'metadata': {}
          })
  
      for u, v in graph.edges():
          relation_evidences = defaultdict(list)
  
          for data in graph[u][v].values():
  
              if (u, v, data[RELATION]) not in u_v_r_bel:
                  u_v_r_bel[u, v, data[RELATION]] = graph.edge_to_bel(u, v, edge_data=data)
  
              bel = u_v_r_bel[u, v, data[RELATION]]
  
              evidence_dict = {
                  'bel_statement': bel,
              }
  
              if ANNOTATIONS in data:
                  evidence_dict['experiment_context'] = data[ANNOTATIONS]
  
              if EVIDENCE in data:
                  evidence_dict['summary_text'] = data[EVIDENCE]
  
              if CITATION in data:
                  evidence_dict['citation'] = data[CITATION]
  
              relation_evidences[data[RELATION]].append(evidence_dict)
  
          for relation, evidences in relation_evidences.items():
              edges_entry.append({
                  'source': node_bel[u],
                  'target': node_bel[v],
                  'relation': relation,
                  'label': u_v_r_bel[u, v, relation],
                  'metadata': {
                      'evidences': evidences
                  }
              })
  
      return {
          'graph': {
              'metadata': graph.document,
              'nodes': nodes_entry,
              'edges': edges_entry
          }
      }