public static void extractTriples(Element e, List<Triple> result) { if(e instanceof ElementGroup) { ElementGroup g = (ElementGroup)e; for(Element item : g.getElements()) { extractTriples(item, result); } } else if(e instanceof ElementTriplesBlock) { ElementTriplesBlock b = (ElementTriplesBlock)e; List<Triple> triples = b.getPattern().getList(); result.addAll(triples); } }
public static void collectQuads(ElementTriplesBlock element, Context context, List<Quad> result) { Node graphNode = context.getGraphNode(); for(Triple triple : element.getPattern().getList()) { Quad quad = new Quad(graphNode, triple); result.add(quad); } }
public static void collectQuads(ElementTriplesBlock element, Context context, List<Quad> result) { Node graphNode = context.getGraphNode(); for(Triple triple : element.getPattern().getList()) { Quad quad = new Quad(graphNode, triple); result.add(quad); } }
public static void collectQuads(ElementTriplesBlock element, Context context, List<Quad> result) { Node graphNode = context.getGraphNode(); for(Triple triple : element.getPattern().getList()) { Quad quad = new Quad(graphNode, triple); result.add(quad); } }
@Override public void visit(ElementTriplesBlock el) { if ( el.isEmpty() ) { out.println("# Empty BGP"); return; } formatTriples(el.getPattern()); }
@Override public Element transform(ElementTriplesBlock el) { ElementTriplesBlock etb = new ElementTriplesBlock() ; boolean changed = false ; for (Triple t : el.getPattern()) { Triple t2 = transform(t) ; changed = changed || t != t2 ; etb.addTriple(t2) ; } if ( changed ) return etb ; return el ; }
@Override public void visit(ElementTriplesBlock el) { iter = iter.andThen( WrappedIterator.create(el.getPattern().getList().iterator()) .mapWith( MAP )); }
@Override public Element transform(ElementTriplesBlock el) { BasicPattern before = el.getPattern(); BasicPattern after = TransformDeduplicatePatterns.deduplicate(before); Element result = after.equals(before) ? el : new ElementTriplesBlock(after); return result; }
@Override public void visit(ElementTriplesBlock el) { iter = iter.andThen( WrappedIterator.create(el.getPattern().getList().iterator()) .mapWith( MAP )); }
@Override public Element transform(ElementTriplesBlock el) { BasicPattern before = el.getPattern(); BasicPattern after = TransformDeduplicatePatterns.deduplicate(before); Element result = after.equals(before) ? el : new ElementTriplesBlock(after); return result; }
@Override public Element transform(ElementTriplesBlock el) { ElementTriplesBlock etb = new ElementTriplesBlock() ; boolean changed = false ; for (Triple t : el.getPattern()) { Triple t2 = transform(t) ; changed = changed || t != t2 ; etb.addTriple(t2) ; } if ( changed ) return etb ; return el ; }
public Concept(List<Element> elements, Var var) { ElementGroup group = new ElementGroup(); for(Element item : elements) { if(item instanceof ElementTriplesBlock) { ElementTriplesBlock tmp = (ElementTriplesBlock)item; for(Triple t : tmp.getPattern()) { group.addTriplePattern(t); } } else { group.addElement(item); } } this.element = group; this.var = var; }
public static void mergeElements(ElementGroup target, ElementTriplesBlock etb, Element source) { if(source instanceof ElementTriplesBlock) { ElementTriplesBlock e = (ElementTriplesBlock)source; for(Triple t : e.getPattern()) { etb.addTriple(t); } } else if(source instanceof ElementGroup) { ElementGroup es = (ElementGroup)source; for(Element e : es.getElements()) { mergeElements(target, etb, e); //target.addElement(e); } } else { target.addElement(source); } }
public static Element applyTransform(ElementTriplesBlock el, Map<Node, BinaryRelation> virtualPredicates, Generator<Var> rootVarGen) { BasicPattern bgp = el.getPattern(); BasicPattern newPattern = new BasicPattern(); List<Element> elements = new ArrayList<Element>(bgp.size()); for(Triple triple : bgp) { Generator<Var> varGen = rootVarGen.clone(); Element e = applyTransform(triple, virtualPredicates, varGen); if(e == null) { newPattern.add(triple); } else { elements.add(e); } } Iterable<Element> items = newPattern.isEmpty() ? elements : Iterables.concat(Collections.singleton(new ElementTriplesBlock(newPattern)), elements) ; Element result = ElementUtils.createElementGroup(items); return result; }
public void visit(ElementTriplesBlock el) { for(Triple t : el.getPattern().getList()) { isEmpty = false; if (t.getSubject().isVariable() || t.getPredicate().isVariable() || t.getObject().isVariable()) { canBind = true; } if (defaultGraphName == null) { Quad quad = new Quad(defaultGraphName, t); quads.add(quad); } else { quads.add(new Quad(defaultGraphName, t)); } mustMatchTriple = true; } }
Triple current; int position = 1; for(Iterator<Triple> iter = ((ElementTriplesBlock) el).getPattern().iterator() ; iter.hasNext() ; ){ current = iter.next(); if(current.getObject().toString().equals(label)){ node = current.getObject(); position = ((ElementTriplesBlock) el).getPattern().getList().indexOf(current); add = Triple.create(current.getSubject(), current.getPredicate(), NodeFactory.createVariable("x" + nodeId)); iter.remove();
@Test public void test_param_string_positional_injection_05() { // This injection attempt results in a valid query but a failed // injection String str = "PREFIX : <http://example/>\nSELECT * WHERE { <s> <p> ? . }"; ParameterizedSparqlString pss = new ParameterizedSparqlString(str); pss.setLiteral(0, "hello\" . ?s ?p ?o"); Query q = pss.asQuery(); Element el = q.getQueryPattern(); if (el instanceof ElementTriplesBlock) { Assert.assertEquals(1, ((ElementTriplesBlock) q.getQueryPattern()).getPattern().size()); } else if (el instanceof ElementGroup) { Assert.assertEquals(1, ((ElementGroup) el).getElements().size()); el = ((ElementGroup) el).getElements().get(0); if (el instanceof ElementTriplesBlock) { Assert.assertEquals(1, ((ElementTriplesBlock) el).getPattern().size()); } } }
@Test public void test_param_string_injection_05() { // This injection attempt results in a valid query but a failed // injection String str = "PREFIX : <http://example/>\nSELECT * WHERE { <s> <p> ?var2 . }"; ParameterizedSparqlString pss = new ParameterizedSparqlString(str); pss.setLiteral("var2", "hello\" . ?s ?p ?o"); Query q = pss.asQuery(); Element el = q.getQueryPattern(); if (el instanceof ElementTriplesBlock) { Assert.assertEquals(1, ((ElementTriplesBlock) q.getQueryPattern()).getPattern().size()); } else if (el instanceof ElementGroup) { Assert.assertEquals(1, ((ElementGroup) el).getElements().size()); el = ((ElementGroup) el).getElements().get(0); if (el instanceof ElementTriplesBlock) { Assert.assertEquals(1, ((ElementTriplesBlock) el).getPattern().size()); } } }
/** * Attempts to parse a given string into a Jena Path. * Throws an Exception if the string cannot be parsed. * @param string the string to parse * @param model the Model to operate on (for prefixes) * @return a Path or a Resource if this is a URI */ public static Object getJenaPath(String string, Model model) throws QueryParseException { Query query = ARQFactory.get().createQuery(model, "ASK { ?a \n" + string + "\n ?b }"); Element element = query.getQueryPattern(); if(element instanceof ElementGroup) { Element e = ((ElementGroup)element).getElements().get(0); if(e instanceof ElementPathBlock) { Path path = ((ElementPathBlock) e).getPattern().get(0).getPath(); if(path instanceof P_Link && ((P_Link)path).isForward()) { return model.asRDFNode(((P_Link)path).getNode()); } else { return path; } } else if(e instanceof ElementTriplesBlock) { return model.asRDFNode(((ElementTriplesBlock) e).getPattern().get(0).getPredicate()); } } throw new QueryParseException("Not a SPARQL 1.1 Path expression", 2, 1); }
return compileBasicPattern(((ElementTriplesBlock)elt).getPattern()) ;