It is likely that Daniel took the milk. Chances are slight that Bernhard is a swan. We believe that Greg is a rhino. Chances are slight that if 'Greg is a rhino' or 'Daniel took the milk' or both then Lily is a swan. It is likely that if 'Bernhard is a swan' or 'Daniel took the milk' or both then John went to the garden. There is a better than even chance that if either 'Bernhard is a swan' or 'Greg is a rhino' but not both then Brian is green.
It is impossible that either 'Brian is green' or 'John went to the garden' but not both.
Chances are about even that either 'Brian is green' or 'John went to the garden' but not both.
It is impossible that either 'Brian is green' or 'John went to the garden' 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.7::factA.
  0.1::factB.
  0.75::factC.
  %hop1
  0.1::factX:-or(factC,factA).
  0.7::factY:-or(factB,factA).
  0.6::factZ:-xor(factB,factC).

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

  query(conclusion).
  
Either 'Brian is green' or 'John went to the garden' but not both.