public void addFilter(ElementFilter filter) { if (query.getQueryPattern() instanceof ElementTriplesBlock) { ElementGroup group = new ElementGroup(); group.addElement(query.getQueryPattern()); group.addElementFilter(filter); query.setQueryPattern(group); } else { assert query.getQueryPattern() instanceof ElementGroup; ElementGroup group = (ElementGroup) query.getQueryPattern(); group.addElementFilter(filter); } } public void add(Element elt) {
private void makeElementConstraints(Query q, ElementGroup g ,RDQL_Node node) { Q_ConstraintClause qcc = (Q_ConstraintClause)node ; int n = qcc.jjtGetNumChildren() ; for ( int j = 0 ; j < n ; j++ ) { Object obj = qcc.jjtGetChild(j) ; if ( ! ( obj instanceof ExprRDQL ) ) throw new ARQInternalErrorException("Parse node in AND clause isn't a Constraint") ; ElementFilter f = new ElementFilter((ExprRDQL)obj) ; g.addElementFilter(f) ; } }
@Override public Var evaluate(NodeSelector nodeSelector, ElementGroup elementGroup, Var var, LDPathEvaluatorConfiguration evaluatorConfiguration) { TestingSelector testingSelector = (TestingSelector) nodeSelector; NodeTest nodeTest = testingSelector.getTest(); Var delVar = LDPathEvaluator.evaluate(testingSelector.getDelegate(), elementGroup, var, evaluatorConfiguration); elementGroup.addElementFilter(new ElementFilter(evaluate(nodeTest, elementGroup, delVar, evaluatorConfiguration))); return delVar; }
@Override public Var evaluate(NodeSelector nodeSelector, ElementGroup elementGroup, Var var, LDPathEvaluatorConfiguration evaluatorConfiguration) { TestingSelector testingSelector = (TestingSelector) nodeSelector; Var delVar = LDPathEvaluator.evaluate(testingSelector.getDelegate(), elementGroup, var, evaluatorConfiguration); elementGroup.addElementFilter(new ElementFilter(evaluate(testingSelector.getTest(), elementGroup, delVar, evaluatorConfiguration))); return var; }
@Override public Var evaluate(NodeSelector nodeSelector, ElementGroup elementGroup, Var var, LDPathEvaluatorConfiguration evaluatorConfiguration) { TestingSelector testingSelector = (TestingSelector) nodeSelector; NodeTest nodeTest = testingSelector.getTest(); Var delVar = LDPathEvaluator.evaluate(testingSelector.getDelegate(), elementGroup, var, evaluatorConfiguration); elementGroup.addElementFilter(new ElementFilter(evaluate(nodeTest, elementGroup, delVar, evaluatorConfiguration))); return var; }
@Override public Var evaluate(NodeSelector nodeSelector, ElementGroup elementGroup, Var var, LDPathEvaluatorConfiguration evaluatorConfiguration) { TestingSelector testingSelector = (TestingSelector) nodeSelector; Var delVar = LDPathEvaluator.evaluate(testingSelector.getDelegate(), elementGroup, var, evaluatorConfiguration); elementGroup.addElementFilter(new ElementFilter(evaluate(testingSelector.getTest(), elementGroup, delVar, evaluatorConfiguration))); return delVar; } }
@Override public Var evaluate(NodeSelector nodeSelector, ElementGroup elementGroup, Var var, LDPathEvaluatorConfiguration evaluatorConfiguration) { TestingSelector testingSelector = (TestingSelector) nodeSelector; NodeTest nodeTest = testingSelector.getTest(); Var delVar = LDPathEvaluator.evaluate(testingSelector.getDelegate(), elementGroup, var, evaluatorConfiguration); elementGroup.addElementFilter(new ElementFilter(evaluate(nodeTest, elementGroup, delVar, evaluatorConfiguration))); return delVar; }
@Override public Var evaluate(NodeSelector nodeSelector, ElementGroup elementGroup, Var var, LDPathEvaluatorConfiguration evaluatorConfiguration) { TestingSelector testingSelector = (TestingSelector) nodeSelector; Var delVar = LDPathEvaluator.evaluate(testingSelector.getDelegate(), elementGroup, var, evaluatorConfiguration); elementGroup.addElementFilter(new ElementFilter(evaluate(testingSelector.getTest(), elementGroup, delVar, evaluatorConfiguration))); return var; }
@Override public Var evaluate(NodeSelector nodeSelector, ElementGroup elementGroup, Var var, LDPathEvaluatorConfiguration evaluatorConfiguration) { TestingSelector testingSelector = (TestingSelector) nodeSelector; FunctionTest functionTest = (FunctionTest) testingSelector.getTest(); if(functionTest.getArgSelectors().get(0) instanceof PropertySelector) { PropertySelector arg = (PropertySelector) functionTest.getArgSelectors().get(0); PropertySelector delegate = (PropertySelector) testingSelector.getDelegate(); Var target = Var.alloc(VarIDGenerator.createID()); elementGroup.addTriplePattern(new Triple(var.asNode(), NodeFactory.createURI(delegate.getProperty().toString()), target)); Var selector = Var.alloc(VarIDGenerator.createID()); elementGroup.addTriplePattern(new Triple(target.asNode(), NodeFactory.createURI(arg.getProperty().toString()), selector.asNode())); elementGroup.addElementFilter(new ElementFilter(new E_IsLiteral(new ExprVar(selector)))); return selector; } else { throw new IllegalStateException("Argument of function isLiteral has to be a PropertySelector"); } } }
ElementGroup fwdGroup = new ElementGroup(); fwdGroup.addElement(fwdElt); fwdGroup.addElementFilter(new ElementFilter(new E_NotEquals(getExpr(subject), getExpr(object)))); for (Node n: p.getFwdNodes()) { Expr exp = getExpr(n); E_NotEquals neq = new E_NotEquals(new ExprVar(fwdpred),exp); fwdGroup.addElementFilter(new ElementFilter(neq)); ElementGroup bwdGroup = new ElementGroup(); bwdGroup.addElement(bwdElt); bwdGroup.addElementFilter(new ElementFilter(new E_NotEquals(getExpr(subject), getExpr(object)))); for (Node n: p.getBwdNodes()) { Expr exp = getExpr(n); E_NotEquals neq = new E_NotEquals(new ExprVar(bwdpred),exp); bwdGroup.addElementFilter(new ElementFilter(neq)); ElementGroup eqGroup = new ElementGroup(); eqGroup.addElement(eqElt); eqGroup.addElementFilter(new ElementFilter(new E_Equals(getExpr(subject), getExpr(object)))); Set<Node> alreadySeen = HashSetFactory.make(); for (Node n: p.getFwdNodes()) { Expr exp = getExpr(n); E_NotEquals neq = new E_NotEquals(new ExprVar(eqpred),exp); eqGroup.addElementFilter(new ElementFilter(neq)); Expr exp = getExpr(n); E_NotEquals neq = new E_NotEquals(new ExprVar(eqpred),exp); eqGroup.addElementFilter(new ElementFilter(neq));
elementGroup.addElementFilter(new ElementFilter(new E_Regex(new E_Str(new ExprVar(variable.asNode())), constraint , ""))); elementGroup.addElementFilter(new ElementFilter(expr));