It is probably the case that Julius is a swan. It is highly unlikely that Daniel dropped the milk. There is almost no chance that Lily is green. Chances are about even that if 'Daniel dropped the milk and Julius is a swan' then Sandra got the football. It is unlikely that if either 'Lily is green' or 'Julius is a swan' but not both then Brian is yellow. It is certain that if 'Daniel dropped the milk and Julius is a swan' then John went to the garden.
It is probably the case that either 'Brian is yellow' or 'John went to the garden' but not both.
We doubt that either 'Brian is yellow' or 'John went to the garden' but not both.
It is probably the case that either 'Brian is yellow' 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.05::factB.
  0.02::factC.
  %hop1
  0.5::factX:-and(factB,factA).
  0.2::factY:-xor(factC,factA).
  1.0::factZ:-and(factB,factA).

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

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