docs: def v1_label_negative_inference(request, response,
                                  visid_to_dbid, dbid_to_visid,
                                  label_store, cid):
      '''Return inferred negative labels.
  
      The route for this endpoint is:
      ``/dossier/v1/label/<cid>/negative-inference``.
  
      Negative labels are inferred by first getting all other content ids
      connected to ``cid`` through a negative label. For each directly
      adjacent ``cid'``, the connected components of ``cid`` and
      ``cid'`` are traversed to find negative labels.
  
      The data returned is a JSON list of labels. Each label is a
      dictionary with the following keys: ``content_id1``,
      ``content_id2``, ``subtopic_id1``, ``subtopic_id2``,
      ``annotator_id``, ``epoch_ticks`` and ``value``.
      '''
      # No subtopics yet? :-(
      lab_to_json = partial(label_to_json, dbid_to_visid)
      labs = imap(lab_to_json,
                  label_store.negative_inference(visid_to_dbid(cid)))
      return list(paginate(request, response, labs))