A data engineer’s guide to semantic modelling