In this article, we present a first-order logic programming language for fuzzy reasoning under possibilistic uncertainty and poorly known information. Formulas are represented by a pair (ϕ, α), in which ϕ is a first-order Horn clause or a query with fuzzy constants and regular predicates, and α ∈ [0, 1] is a lower bound on the belief on ϕ in terms of necessity measures. Since fuzzy constants can occur in the logic component of formulas, the truth value of formulas is many-valued instead of Boolean. Moreover, since we have to reason about the possibilistic uncertainty of formulas with fuzzy constants, belief states are modeled by normalized possibility distributions on a set of many-valued interpretations. In this framework, (1) we define a syntax and a semantics of the underlying logic; (2) we give a sound modus ponens-style calculus by derivation based on a semantic unification pattern of fuzzy constants; (3) we develop a directional fuzzy unification algorithm based on the distinction between general and specific object constants; and (4) we describe a backward first-order proof procedure oriented to queries that is based on the calculus of the language and the computation of the unification degree between fuzzy constants in terms of a necessity measure for fuzzy events.