code: package it.unibz.inf.ontop.iq.node;
  
  /**
   * Visits QueryNodes without having effect on them and the intermediate query.
   *
   * If you want to make optimization proposals to the nodes/query, use an Optimizer instead.
   *
   */
  public interface QueryNodeVisitor {
  
      void visit(ConstructionNode constructionNode);
  
      void visit(AggregationNode aggregationNode);
  
      void visit(UnionNode unionNode);
  
      void visit(InnerJoinNode innerJoinNode);
  
      void visit(LeftJoinNode leftJoinNode);
  
      void visit(FilterNode filterNode);
  
      void visit(IntensionalDataNode intensionalDataNode);
  
      void visit(ExtensionalDataNode extensionalDataNode);
  
      void visit(EmptyNode emptyNode);
  
      void visit(TrueNode trueNode);
  
      void visit(ValuesNode valuesNode);
  
      void visit(DistinctNode distinctNode);
  
      void visit(SliceNode sliceNode);
  
      void visit(OrderByNode orderByNode);
  
      void visit(FlattenNode flattenNode);
  }
  