Java源码示例:org.eclipse.rdf4j.query.algebra.CompareAny
示例1
public Value evaluate(CompareAny node, BindingSet bindings)
throws QueryEvaluationException {
Value leftValue = evaluate(node.getArg(), bindings);
// Result is false until a match has been found
boolean result = false;
// Use first binding name from tuple expr to compare values
String bindingName = node.getSubQuery().getBindingNames().iterator().next();
try (CloseableIteration<BindingSet, QueryEvaluationException> iter = evaluate(node.getSubQuery(), bindings)) {
while (!result && iter.hasNext()) {
BindingSet bindingSet = iter.next();
Value rightValue = bindingSet.getValue(bindingName);
try {
result = QueryEvaluationUtil.compare(leftValue, rightValue, node.getOperator());
} catch (ValueExprEvaluationException e) {
// ignore, maybe next value will match
}
}
}
return BooleanLiteral.valueOf(result);
}
示例2
/**
* Evaluate a {@link CompareAny} node
* @param node the node to evaluate
* @param bindings the set of named value bindings
* @return
* @throws ValueExprEvaluationException
* @throws QueryEvaluationException
*/
private Value evaluate(CompareAny node, BindingSet bindings) throws ValueExprEvaluationException, QueryEvaluationException {
Value leftValue = evaluate(node.getArg(), bindings);
// Result is false until a match has been found
boolean result = false;
// Use first binding name from tuple expr to compare values
String bindingName = node.getSubQuery().getBindingNames().iterator().next();
try (CloseableIteration<BindingSet, QueryEvaluationException> iter = parentStrategy.evaluate(node.getSubQuery(), bindings)) {
while (result == false && iter.hasNext()) {
BindingSet bindingSet = iter.next();
Value rightValue = bindingSet.getValue(bindingName);
try {
result = QueryEvaluationUtil.compare(leftValue, rightValue, node.getOperator());
} catch (ValueExprEvaluationException e) {
// ignore, maybe next value will match
}
}
}
return BooleanLiteral.valueOf(result);
}
示例3
/**
* @inheritDoc
*/
@Override
public void meet(CompareAny theOp) throws Exception {
mBuffer.append("(");
theOp.getArg().visit(this);
mBuffer.append(" ").append(theOp.getOperator().getSymbol()).append(" any ");
mBuffer.append("(");
mBuffer.append(renderTupleExpr(theOp.getSubQuery()));
mBuffer.append(")");
mBuffer.append(")");
}
示例4
/**
* @inheritDoc
*/
@Override
public void meet(CompareAny theOp) throws Exception {
mBuffer.append("(");
theOp.getArg().visit(this);
mBuffer.append(" ").append(theOp.getOperator().getSymbol()).append(" any ");
mBuffer.append("(");
// TODO: query render this
theOp.getSubQuery().visit(this);
mBuffer.append(")");
mBuffer.append(")");
}
示例5
@Override
public CompareAny visit(ASTCompareAny node, Object data) throws VisitorException {
ValueExpr valueExpr = (ValueExpr) node.getLeftOperand().jjtAccept(this, null);
TupleExpr tupleExpr = (TupleExpr) node.getRightOperand().jjtAccept(this, null);
CompareOp op = node.getOperator().getValue();
return new CompareAny(valueExpr, tupleExpr, op);
}
示例6
/**
* @inheritDoc
*/
@Override
public void meet(CompareAny theOp)
throws Exception
{
mBuffer.append("(");
theOp.getArg().visit(this);
mBuffer.append(" ").append(theOp.getOperator().getSymbol()).append(" any ");
mBuffer.append("(");
mBuffer.append(renderTupleExpr(theOp.getSubQuery()));
mBuffer.append(")");
mBuffer.append(")");
}
示例7
@Override
public Value evaluate(ValueExpr expr, BindingSet bindings)
throws QueryEvaluationException {
if (expr instanceof Var) {
return evaluate((Var) expr, bindings);
} else if (expr instanceof ValueConstant) {
return evaluate((ValueConstant) expr, bindings);
} else if (expr instanceof BNodeGenerator) {
return evaluate((BNodeGenerator) expr, bindings);
} else if (expr instanceof Bound) {
return evaluate((Bound) expr, bindings);
} else if (expr instanceof Str) {
return evaluate((Str) expr, bindings);
} else if (expr instanceof Label) {
return evaluate((Label) expr, bindings);
} else if (expr instanceof Lang) {
return evaluate((Lang) expr, bindings);
} else if (expr instanceof LangMatches) {
return evaluate((LangMatches) expr, bindings);
} else if (expr instanceof Datatype) {
return evaluate((Datatype) expr, bindings);
} else if (expr instanceof Namespace) {
return evaluate((Namespace) expr, bindings);
} else if (expr instanceof LocalName) {
return evaluate((LocalName) expr, bindings);
} else if (expr instanceof IsResource) {
return evaluate((IsResource) expr, bindings);
} else if (expr instanceof IsURI) {
return evaluate((IsURI) expr, bindings);
} else if (expr instanceof IsBNode) {
return evaluate((IsBNode) expr, bindings);
} else if (expr instanceof IsLiteral) {
return evaluate((IsLiteral) expr, bindings);
} else if (expr instanceof IsNumeric) {
return evaluate((IsNumeric) expr, bindings);
} else if (expr instanceof IRIFunction) {
return evaluate((IRIFunction) expr, bindings);
} else if (expr instanceof Regex) {
return evaluate((Regex) expr, bindings);
} else if (expr instanceof Coalesce) {
return evaluate((Coalesce) expr, bindings);
} else if (expr instanceof Like) {
return evaluate((Like) expr, bindings);
} else if (expr instanceof FunctionCall) {
return evaluate((FunctionCall) expr, bindings);
} else if (expr instanceof And) {
return evaluate((And) expr, bindings);
} else if (expr instanceof Or) {
return evaluate((Or) expr, bindings);
} else if (expr instanceof Not) {
return evaluate((Not) expr, bindings);
} else if (expr instanceof SameTerm) {
return evaluate((SameTerm) expr, bindings);
} else if (expr instanceof Compare) {
return evaluate((Compare) expr, bindings);
} else if (expr instanceof MathExpr) {
return evaluate((MathExpr) expr, bindings);
} else if (expr instanceof In) {
return evaluate((In) expr, bindings);
} else if (expr instanceof CompareAny) {
return evaluate((CompareAny) expr, bindings);
} else if (expr instanceof CompareAll) {
return evaluate((CompareAll) expr, bindings);
} else if (expr instanceof Exists) {
return evaluate((Exists) expr, bindings);
} else if (expr instanceof If) {
return evaluate((If) expr, bindings);
} else if (expr instanceof ListMemberOperator) {
return evaluate((ListMemberOperator) expr, bindings);
} else if (expr instanceof ValueExprTripleRef) {
return evaluate((ValueExprTripleRef) expr, bindings);
} else if (expr == null) {
throw new IllegalArgumentException("expr must not be null");
} else {
throw new QueryEvaluationException("Unsupported value expr type: " + expr.getClass());
}
}
示例8
@Override
public void meet(CompareAny node) throws X {
meetCompareSubQueryValueOperator(node);
}
示例9
/**
* Determines which evaluate method to call based on the type of {@link ValueExpr}
* @param expr the expression to evaluate
* @param bindings the set of named value bindings the set of named value bindings
* @return the {@link Value} resulting from the evaluation
* @throws ValueExprEvaluationException
* @throws QueryEvaluationException
*/
Value evaluate(ValueExpr expr, BindingSet bindings) throws ValueExprEvaluationException, QueryEvaluationException {
if (expr instanceof Var) {
return evaluate((Var) expr, bindings);
} else if (expr instanceof ValueConstant) {
return evaluate((ValueConstant) expr, bindings);
} else if (expr instanceof BNodeGenerator) {
return evaluate((BNodeGenerator) expr, bindings);
} else if (expr instanceof Bound) {
return evaluate((Bound) expr, bindings);
} else if (expr instanceof Str) {
return evaluate((Str) expr, bindings);
} else if (expr instanceof Label) {
return evaluate((Label) expr, bindings);
} else if (expr instanceof Lang) {
return evaluate((Lang) expr, bindings);
} else if (expr instanceof LangMatches) {
return evaluate((LangMatches) expr, bindings);
} else if (expr instanceof Datatype) {
return evaluate((Datatype) expr, bindings);
} else if (expr instanceof Namespace) {
return evaluate((Namespace) expr, bindings);
} else if (expr instanceof LocalName) {
return evaluate((LocalName) expr, bindings);
} else if (expr instanceof IsResource) {
return evaluate((IsResource) expr, bindings);
} else if (expr instanceof IsURI) {
return evaluate((IsURI) expr, bindings);
} else if (expr instanceof IsBNode) {
return evaluate((IsBNode) expr, bindings);
} else if (expr instanceof IsLiteral) {
return evaluate((IsLiteral) expr, bindings);
} else if (expr instanceof IsNumeric) {
return evaluate((IsNumeric) expr, bindings);
} else if (expr instanceof IRIFunction) {
return evaluate((IRIFunction) expr, bindings);
} else if (expr instanceof Regex) {
return evaluate((Regex) expr, bindings);
} else if (expr instanceof Coalesce) {
return evaluate((Coalesce) expr, bindings);
} else if (expr instanceof Like) {
return evaluate((Like) expr, bindings);
} else if (expr instanceof FunctionCall) {
return evaluate((FunctionCall) expr, bindings);
} else if (expr instanceof And) {
return evaluate((And) expr, bindings);
} else if (expr instanceof Or) {
return evaluate((Or) expr, bindings);
} else if (expr instanceof Not) {
return evaluate((Not) expr, bindings);
} else if (expr instanceof SameTerm) {
return evaluate((SameTerm) expr, bindings);
} else if (expr instanceof Compare) {
return evaluate((Compare) expr, bindings);
} else if (expr instanceof MathExpr) {
return evaluate((MathExpr) expr, bindings);
} else if (expr instanceof In) {
return evaluate((In) expr, bindings);
} else if (expr instanceof CompareAny) {
return evaluate((CompareAny) expr, bindings);
} else if (expr instanceof CompareAll) {
return evaluate((CompareAll) expr, bindings);
} else if (expr instanceof Exists) {
return evaluate((Exists) expr, bindings);
} else if (expr instanceof If) {
return evaluate((If) expr, bindings);
} else if (expr instanceof ListMemberOperator) {
return evaluate((ListMemberOperator) expr, bindings);
} else if (expr == null) {
throw new IllegalArgumentException("expr must not be null");
} else {
throw new QueryEvaluationException("Unsupported value expr type: " + expr.getClass());
}
}