constructor(str, maxDepth, Model) {

    let parsed = this.constructor.parse(str, maxDepth);

    this.identifier = typeof parsed.structure === 'string' ?
      parsed.structure :
      Object.keys(parsed.structure)[0];
    this.name = inflect.singularize(this.identifier);

    try {
      this.Model = Model || require(`${process.cwd()}/app/models/${this.name}.js`);
    } catch(e) {
      throw new Error(`Model ${this.name} does not exist.`);
    }

    this.structure = parsed.structure;
    this.joins = parsed.joins;

  }
Create a GraphQuery object
@param {String} str The query to execute
@param {Number} maxDepth The maximum depth of graph to traverse
@param {Nodal.Model} [Model=null] The Model to base your query around (used for testing)