public Converter(Query query) { this.query = query ; currentGroup = new ElementGroup() ; }
private void startSubGroup() { push(currentGroup) ; ElementGroup g = new ElementGroup() ; currentGroup = g ; }
public Converter(Op op) { this.query = QueryFactory.create() ; this.op = op; currentGroup = new ElementGroup() ; }
private void startSubGroup() { push(currentGroup) ; ElementGroup g = new ElementGroup() ; currentGroup = g ; }
@Override public void visit(ElementGroup group) { ElementGroup newgroup = new ElementGroup(); for (Element e: group.getElements()) { e.visit(this); newgroup.addElement(result); } result = newgroup; } @Override
@Override public void visit(ElementGroup group) { ElementGroup newgroup = new ElementGroup(); for (Element e: group.getElements()) { e.visit(this); newgroup.addElement(result); } result = newgroup; }
@Override public Var evaluate(NodeSelector nodeSelector, ElementGroup elementGroup, Var var, LDPathEvaluatorConfiguration evaluatorConfiguration) { GroupedSelector groupedSelector = (GroupedSelector) nodeSelector; ElementGroup newGroup = new ElementGroup(); elementGroup.addElement(newGroup); return LDPathEvaluator.evaluate(groupedSelector.getContent(), newGroup, var, evaluatorConfiguration); } }
@Override public void visit(ElementGroup group) { ElementGroup ret = new ElementGroup(); for (Element elt: group.getElements() ) { elt.visit(this); ret.addElement(result); } result = ret; }
public void add(Element elt) { if (query.getQueryPattern() instanceof ElementTriplesBlock) { ElementGroup group = new ElementGroup(); group.addElement(query.getQueryPattern()); group.addElement(elt); query.setQueryPattern(group); } else { assert query.getQueryPattern() instanceof ElementGroup; ElementGroup group = (ElementGroup) query.getQueryPattern(); group.addElement(elt); } }
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) {
@Override public void visit(OpGraph opGraph) { startSubGroup() ; Element e = asElement(opGraph.getSubOp()) ; endSubGroup() ; //If not element group make it one if (!(e instanceof ElementGroup)) { ElementGroup g = new ElementGroup(); g.addElement(e); e = g; } Element graphElt = new ElementNamedGraph(opGraph.getNode(), e) ; currentGroup().addElement(graphElt) ; }
@Override public void visit(ElementGroup group) { ElementGroup ret = new ElementGroup(); ElementPathBlock pathBlock = new ElementPathBlock(); for (Element elt: group.getElements()) {
@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; } }
ElementGroup group = new ElementGroup(); group.addElement(epb); elementGroup.addElement(group);
protected Element elementFromQuads(List<Quad> quads) { ElementGroup el = new ElementGroup() ; ElementTriplesBlock x = new ElementTriplesBlock() ; // Maybe empty?? el.addElement(x) ; Node g = Quad.defaultGraphNodeGenerated ; for ( Quad q : quads ) { if ( q.getGraph() != g ) { g = q.getGraph() ; x = new ElementTriplesBlock() ; if ( g == null || g == Quad.defaultGraphNodeGenerated ) el.addElement(x) ; else { ElementNamedGraph eng = new ElementNamedGraph(g, x) ; el.addElement(eng) ; } } x.addTriple(q.asTriple()) ; } return el ; }
protected Element elementFromQuads(List<Quad> quads) { ElementGroup el = new ElementGroup() ; ElementTriplesBlock x = new ElementTriplesBlock() ; // Maybe empty?? el.addElement(x) ; Node g = Quad.defaultGraphNodeGenerated ; for ( Quad q : quads ) { if ( q.getGraph() != g ) { g = q.getGraph() ; x = new ElementTriplesBlock() ; if ( g == null || g == Quad.defaultGraphNodeGenerated ) el.addElement(x) ; else { ElementNamedGraph eng = new ElementNamedGraph(g, x) ; el.addElement(eng) ; } } x.addTriple(q.asTriple()) ; } return el ; }
protected static Query ruleToQuery(RuleSystem rules, Rule rule, Map<Predicate, Query> headPred2Query, NewVariableGenerator varGen) { Query cq = new QueryWithRepeatedResultVars(); cq.setQuerySelectType(); for (Expr e: rule.getHead().getArguments()) { assert e.isVariable() : e; cq.addResultVar(((VariableExpr)e).getName()); } ElementGroup group = new ElementGroup(); cq.setQueryPattern(group); Set<VariableExpr> unboundVars = new HashSet<VariableExpr>(rule.getUnboundVariables()); for (AtomicFormula af :rule.getBody()) { af = renameUnboundVariables(af, unboundVars, varGen); Predicate pred = af.getPredicate(); Element elt; if (rules.isIDB(pred)) { Query conjunctQuery = getUnionQuery(rules,pred, headPred2Query, varGen); elt = instantiateBody(conjunctQuery, af.getArguments()); } else { elt = instantiateBody( af, af.getArguments()); } group.addElement(elt); } return cq; }
@Override public void visit(OpQuadPattern quadPattern) { Node graphNode = quadPattern.getGraphNode(); if (graphNode.equals(Quad.defaultGraphNodeGenerated)) { currentGroup().addElement(process(quadPattern.getBasicPattern())) ; } else { startSubGroup(); Element e = asElement(new OpBGP(quadPattern.getBasicPattern())) ; endSubGroup(); //If not element group make it one if (!(e instanceof ElementGroup)) { ElementGroup g = new ElementGroup(); g.addElement(e); e = g; } Element graphElt = new ElementNamedGraph(graphNode, e) ; currentGroup().addElement(graphElt) ; } }
public static <T extends ResourceObject> Query evaluate(QueryServiceConfiguration queryServiceDTO, URI rootType) throws ParseException { Query query = QueryFactory.make(); query.setQuerySelectType(); ElementGroup elementGroup = new ElementGroup(); Var objectVar = Var.alloc("root"); // Creating and adding the first triple - could be something like: "?objectVar rdf:type oa:Annotation Triple t1 = new Triple(objectVar, RDF.type.asNode(), NodeFactory.createURI(rootType.toString())); elementGroup.addTriplePattern(t1); // Evaluating the criteria for (Criteria c : queryServiceDTO.getCriteria()) { SesameValueBackend backend = new SesameValueBackend(); LdPathParser parser = new LdPathParser(backend, queryServiceDTO.getConfiguration(), new StringReader(c.getLdpath())); Var var = LDPathEvaluator.evaluate(parser.parseSelector(queryServiceDTO.getPrefixes()), elementGroup, objectVar, queryServiceDTO.getEvaluatorConfiguration()); if (c.getConstraint() != null) { String resolvedConstraint = resolveConstraintPrefix(c.getConstraint(), queryServiceDTO, parser); EvalComparison.evaluate(elementGroup, c, var, resolvedConstraint); } } // Adding all generated patterns to the query object query.setQueryPattern(elementGroup); // Choose what we want so select - SELECT ?annotation in this case query.addResultVar(objectVar); // Setting the default prefixes, like rdf: or dc: query.getPrefixMapping().setNsPrefixes(queryServiceDTO.getPrefixes()); return query; }
NodeSelector nodeSelectorRight = unionSelector.getRight(); ElementGroup leftGroup = new ElementGroup(); ElementGroup rightGroup = new ElementGroup();