example:  

type Query struct {
	Attributes []string
	Modifiers  map[string][]Modifier

	Sources       map[string][]string
	SourceAliases map[string]string

	ConditionTree *ConditionNode
}

  

func NewQuery() *Query {
	return &Query{
		Attributes: make([]string, 0),
		Modifiers:  make(map[string][]Modifier),
		Sources: map[string][]string{
			"include": make([]string, 0),
			"exclude": make([]string, 0),
		},
		SourceAliases: make(map[string]string),
		ConditionTree: nil,
	}
}