package models.terms.meta;
import lombok.Getter;
import models.algebra.Constant;
import models.algebra.Expression;
import models.algebra.Variable;
@Getter
public class MetaResource extends MetaVariable {
public MetaResource(Variable variableName, OrderConstraint constraint, Expression order) {
super(MetaRDLTerm.TermType.META_RESOURCE_VARIABLE, variableName, constraint, order);
}
public MetaResource(Variable variableName) {
super(MetaRDLTerm.TermType.META_RESOURCE_VARIABLE, variableName, OrderConstraint.ANY, new Constant("0"));
}
public MetaResource(Variable variableName, Expression order) {
super(MetaRDLTerm.TermType.META_RESOURCE_VARIABLE, variableName, OrderConstraint.EQ, order);
}
// @Override
// public Set<MatchConstraint> isMatchedBy(RDLTerm another, MatchConstraint constraint) {
// Set<MatchConstraint> result = new HashSet<>();
// Map<Variable, RDLTerm> binding = constraint.getBinding();
// Map<Variable, OrderVariableConstraint> orderConstraint = constraint.getOrderConstraint();
// if ((! (another instanceof Resource)) && (! (another instanceof ResourceConstant))) {
// return result;
// }
//
// if (! orderConstraintCheck(another, orderConstraint)) {
// return result;
// }
//
// if (! islinearRightNormalizedMatchedBy(another)) {
// return result;
// }
//
// if (! binding.containsKey(this.variableName)) {
// binding.put(this.variableName, another);
// result.add(new MatchConstraint(binding, orderConstraint, constraint.cloneContext()));
// }
// else if (binding.get(this.variableName).equals(another)) {
// result.add(new MatchConstraint(binding, orderConstraint, constraint.cloneContext()));
// }
// return result;
// }
@Override
public MetaResource cloneWithName(String name) {
return new MetaResource(new Variable(name), constraint, orderExpression);
}
}