IF { ?sp rdf:type nus:SceneParticipant . ?sp nus:hasState ?state . FILTER (?state = "PedestrianMoving" || ?state = "VehicleMoving" || ?state = "VehicleStopped" || ?state = "CycleWithRider") } THEN { ?sp nus:hasSimpleState "Dynamic" . }
IF { ?sp rdf:type nus:SceneParticipant . ?sp nus:hasState ?state . FILTER (?state = "PedestrianSittingLyingDown" || ?state = "PedestrianStanding" || ?state = "VehicleParked" || ?state = "CycleWithoutRider") } THEN { ?sp nus:hasSimpleState "Static" . }
IF { ?scene1 rdf:type nus:Scene . ?scene1 nus:hasNextScene ?scene2 . ?scene1 nus:hasSceneParticipant ?sp1 . ?scene2 nus:hasSceneParticipant ?sp2 . ?sp1 nus:isSceneParticipantOf ?part . ?sp2 nus:isSceneParticipantOf ?part . } THEN { ?sp1 nus:inNextScene ?sp2 . }
IF { ?prev nus:inNextScene ?current . ?current nus:hasTranslation ?ctr . ?prev nus:hasTranslation ?ptr . ?ctr nus:vectorHasX ?cx . ?ctr nus:vectorHasY ?cy . ?ptr nus:vectorHasX ?px . ?ptr nus:vectorHasY ?py . BIND(2*(?cx - ?px) AS ?vx) BIND(2*(?cy - ?py) AS ?vy) BIND(IRI(CONCAT(STR(?current), "_Velocity")) AS ?velocity) } THEN { ?current nus:hasVelocity ?velocity . ?velocity nus:vectorHasX ?vx . ?velocity nus:vectorHasY ?vy . }