Learning to reason about data