It is impossible that Julius is a rhino. It is almost certain that John grabbed the apple. We believe that Mary went to the office. There is a better than even chance that if 'John grabbed the apple' or 'Mary went to the office' or both then Fred put down the apple. It is likely that if either 'Julius is a rhino' or 'Mary went to the office' but not both then Bernhard is yellow. There is little chance that if either 'Mary went to the office' or 'John grabbed the apple' but not both then Greg is a lion.
We believe that either 'Mary went to the office' or 'Greg is a lion' but not both.
We believe that either 'Mary went to the office' or 'Greg is a lion' but not both.
It is impossible that either 'Mary went to the office' or 'Greg is a lion' 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.0::factA.
  0.95::factB.
  0.75::factC.
  %hop1
  0.6::factX:-or(factB,factC).
  0.7::factY:-xor(factA,factC).
  0.1::factZ:-xor(factC,factB).

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

  query(conclusion).
  
Either 'Mary went to the office' or 'Greg is a lion' but not both.