I From Wikipédia, Forms it can be seen that "have" is correct as it is the English subjunctive form of "to have".
The present subjunctive is identical to the bare infinitive (and imperative) of the verb in all forms. This means that, for almost all verbs, the present subjunctive differs from the present indicative only in the third person singular form, which lacks the ending -s in the subjunctive.
The subjunctive is required because the action is not realized in this instance of use of the verb.
II There is, however, another way to express the subjunctive in English and it might be preferred for the other persons than the 3rd singular; see Wikipédia, Forms, Modals.
A construction with the modal "should" is frequently used as an alternative to the simple present subjunctive […]
So, the sentence "John demands of science that it should have logical consistency." is also correct. It is exactly equivalent.