:SELECT term.*, child_term.*, reltype.*, link.complete :FROM term INNER JOIN term2term AS link ON (term.id = link.term1_id) INNER JOIN term AS child_term ON (link.term2_id = child_term.id) INNER JOIN term AS reltype ON (link.relationship_type_id = reltype.id) :WHERE [term.acc => &term_acc&] [term.name => &term_name&] [child_term.acc => &child_term_acc&] [child_term.name => &child_term_name&] [reltype.name => &reltype_name&] :ORDER BY child_term.name :USE NESTING (set(term(reltype(link child_term)))) // schema: go desc: given a GO term, this will fetch all child_terms; OR, given a child_term will fetch parent terms example_input: term_acc => SELECT DISTINCT term.acc FROM term INNER JOIN term2term ON (term.id = term2term.term1_id) ORDER BY term.acc DESC example_input: term_name => SELECT DISTINCT term.name FROM term INNER JOIN term2term ON (term.id = term2term.term1_id) WHERE name like '%binding%' ORDER BY term.name DESC example_input: child_term_acc => SELECT DISTINCT term.acc FROM term INNER JOIN term2term ON (term.id = term2term.term2_id) ORDER BY term.acc DESC example_input: child_term_name => SELECT DISTINCT term.name FROM term INNER JOIN term2term ON (term.id = term2term.term2_id) WHERE name like '%binding%' ORDER BY term.name DESC example_input: reltype_name => SELECT DISTINCT term.name FROM term INNER JOIN term2term ON (term.id = term2term.relationship_type_id) ORDER BY term.name DESC