We doubt that Brian is yellow. It is highly unlikely that Yann is thirsty. It is likely that Bernhard is a frog. We believe that if 'Brian is yellow' or 'Yann is thirsty' or both then Julius is green. It is probably the case that if either 'Brian is yellow' or 'Bernhard is a frog' but not both then Jeff went to the bedroom. We doubt that if either 'Yann is thirsty' or 'Brian is yellow' but not both then Mary dropped the milk.
We believe that either 'Bernhard is a frog' or 'Jeff went to the bedroom' but not both.
It is probably not the case that either 'Bernhard is a frog' or 'Jeff went to the bedroom' but not both.
We believe that either 'Bernhard is a frog' or 'Jeff went to the bedroom' 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.2::factA.
  0.05::factB.
  0.7::factC.
  %hop1
  0.75::factX:-or(factA,factB).
  0.7::factY:-xor(factA,factC).
  0.2::factZ:-xor(factB,factA).

  %hop2
  conclusion:-xor(factC,factY).

  query(conclusion).
  
Either 'Bernhard is a frog' or 'Jeff went to the bedroom' but not both.