  Datalog reasoning based on the semina\"ive evaluation strategy evaluates
rules using traditional join plans, which often leads to redundancy and
inefficiency in practice, especially when the rules are complex. Hypertree
decompositions help identify efficient query plans and reduce similar
redundancy in query answering. However, it is unclear how this can be applied
to materialisation and incremental reasoning with recursive Datalog programs.
Moreover, hypertree decompositions require additional data structures and thus
introduce nonnegligible overhead in both runtime and memory consumption. In
this paper, we provide algorithms that exploit hypertree decompositions for the
materialisation and incremental evaluation of Datalog programs. Furthermore, we
combine this approach with standard Datalog reasoning algorithms in a modular
fashion so that the overhead caused by the decompositions is reduced. Our
empirical evaluation shows that, when the program contains complex rules, the
combined approach is usually significantly faster than the baseline approach,
sometimes by orders of magnitude.
