You can combine rules by treating them as String
s can concatenating them. You do not get the benefit of static type checking, but I have not found any other way.
val rule1 = "[[(rule1 ?a) [ ... ]]]"
val rule2 = "[[(rule2 ?b) [ ... ]]]"
Datomic.q(Query(...), conn.db(), DString(s"[$rule1 $rule2]"), ...)