As far as I understand, the "junction tree algorithm" is a general inference framework which roughly consists of the four steps 1) triangulate, 2) construct junction tree, 3) propagate probabilities/pass messages and 4) perform intra-clique inference in order to calculate marginals.
During my study of the JT algorithm i encountered the terms "Hugin algorithm" and "Shafer-Shenoy algorithm", which to me seem to be two different ways to perform the third step in the JT algorithm as described above. However, I'm unclear as to what exactly the definitions of these two algorithms are. The definition of each does not seem to be consistent, and some sources appear to treat them as essentially the same algorithm (or at least seem to imply that the Shafer-Shenoy algorithm is used by the Hugin PGM software, whereas my understanding was that the Hugin algorithm was developed specifically for this software).
Adding to the confusion, the main tome on the topic (Koller and Friedman) does not use any of these terms, but instead uses terms like "sum-product algorithm", "sum-product-division algorithm" and "Lauritz-Spiegelhalter algorithm".
Can anybody clarify the correspondence between all these terms for me, and point me to a "canonical" definition of the Hugin and Shafer-Shenoy algorithms? Currently I'm thoroughly confused by the extreme diversity of terms for algorithms that seem to be very similar, for the most part.