/*
 * 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;

/**
 * Model definition for RepositoryWebrefTripleMention.
 *
 * <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 RepositoryWebrefTripleMention extends com.google.api.client.json.GenericJson {

  /**
   * Document mention of the predicate
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private RepositoryWebrefSegmentMention predMention;

  /**
   * The [begin, end) byte offset of the document scope where this triple was annotated. This
   * corresponds to a table row or a text sentence where the triple was identified. The sub_mention
   * can be outside the scope when the subject is inferred from the table title.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Integer scopeBegin;

  /**
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Integer scopeEnd;

  /**
   * Fingerprint2011 of space-joined SAFT tokens in the scope.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key @com.google.api.client.json.JsonString
  private java.math.BigInteger scopeFprint;

  /**
   * Generic container to hold additional data such as triple scoped signals. Data that can be
   * stored in this field and their TypeIds: repository_webref::universal::webit::ScopeSignals
   * (TypeId 192754198), defined in repository/webref/universal/processors/understanding/webit.proto
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private Proto2BridgeMessageSet stuff;

  /**
   * Document mention of the subject
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private RepositoryWebrefSegmentMention subMention;

  /**
   * Document mention of the value
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private RepositoryWebrefSegmentMention valueMention;

  /**
   * Document mention of the predicate
   * @return value or {@code null} for none
   */
  public RepositoryWebrefSegmentMention getPredMention() {
    return predMention;
  }

  /**
   * Document mention of the predicate
   * @param predMention predMention or {@code null} for none
   */
  public RepositoryWebrefTripleMention setPredMention(RepositoryWebrefSegmentMention predMention) {
    this.predMention = predMention;
    return this;
  }

  /**
   * The [begin, end) byte offset of the document scope where this triple was annotated. This
   * corresponds to a table row or a text sentence where the triple was identified. The sub_mention
   * can be outside the scope when the subject is inferred from the table title.
   * @return value or {@code null} for none
   */
  public java.lang.Integer getScopeBegin() {
    return scopeBegin;
  }

  /**
   * The [begin, end) byte offset of the document scope where this triple was annotated. This
   * corresponds to a table row or a text sentence where the triple was identified. The sub_mention
   * can be outside the scope when the subject is inferred from the table title.
   * @param scopeBegin scopeBegin or {@code null} for none
   */
  public RepositoryWebrefTripleMention setScopeBegin(java.lang.Integer scopeBegin) {
    this.scopeBegin = scopeBegin;
    return this;
  }

  /**
   * @return value or {@code null} for none
   */
  public java.lang.Integer getScopeEnd() {
    return scopeEnd;
  }

  /**
   * @param scopeEnd scopeEnd or {@code null} for none
   */
  public RepositoryWebrefTripleMention setScopeEnd(java.lang.Integer scopeEnd) {
    this.scopeEnd = scopeEnd;
    return this;
  }

  /**
   * Fingerprint2011 of space-joined SAFT tokens in the scope.
   * @return value or {@code null} for none
   */
  public java.math.BigInteger getScopeFprint() {
    return scopeFprint;
  }

  /**
   * Fingerprint2011 of space-joined SAFT tokens in the scope.
   * @param scopeFprint scopeFprint or {@code null} for none
   */
  public RepositoryWebrefTripleMention setScopeFprint(java.math.BigInteger scopeFprint) {
    this.scopeFprint = scopeFprint;
    return this;
  }

  /**
   * Generic container to hold additional data such as triple scoped signals. Data that can be
   * stored in this field and their TypeIds: repository_webref::universal::webit::ScopeSignals
   * (TypeId 192754198), defined in repository/webref/universal/processors/understanding/webit.proto
   * @return value or {@code null} for none
   */
  public Proto2BridgeMessageSet getStuff() {
    return stuff;
  }

  /**
   * Generic container to hold additional data such as triple scoped signals. Data that can be
   * stored in this field and their TypeIds: repository_webref::universal::webit::ScopeSignals
   * (TypeId 192754198), defined in repository/webref/universal/processors/understanding/webit.proto
   * @param stuff stuff or {@code null} for none
   */
  public RepositoryWebrefTripleMention setStuff(Proto2BridgeMessageSet stuff) {
    this.stuff = stuff;
    return this;
  }

  /**
   * Document mention of the subject
   * @return value or {@code null} for none
   */
  public RepositoryWebrefSegmentMention getSubMention() {
    return subMention;
  }

  /**
   * Document mention of the subject
   * @param subMention subMention or {@code null} for none
   */
  public RepositoryWebrefTripleMention setSubMention(RepositoryWebrefSegmentMention subMention) {
    this.subMention = subMention;
    return this;
  }

  /**
   * Document mention of the value
   * @return value or {@code null} for none
   */
  public RepositoryWebrefSegmentMention getValueMention() {
    return valueMention;
  }

  /**
   * Document mention of the value
   * @param valueMention valueMention or {@code null} for none
   */
  public RepositoryWebrefTripleMention setValueMention(RepositoryWebrefSegmentMention valueMention) {
    this.valueMention = valueMention;
    return this;
  }

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

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

}
