Type Hierarchies and Semantic Data Models