Something like this:
(or-join [?block ?lowdate]
(and
[?block :block/scheduled ?scheduled]
(not [?block :block/deadline])
[(<= ?lowdate ?scheduled)]
)
(and
[?block :block/deadline ?deadline]
(not [?block :block/scheduled])
[(<= ?lowdate ?deadline)]
)
(and
[?block :block/scheduled ?scheduled]
[?block :block/deadline ?deadline]
[(<= ?scheduled ?deadline)]
[(<= ?lowdate ?scheduled)]
)
(and
[?block :block/scheduled ?scheduled]
[?block :block/deadline ?deadline]
[(<= ?deadline ?scheduled)]
[(<= ?lowdate ?deadline)]
)
)