There is little chance that John went to the kitchen. There is little chance that Brian is gray. It is likely that Bernhard is yellow. Chances are slight that if 'Brian is gray and John went to the kitchen' then Julius is a frog. It is probably the case that if 'Bernhard is yellow' or 'John went to the kitchen' or both then Yann is tired. It is impossible that if either 'Brian is gray' or 'Bernhard is yellow' but not both then Greg is a lion.
There is little chance that either 'Julius is a frog' or 'Brian is gray' but not both.
There is little chance that either 'Julius is a frog' or 'Brian is gray' but not both.
There is a very good chance that either 'Julius is a frog' or 'Brian is gray' but not both.

  and(A,B) :- A,B.
  or(A,B) :- A;B.
  nand(A,B) :- not(and(A,B)).
  nor(A,B) :- not(or(A,B)).
  xor(A,B) :- or(A,B), nand(A,B).

  %hop0
  0.1::factA.
  0.1::factB.
  0.7::factC.
  %hop1
  0.1::factX:-and(factB,factA).
  0.7::factY:-or(factC,factA).
  0.0::factZ:-xor(factB,factC).

  %hop2
  conclusion:-xor(factX,factB).

  query(conclusion).
  
Either 'Julius is a frog' or 'Brian is gray' but not both.