1.0::event(e1, water, 5). 1.0::event(e2, absent, 6). 0.5::instance(ai1, cleaning, 0, 7); 0.5::instance(ai1, waterplants, 0, 7). 0.5::instance(ai2, cleaning, 4, 10); 0.5::instance(ai2, waterplants, 4, 10). 0.5::producedBy(e1, ai1); 0.5::producedBy(e1, ai2). 0.5::producedBy(e2, ai1); 0.5::producedBy(e2, ai2). related(Z, Y) :- instance(X, Y, A, B), producedBy(Z, X). bond(X, Y) :- related(Z, Y), instance(X, Y, A, B). r1 :- bond(ai1, cleaning), \+bond(ai1, waterplants); bond(ai1, waterplants), \+bond(ai1, cleaning). evidence(r1, true). r2 :- bond(ai2, cleaning), \+bond(ai2, waterplants); bond(ai2, waterplants), \+bond(ai2, cleaning). evidence(r2, true). r3 :- producedBy(e1, ai1), \+producedBy(e1, ai2); producedBy(e1, ai2), \+producedBy(e1, ai1). evidence(r3, true). r4 :- producedBy(e2, ai1), \+producedBy(e2, ai2); producedBy(e2, ai2), \+producedBy(e2, ai1). evidence(r4, true). r5 :- related(e1, waterplants), \+related(e1, cleaning); related(e1, cleaning), \+related(e1, waterplants). evidence(r5, true). r6 :- related(e2, waterplants), \+related(e2, cleaning); related(e2, cleaning), \+related(e2, waterplants). evidence(r6, true). % temporal rules closeAfter(T1, T2) :- T1 > T2, T3 is T1 - T2, T3 < 2. 0.3::producedBy(X2, I) :- event(X1, Y1, T1), event(X2, Y2, T2), closeAfter(T2, T1), producedBy(X1, I). 0.9::related(X1, waterplants) :- event(X1, water, T1). query(bond(_,_)). query(related(_, _)). query(producedBy(_,_)).