Event :: Thing [participant *=> Entity, follows *=> Event]. Entity :: Thing. DrivingSituation :: Event [rightOfTheWay *=> DrivingEntity]. DrivingEntity :: Entity. SpatialEntity :: Entity. Action :: Event [agent *=> Entity]. Drive :: Action [violatesRightOfTheWay *=> Entity]. IllegalDrive :: Drive. SafeDrive :: Drive. Person :: Entity. Pedestrian :: Person. Bicyclist :: (DrivingEntity, Person). Motorist :: (DrivingEntity, Person). MotorCyclist :: (DrivingEntity, Person). CrossWalk :: SpatialEntity. StreetCorner :: SpatialEntity. TrafficSign :: SpatialEntity. StopSign :: TrafficSign. TrafficSignal :: TrafficSign. Vehicle :: Entity. Car :: Vehicle. FailToStopAtTrafficSign :: IllegalDrive. Speeding :: IllegalDrive. MakingIlliegalTurn :: IllegalDrive. UnsafeLaneChange :: IllegalDrive. ?D : IllegalDrive :- ?E1 : Entity, ?E2 : Entity, ?D : Drive [ agent -> ?E1, follows -> ?S], ?S:DrivingSituation [participant -> ?E1, participant -> ?E2, rightOfTheWay -> ?E2], not ?E1 :=: ?E2. P1 : DrivingEntity. P2 : DrivingEntity. D1 : Drive [ agent -> P1, follows -> S1]. S1 : DrivingSituation [participant -> P1, participant -> P2, rightOfTheWay -> P2]. ?S [ rightOfTheWay -> ?E1] :- ?S : DrivingSituation [participant -> ?E1], ?E1 : DrivingEntity, ?_ : SafeDrive [follows -> ?S, agent -> ?E1]. S2:DrivingSituation [participant -> P3]. P3: DrivingEntity. D2: SafeDrive [ follows -> S2, agent -> P3]. ?I [ violatesRightOfTheWay -> ?Q] :- ?_P : Entity, ?Q : Entity, ?S : DrivingSituation [participant -> ?_P, participant -> ?Q], ?I : IllegalDrive [agent -> ?_P, follows -> ?S], not ?_P :=: ?Q. P4 : Person. P5 : Person. S3 : DrivingSituation [ participant -> P4, participant -> P5]. I1 : FailToStopAtTrafficSign [agent -> P4, follows -> S3]. ?S [ rightOfTheWay -> ?P] :- ?_C : CrossWalk, ?P : Pedestrian, ?S : DrivingSituation [location -> ?_C, participant -> ?P]. C1 : CrossWalk. P6 : Pedestrian. S4 : DrivingSituation [location -> C1, participant -> P6]. ?S [ rightOfTheWay -> ?P] :- ?_C : StreetCorner, ?P : Pedestrian, ?S : DrivingSituation [location -> ?_C, participant -> ?P]. C2 : StreetCorner. P6 : Pedestrian. S5 : DrivingSituation [location -> C2, participant -> P6]. P7 : Car. P8 : Pedestrian. C3 : StreetCorner. S6 : DrivingSituation [ location -> C3, participant -> P8, participant -> P7]. D3 : Drive [ agent -> P7, follows -> S6]. P9: Entity. P10 : Entity. S7 : DrivingSituation [ participant -> P9, participant -> P10]. F1:FailToStopAtTrafficSign [ agent -> P9, follows -> S7].