The real problem is that there are several models of how to map a conceptual category to a concrete datum, and the terminology varies depending on the model - there are several competing or at least contradictory definitions of what words like 'class', 'type', 'domain', 'value', 'object', 'reference' and so forth mean. Most books or papers approaching this from a formal position - such as
Data Structures + Algorithms = Programs by Wirth,
A Discipline of Programming by Dijkstra,
Elements of Programming by Stepanov and McJones (I am currently reading this, and it's... well, I'm reserving judgement), or
The Science of Programming by Gries - define the meanings used in them, but informal works by their nature generally don't.
Most of the confusion we're having in this thread seems to come from contradictory definitions of common but loosely used terms.