All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.weaverplatform.sp4rql.model.restriction.QuadRestriction Maven / Gradle / Ivy

package com.weaverplatform.sp4rql.model.restriction;

import com.weaverplatform.sp4rql.model.scope.ScopeSimple;
import com.weaverplatform.sp4rql.model.scope.Sp4rqlScope;
import com.weaverplatform.sp4rql.model.token.Sp4rqlToken;
import com.weaverplatform.sp4rql.model.token.VariableToken;
import com.weaverplatform.util.IndentStringBuilder;

import java.util.HashSet;

public class QuadRestriction implements Sp4rqlRestriction {

  Sp4rqlToken statement, subject, predicate, object;
  private String alias;
  private Sp4rqlScope scope;
  private Sp4rqlToken graphToken;
  private boolean negated = false;
  private boolean reversed = false;

  public QuadRestriction(Sp4rqlToken statement, Sp4rqlToken subject, Sp4rqlToken predicate, Sp4rqlToken object) {
    this.statement = statement;
    this.subject = subject;
    this.predicate = predicate;
    this.object = object;
  }

  public void setNegated() {
    this.negated = true;
  }

  public boolean isNegated() {
    return negated;
  }

  public void setReversed() {
    this.reversed = true;
  }

  public boolean isReversed() {
    return reversed;
  }

  @Override
  public void setAlias(String alias) {
    this.alias = alias;
  }

  @Override
  public String getAlias() {
    return alias;
  }

  @Override
  public void setInScope(Sp4rqlScope scope) {
    this.scope = scope;
    this.graphToken = ((ScopeSimple) scope).getGraphSelector();
  }

  @Override
  public Sp4rqlScope inScope() {
    return scope;
  }

  public void setStatement(Sp4rqlToken statement) {
    this.statement = statement;
  }

  public Sp4rqlToken getStatement() {
    return statement;
  }

  public Sp4rqlToken getSubject() {
    return subject;
  }

  public void setPredicate(Sp4rqlToken predicate) {
    this.predicate = predicate;
  }

  public Sp4rqlToken getPredicate() {
    return predicate;
  }

  public void setObject(Sp4rqlToken object) {
    this.object = object;
  }

  public Sp4rqlToken getObject() {
    return object;
  }

  @Override
  public HashSet getExposedVariables() {
    HashSet tokens = new HashSet<>();
    if(statement instanceof VariableToken) {
      tokens.add((VariableToken) statement);
    }
    if(subject instanceof VariableToken) {
      tokens.add((VariableToken) subject);
    }
    if(predicate instanceof VariableToken) {
      tokens.add((VariableToken) predicate);
    }
    if(object instanceof VariableToken) {
      tokens.add((VariableToken) object);
    }
    if(graphToken != null && graphToken instanceof VariableToken) {
      tokens.add((VariableToken) graphToken);
    }
    return tokens;
  }

  public QuadRestriction clone() {
    QuadRestriction clone = new QuadRestriction(statement, subject, predicate, object);
    if(reversed) {
      clone.setReversed();
    }
    if(negated) {
      clone.setNegated();
    }
    return clone;
  }

  public void buildString(IndentStringBuilder builder) {
    statement.buildString(builder);
    builder.append(" ");
    subject.buildString(builder);
    builder.append(" ");
    predicate.buildString(builder);
    builder.append(" ");
    object.buildString(builder);
    builder.append(" .");
    builder.append(" # ");
    builder.append(getAlias());
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy