Formally specifying re-usable knowledge model components