I'm not sure if this is the correct method (as I was not getting the results I wanted by supplying the 'relation' parameter for the 'tax_query' one), but we have a scenario at my work, where the site uses a taxonomy called 'topics' as the main menu, so it needed to be handled separately from the rest of the taxonomies, which were being used as lower level filtering options (i.e. 'schools') along with filtering for 'post_type'. Here's my solution, following mrwweb's example.
What's important to note is that if the query variable for 'schools' was empty, I got no results for the entire query, when it should produce all results, as 'schools' is no longer being filtered. So, I just through that part of the query array into a conditional, and it worked as expected.
function uci_get_taxonomies() {
$params = array();
$topic = get_queried_object();
$params[TAXONOMY_TOPICS] = $topic->slug;
$contentTypes = get_query_var('post_type');
$params['post_type'] = $contentTypes;
$schools = get_query_var(TAXONOMY_SCHOOLS);
if(!empty($schools)) {
$params['tax_query'][] = array('taxonomy' => TAXONOMY_SCHOOLS, 'field' => 'slug', 'terms' => $schools);
}
$query = new WP_Query($params);
//Util::debug($query->query_vars);
return $query;
}