Mal'cev, Protomodular, Homological and Semi-Abelian Categories by Francis Borceux & Dominique Bourn