public final function buildQuery(Node $input, Recommendation $recommendation)
{
$relationshipPatterns = [Direction::BOTH => array('-[:%s]-', '-[:%s]-'), Direction::INCOMING => array('<-[:%s]-', '-[:%s]->'), Direction::OUTGOING => array('-[:%s]->', '<-[:%s]-')];
$relPattern = sprintf($relationshipPatterns[$this->relationshipDirection()][0], $this->relationshipType());
$inversedRelPattern = sprintf($relationshipPatterns[$this->relationshipDirection()][1], $this->relationshipType());
$query = 'MATCH (input) WHERE id(input) = {inputId}, (item) WHERE id(item) = {itemId}
MATCH (input)' . $relPattern . '(shared)' . $inversedRelPattern . '(item)
RETURN shared as sharedThing';
return Statement::create($query, ['inputId' => $input->identity(), 'itemId' => $recommendation->item()->identity()]);
}