DuCharme's book says that the order of OPTIONALs matters, in the sense that if bindings have been done by an OPTIONAL, then later OPTIONALs will have no effect if any variables they might bind have already been bound (so order of OPTIONALs can affect query results).
What prompted this query (no pun intended) is the discovery that putting a FILTER inside an OPTIONAL {} versus outside makes a difference, even though the FILTERs (which were some !sameTerm() conditions to avoid aliasing some variables) are the same. If I have the pattern "OPTIONAL { <triples> FILTER <filter>} " versus "OPTIONAL {<triples>} FILTER <filter>", is the behavior that the first form is considered to fail and not bind its variables due to filtering within {}; while the second form would consider the OPTIONAL to have succeeded in binding the variables and cause subsequent OPTIONALs to be skipped? Do variables stay bound once bound, a FILTER just filters the final result, as if all FILTERs were applied at the end? But in the first pattern above, the filter nested inside the OPTIONAL{} is able to unbind anything that was bound inside that OPTIONAL? Ignoring performance issues, are there any cases where the order of FILTER statements would affect the result of the query? Or are OPTIONALs the only thing that have order-dependent semantics? Do nested braces have any impact on variable name visibility or semantics? Are all variables appearing anywhere in a WHERE{} in the same global namespace, or are there cases where nested {} have some namespace semantics?