An abstraction is a representation which hides all but certain essential characteristics of its referent, and is therefore compact and descriptive of a generic class of entities: namely, those which share certain essential characteristics. Abstractions are the building blocks of ontologies; they are efficient codes which compress reusable regularities.
For instance, the abstraction that "chair" embeds to constrains the referent's function and form-template, but not its precise material, location in spacetime, or instance. In programming, abstractions may be functions or object templates with free parameters.