We present a type inference system for Horn clause logic programs, based on a bottom-up abstract interpretation technique. Through the definition of suitable abstract operators, we obtain an abstract immediate consequence operator map associated with the program to analyze. The least fixpoint of such an operator gives an approximated description, by means of types, of the success set of the program. By changing the abstract domain of types, we easily obtain different type inference systems. This is useful to make the inference appropriate for different purposes. Due to the semantic basis, the system declaratively handles type union and parametric polymorphism.