Would a pattern match be more readable:

```scala
val notAttributes = (spatialPredicate, temporalPredicate, childEval) match {
   case (st, tp, _) if st != noPolygon || tp != noInterval => Filter.INCLUDE
   case (_, _, Filter.INCLUDE)                                    => Filter.EXCLUDE
   case (_, _, Filter.EXCLUDE)                                   => Filter.INCLUDE
   case (_, _, f)                                                           => ff.not(f)
}
```