No.
For example, both normal and position are typically stored as 3-component float arrays. So given an arbitrary 3 floats, there is no way to tell if they're intended to be interpreted as normal or position.
This is entirely the point of glVertexAttribPointer.
The documentation for both glVertexAttribPointer and glEnableVertexAttribArray refers to "generic vertex attributes"; i.e. the vertex attributes themselves are generic and they have neither metadata, not usage semantics, nor anything else attached to them to denote how they are used. How they are used is entirely determined by your program.
"Generic" in this case even goes a step further in that you are not confined to the typical attributes used in drawing (position/normal/texcoords/colours/etc): if you want your program to interpret an attribute as "kilowombles per square inch", you can.