/*
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
/*
 * This code was generated by https://github.com/googleapis/google-api-java-client-services/
 * Modify at your own risk.
 */

package com.google.api.services.contentwarehouse.v1.model;

/**
 * NextId: 11
 *
 * <p> This is the Java data model class that specifies how to parse/serialize into the JSON that is
 * transmitted over HTTP when working with the Document AI Warehouse API. For a detailed explanation
 * see:
 * <a href="https://developers.google.com/api-client-library/java/google-http-java-client/json">https://developers.google.com/api-client-library/java/google-http-java-client/json</a>
 * </p>
 *
 * @author Google, Inc.
 */
@SuppressWarnings("javadoc")
public final class KnowledgeAnswersIntentQueryArgumentProvenance extends com.google.api.client.json.GenericJson {

  /**
   * If populated, the current query contains an anaphor that refers to the value. For example: U:
   * Weather in Paris. [Weather(location=paris)] G: 65 degrees and sunny. U: How many people live
   * there? [Population(city=paris)] The "there" in the current query would have the "anaphor" field
   * set. NOTE: after a string rewrite this field will not be populated anymore if the rewrite
   * replaced the anaphor with the corresponding value. For example, if we rewrite [How many people
   * there] to [How many people in Paris], the CurrentQuerySignals for "paris" will not contain an
   * "anaphor" message anymore in the following turns. It will only contain an eval_data for the
   * span that corresponds to "paris" in the query.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private KnowledgeAnswersIntentQueryArgumentProvenanceQueryAnaphor anaphor;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private KnowledgeAnswersIntentQueryArgumentProvenanceAttentionalEntity attentionalEntity;

  /**
   * NOTE: PreviousQuery is used for values that originate directly from QRef entities annotated in
   * the user query. AttentionalEntity is used for values that come from the system (entities
   * published by a dialog). These values could also originate from an entity annotated by QRef in
   * the query, but this is not necessarily the case. SearchAnswerValue is used for values that come
   * from the system as part of the answer of the user query. For example: U: Wife of Barack Obama
   * G: Barack Obama's wife is Michelle Obama Here "Barack Obama" can have an ArgumentProvenance of
   * PreviousQuery, or AttentionalEntity if a dialog publishes that entity and the interpretation
   * pulls the value from it. "Michelle Obama" can have an ArgumentProvenance of SearchAnswerValue,
   * or AttentionalEntity if the dialog publishes that entity and the interpretation pulls the value
   * it.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private KnowledgeAnswersIntentQueryArgumentProvenanceCurrentQuery currentQuery;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private KnowledgeAnswersIntentQueryArgumentProvenanceInjectedContextualSchema injectedContextualSchema;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private KnowledgeAnswersIntentQueryArgumentProvenancePreviousQuery previousQuery;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private KnowledgeAnswersIntentQueryArgumentProvenancePreviousResponseMeaning previousResponseMeaning;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskState previousTaskState;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private KnowledgeAnswersIntentQueryArgumentProvenanceSearchAnswerValue searchAnswerValue;

  /**
   * If populated, the current query contains an anaphor that refers to the value. For example: U:
   * Weather in Paris. [Weather(location=paris)] G: 65 degrees and sunny. U: How many people live
   * there? [Population(city=paris)] The "there" in the current query would have the "anaphor" field
   * set. NOTE: after a string rewrite this field will not be populated anymore if the rewrite
   * replaced the anaphor with the corresponding value. For example, if we rewrite [How many people
   * there] to [How many people in Paris], the CurrentQuerySignals for "paris" will not contain an
   * "anaphor" message anymore in the following turns. It will only contain an eval_data for the
   * span that corresponds to "paris" in the query.
   * @return value or {@code null} for none
   */
  public KnowledgeAnswersIntentQueryArgumentProvenanceQueryAnaphor getAnaphor() {
    return anaphor;
  }

  /**
   * If populated, the current query contains an anaphor that refers to the value. For example: U:
   * Weather in Paris. [Weather(location=paris)] G: 65 degrees and sunny. U: How many people live
   * there? [Population(city=paris)] The "there" in the current query would have the "anaphor" field
   * set. NOTE: after a string rewrite this field will not be populated anymore if the rewrite
   * replaced the anaphor with the corresponding value. For example, if we rewrite [How many people
   * there] to [How many people in Paris], the CurrentQuerySignals for "paris" will not contain an
   * "anaphor" message anymore in the following turns. It will only contain an eval_data for the
   * span that corresponds to "paris" in the query.
   * @param anaphor anaphor or {@code null} for none
   */
  public KnowledgeAnswersIntentQueryArgumentProvenance setAnaphor(KnowledgeAnswersIntentQueryArgumentProvenanceQueryAnaphor anaphor) {
    this.anaphor = anaphor;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public KnowledgeAnswersIntentQueryArgumentProvenanceAttentionalEntity getAttentionalEntity() {
    return attentionalEntity;
  }

  /**
   * @param attentionalEntity attentionalEntity or {@code null} for none
   */
  public KnowledgeAnswersIntentQueryArgumentProvenance setAttentionalEntity(KnowledgeAnswersIntentQueryArgumentProvenanceAttentionalEntity attentionalEntity) {
    this.attentionalEntity = attentionalEntity;
    return this;
  }

  /**
   * NOTE: PreviousQuery is used for values that originate directly from QRef entities annotated in
   * the user query. AttentionalEntity is used for values that come from the system (entities
   * published by a dialog). These values could also originate from an entity annotated by QRef in
   * the query, but this is not necessarily the case. SearchAnswerValue is used for values that come
   * from the system as part of the answer of the user query. For example: U: Wife of Barack Obama
   * G: Barack Obama's wife is Michelle Obama Here "Barack Obama" can have an ArgumentProvenance of
   * PreviousQuery, or AttentionalEntity if a dialog publishes that entity and the interpretation
   * pulls the value from it. "Michelle Obama" can have an ArgumentProvenance of SearchAnswerValue,
   * or AttentionalEntity if the dialog publishes that entity and the interpretation pulls the value
   * it.
   * @return value or {@code null} for none
   */
  public KnowledgeAnswersIntentQueryArgumentProvenanceCurrentQuery getCurrentQuery() {
    return currentQuery;
  }

  /**
   * NOTE: PreviousQuery is used for values that originate directly from QRef entities annotated in
   * the user query. AttentionalEntity is used for values that come from the system (entities
   * published by a dialog). These values could also originate from an entity annotated by QRef in
   * the query, but this is not necessarily the case. SearchAnswerValue is used for values that come
   * from the system as part of the answer of the user query. For example: U: Wife of Barack Obama
   * G: Barack Obama's wife is Michelle Obama Here "Barack Obama" can have an ArgumentProvenance of
   * PreviousQuery, or AttentionalEntity if a dialog publishes that entity and the interpretation
   * pulls the value from it. "Michelle Obama" can have an ArgumentProvenance of SearchAnswerValue,
   * or AttentionalEntity if the dialog publishes that entity and the interpretation pulls the value
   * it.
   * @param currentQuery currentQuery or {@code null} for none
   */
  public KnowledgeAnswersIntentQueryArgumentProvenance setCurrentQuery(KnowledgeAnswersIntentQueryArgumentProvenanceCurrentQuery currentQuery) {
    this.currentQuery = currentQuery;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public KnowledgeAnswersIntentQueryArgumentProvenanceInjectedContextualSchema getInjectedContextualSchema() {
    return injectedContextualSchema;
  }

  /**
   * @param injectedContextualSchema injectedContextualSchema or {@code null} for none
   */
  public KnowledgeAnswersIntentQueryArgumentProvenance setInjectedContextualSchema(KnowledgeAnswersIntentQueryArgumentProvenanceInjectedContextualSchema injectedContextualSchema) {
    this.injectedContextualSchema = injectedContextualSchema;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public KnowledgeAnswersIntentQueryArgumentProvenancePreviousQuery getPreviousQuery() {
    return previousQuery;
  }

  /**
   * @param previousQuery previousQuery or {@code null} for none
   */
  public KnowledgeAnswersIntentQueryArgumentProvenance setPreviousQuery(KnowledgeAnswersIntentQueryArgumentProvenancePreviousQuery previousQuery) {
    this.previousQuery = previousQuery;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public KnowledgeAnswersIntentQueryArgumentProvenancePreviousResponseMeaning getPreviousResponseMeaning() {
    return previousResponseMeaning;
  }

  /**
   * @param previousResponseMeaning previousResponseMeaning or {@code null} for none
   */
  public KnowledgeAnswersIntentQueryArgumentProvenance setPreviousResponseMeaning(KnowledgeAnswersIntentQueryArgumentProvenancePreviousResponseMeaning previousResponseMeaning) {
    this.previousResponseMeaning = previousResponseMeaning;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskState getPreviousTaskState() {
    return previousTaskState;
  }

  /**
   * @param previousTaskState previousTaskState or {@code null} for none
   */
  public KnowledgeAnswersIntentQueryArgumentProvenance setPreviousTaskState(KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskState previousTaskState) {
    this.previousTaskState = previousTaskState;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public KnowledgeAnswersIntentQueryArgumentProvenanceSearchAnswerValue getSearchAnswerValue() {
    return searchAnswerValue;
  }

  /**
   * @param searchAnswerValue searchAnswerValue or {@code null} for none
   */
  public KnowledgeAnswersIntentQueryArgumentProvenance setSearchAnswerValue(KnowledgeAnswersIntentQueryArgumentProvenanceSearchAnswerValue searchAnswerValue) {
    this.searchAnswerValue = searchAnswerValue;
    return this;
  }

  @Override
  public KnowledgeAnswersIntentQueryArgumentProvenance set(String fieldName, Object value) {
    return (KnowledgeAnswersIntentQueryArgumentProvenance) super.set(fieldName, value);
  }

  @Override
  public KnowledgeAnswersIntentQueryArgumentProvenance clone() {
    return (KnowledgeAnswersIntentQueryArgumentProvenance) super.clone();
  }

}
