@Override public Var evaluate(NodeSelector nodeSelector, ElementGroup elementGroup, Var var, LDPathEvaluatorConfiguration evaluatorConfiguration) { PropertySelector propertySelector = (PropertySelector) nodeSelector; if (propertySelector instanceof WildcardSelector) { throw new IllegalStateException(propertySelector.getClass() + " is not supported."); } Var id = Var.alloc(VarIDGenerator.createID()); elementGroup.addTriplePattern(new Triple(var.asNode(), NodeFactory.createURI(propertySelector.getProperty().toString()), id.asNode())); return id; } }
@Override public Expr evaluate(NodeTest nodeTest, ElementGroup elementGroup, Var var, LDPathEvaluatorConfiguration evaluatorConfiguration) { IsATest isATest = (IsATest) nodeTest; Var tmpVar = Var.alloc(Var.alloc(VarIDGenerator.createID())); elementGroup.addTriplePattern(new Triple(var.asNode(), RDF.type.asNode(), tmpVar.asNode())); return new E_Equals(new ExprVar(tmpVar.asNode()), new NodeValueNode(NodeFactory.createURI(isATest.getPathExpression(new SesameValueBackend()).replace("<", "").replace(">", "").replaceFirst("is-a ", "")))); } }
@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); IsATest isATest = (IsATest) nodeTest; elementGroup.addTriplePattern(new Triple(delVar.asNode(), RDF.type.asNode(), NodeFactory.createURI(isATest.getPathExpression(new SesameValueBackend()).replace("<", "").replace(">", "").replaceFirst("is-a ", "")))); return delVar; }
@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"); } } }
@Override public Var evaluate(NodeSelector nodeSelector, ElementGroup elementGroup, Var var, LDPathEvaluatorConfiguration evaluatorConfiguration) { ReversePropertySelector reversePropertySelector = (ReversePropertySelector) nodeSelector; Var id = Var.alloc(VarIDGenerator.createID()); ElementPathBlock epb = new ElementPathBlock(); epb.addTriple(new TriplePath(var.asNode(), new P_Inverse(new P_Link(NodeFactory.createURI(reversePropertySelector.getProperty().toString()))), id.asNode())); ElementGroup group = new ElementGroup(); group.addElement(epb); elementGroup.addElement(group); return id; } }
triplePath = new TriplePath(var.asNode(), new P_ZeroOrMore1(new P_Link(NodeFactory.createURI(strippedPathExpression))), id.asNode()); } else if (pathExpression.contains("+")) { triplePath = new TriplePath(var.asNode(), new P_OneOrMore1(new P_Link(NodeFactory.createURI(strippedPathExpression))), id.asNode()); } else { throw new IllegalStateException("Only ZeroOrMorePath(*), OneOrMorePath(+) path selectors are currently supported.");
@Override public Expr evaluate(NodeTest nodeTest, ElementGroup elementGroup, Var var, LDPathEvaluatorConfiguration evaluatorConfiguration) { PathEqualityTest pathEqualityTest = (PathEqualityTest) nodeTest; Var tmpVar = LDPathEvaluator.evaluate(pathEqualityTest.getPath(), elementGroup, var, evaluatorConfiguration); if(pathEqualityTest.getNode() instanceof org.openrdf.model.impl.LiteralImpl) { return new E_Equals(new ExprVar(tmpVar.asNode()), new NodeValueNode(NodeFactory.createLiteral(((LiteralImpl) pathEqualityTest.getNode()).getLabel().toString()))); } else { return new E_Equals(new ExprVar(tmpVar.asNode()), new NodeValueNode(NodeFactory.createURI(pathEqualityTest.getNode().toString()))); } } }
elementGroup.addElementFilter(new ElementFilter(new E_Regex(new E_Str(new ExprVar(variable.asNode())), constraint , ""))); expr = new E_GreaterThan(new ExprVar(variable.asNode()), new NodeValueDouble(Double.parseDouble(resolvedConstraint))); } else if (criteria.getComparison().equals(Comparison.GTE)) { expr = new E_GreaterThanOrEqual(new ExprVar(variable.asNode()), new NodeValueDouble(Double.parseDouble(resolvedConstraint))); } else if (criteria.getComparison().equals(Comparison.LT)) { expr = new E_LessThan(new ExprVar(variable.asNode()), new NodeValueDouble(Double.parseDouble(resolvedConstraint))); } else if (criteria.getComparison().equals(Comparison.LTE)) { expr = new E_LessThanOrEqual(new ExprVar(variable.asNode()), new NodeValueDouble(Double.parseDouble(resolvedConstraint))); } else if (criteria.getComparison().equals(Comparison.EQ)) { expr = new E_Equals(new ExprVar(variable.asNode()), new ExprVar(criteria.getConstraint())); } else { throw new IllegalStateException(criteria.getComparison() + " is not allowed on Numbers.");
leftGroup.addElement(new ElementBind(subVar, new NodeValueNode(leftVar.asNode()))); leftSubQuery.setQueryPattern(leftGroup); leftSubQuery.addResultVar(var); rightGroup.addElement(new ElementBind(subVar, new NodeValueNode(rightVar.asNode()))); rightSubQuery.setQueryPattern(rightGroup); rightSubQuery.addResultVar(var);