miniKanren and Prolog are both logic programming languages, but they have different design philosophies and make different trade-offs. Prolog is optimized for expressiveness and efficiency in implementing rule-based systems using first-order logic. It has many extra-logical features and a large library of standard predicates. Prolog code can also be modified at runtime, allowing for powerful techniques like encoding breadth-first search. On the other hand, miniKanren was designed as a minimal logic programming language with no mutation or side-effects. It emphasizes functional programming and has a different approach to search and backtracking. miniKanren is often used as an embedded logic language, especially in Clojure. It is also used for relational programming, in which programs behave as mathematical relations rather than functions. miniKanren has added support for symbolic constraint solving over time. Both miniKanren and Prolog have their own interesting features and uses, and it is valuable to learn from both languages.
http://minikanren.org/minikanren-and-prolog.html