Deletion with upsert is not working

Have you tried:

 upsert {
      query {
        a as q(func: uid($a)) @recurse {
          uid
          b as branches
          c as child_groups
        }
      }

      mutation {
        delete {
          uid(a) * * .
          uid(b) * * .
          uid(c) * * .
        }
      }
    }