What is knowledge and how is it represented? This book focuses on the idea of formalising knowledge as relations, interpreting knowledge represented in databases or logic programs as relational data and discovering new knowledge by identifying hidden and defining new relations. After a brief introduction to representational issues, the author develops a relational language for abstract machine learning problems. He then uses this language to discuss traditional methods such as clustering and decision tree induction, before moving onto two previously underestimated topics that are just coming to the fore: rough set data analysis and inductive logic programming. Its clear and precise presentation is ideal for undergraduate computer science students. The book will also interest those who study artificial intelligence or machine learning at the graduate level. Exercises are provided and each concept is introduced using the same example domain, making it easier to compare the individual properties of different approaches.