A lightweight view of a Dataset, typically created via head() or tail().
This struct is public so it can be used in type signatures,
but its fields remain private to ensure data integrity.
Mapping raw types to semantic types allows the engine to automatically
select the appropriate Scale (Linear, Temporal, or Discrete) and validation rules.