Integrating object-oriented data modelling with a rule-based programming paradigm