It is highly likely that Greg is a rhino. Chances are slight that Mary took the football. Chances are slight that Bernhard is a swan. It is probably the case that if either 'Bernhard is a swan' or 'Greg is a rhino' but not both then Julius is a frog. We doubt that if either 'Greg is a rhino' or 'Bernhard is a swan' but not both then Brian is green. It is probably the case that if either 'Mary took the football' or 'Bernhard is a swan' but not both then John moved to the garden.
It is highly likely that 'John moved to the garden' or 'Brian is green' or both.
It is probably not the case that 'John moved to the garden' or 'Brian is green' or both.
It is highly likely that 'John moved to the garden' or 'Brian is green' or 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.9::factA.
  0.1::factB.
  0.1::factC.
  %hop1
  0.7::factX:-xor(factC,factA).
  0.2::factY:-xor(factA,factC).
  0.7::factZ:-xor(factB,factC).

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

  query(conclusion).
  
'John moved to the garden' or 'Brian is green' or both.