Data provenance consists in bookkeeping meta information during query evaluation, in order to enrich query results with their trust level, likelihood, evaluation cost, and more. The framework of semiring provenance abstracts from the specific kind of meta information that annotates the data. While the definition of semiring provenance is uncontroversial for unions of conjunctive queries, the picture is less clear for Datalog. Indeed, the original definition might include infinite computations, and is not consistent with other proposals for Datalog semantics over annotated data. In this work, we propose and investigate several provenance semantics, based on different approaches for defining classical Datalog semantics. We study the relationship between these semantics, and introduce properties that allow us to analyze and compare them. Example 2. Let Σ contain r 1 := R(x, y) → H(x, x), r 2 := R(x, y) → H(x, y) and r 3 := S(x, y, z) ∧ S(x, z, y) → H(x, x). If D = {R(a, a), S(a, b, c), S(a, c, b)}, then the fact α := H(a, a) has the following derivation trees (α, r 1 , h) R(a, a) (α, r 2 , h) R(a, a) (α, r 3 , h 3 ) S(a, b, c)S(a, c, b) (α, r 3 , h ′ 3 ) S(a, c, b)S(a, b, c)whereNote that when the program at hand is recursive (i.e., the dependency graph of its atoms contain cycles) a fact may our results are valid under this assumption as well.