Semantic ratings and heuristic similarity for collaborative filtering