хорошо, нашел что-то полезное .. Предикат call_with_time_limit
meta_predicate time:call_with_time_limit(+,0).
time:call_with_time_limit(A, C) :-
A>0, !,
setup_call_cleanup(alarm(A, time_limit_exceeded(A), B, [install(false)]), run_alarm_goal(B, C), remove_alarm_notrace(B)).
time:call_with_time_limit(_, _) :-
throw(time_limit_exceeded).
Вы можете определить ограничение времени для запроса, выполнить его для разных запросов и сравнить количество результатов назад за тот период времени, этоне так эффективно, но это то, что я нашел до сих пор