A data model should provide for: a set of symbols with an alphabet for constructing new symbols, a set of numbers and ways to name them, ordering relationships on numbers and symbols, equality tests, some synonym relationships for automatic type conversion, and some acceptance tests for data types.