We doubt that Brian is a rhino. Chances are slight that John went to the hallway. It is highly unlikely that Mary dropped the apple. It is certain that if either 'Brian is a rhino' or 'Mary dropped the apple' but not both then Jason is tired. It is improbable that if either 'Mary dropped the apple' or 'Brian is a rhino' but not both then Jeff discarded the milk. It is certain that if either 'John went to the hallway' or 'Mary dropped the apple' but not both then Bernhard is green.
It is probably not the case that 'Brian is a rhino' or 'Bernhard is green' or both.
It is probably not the case that 'Brian is a rhino' or 'Bernhard is green' or both.
It is certain that 'Brian is a rhino' or 'Bernhard 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.2::factA.
  0.1::factB.
  0.05::factC.
  %hop1
  1.0::factX:-xor(factA,factC).
  0.1::factY:-xor(factC,factA).
  1.0::factZ:-xor(factB,factC).

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

  query(conclusion).
  
'Brian is a rhino' or 'Bernhard is green' or both.