Yes , that is indeed how it is expected to be set as of now. I did take a look at some other instances where ndim (or number of dimensions) was associated with the type (and not with the variable) and followed the same model.  I too believe it makes more semantic sense. if we move it to Variable, all we need to do is change theano/gof/unify.py : class Variable to have that member but as of now I see is it''s very generic and has only the name as its attribute, so as I see its design decision of what is the right abstraction. If we agree  to  move it to Variable class, I can work on that. 

Thanks.
Vivek.