It is certain that Bernhard is a rhino. It is probably the case that Julius is yellow. It is probable that John went to the bedroom. It is certain that if 'John went to the bedroom' or 'Julius is yellow' or both then Brian is a frog. It is impossible that if either 'John went to the bedroom' or 'Bernhard is a rhino' but not both then Greg is gray. There is a better than even chance that if either 'Bernhard is a rhino' or 'Julius is yellow' but not both then Mary left the football.
It is unlikely that either 'Brian is a frog' or 'Mary left the football' but not both.
There is a very good chance that either 'Brian is a frog' or 'Mary left the football' but not both.
It is unlikely that either 'Brian is a frog' or 'Mary left the football' 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
  1.0::factA.
  0.7::factB.
  0.7::factC.
  %hop1
  1.0::factX:-or(factC,factB).
  0.0::factY:-xor(factC,factA).
  0.6::factZ:-xor(factA,factB).

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

  query(conclusion).
  
Either 'Brian is a frog' or 'Mary left the football' but not both.