
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