Reverse Edge not working

I think you miss understood the reverse directive. You can’t set any reverse predicate as it was a custom thing, reverse edges just work on the same edge. By looking at your types, I can see that the only relationship you have between the Brand and the SubBrand is via subBrands and not brand. So in that case you should use like:

subBrands(func:type(SubBrand)){
    		dgraph.type 
        name
        marketingMessage
          <~SubBrand> {
            name
          }
    }

Also, you can use Alias

subBrands(func:type(SubBrand)){
    		dgraph.type 
        name
        marketingMessage
         brand : <~SubBrand> {
            name
          }
    }

Cheers.