private static QueryIterator evalGroundedOneEnd(Binding binding, Iterator<Node> iter, Node endNode, ExecutionContext execCxt) { List<Binding> results = new ArrayList<>() ; if (! Var.isVar(endNode)) throw new ARQInternalErrorException("Non-variable endnode in _execTriplePath") ; Var var = Var.alloc(endNode) ; // Assign. for (; iter.hasNext();) { Node n = iter.next() ; results.add(BindingFactory.binding(binding, var, n)) ; } return new QueryIterPlainWrapper(results.iterator(), execCxt) ; }
static Table evalDS(OpDatasetNames opDSN, Evaluator evaluator) { Node graphNode = opDSN.getGraphNode() ; if ( graphNode.isURI() ) { if ( evaluator.getExecContext().getDataset().containsGraph(graphNode) ) { return new TableUnit() ; } else // WRONG { return new TableEmpty() ; } } if ( ! Var.isVar(graphNode) ) throw new ARQInternalErrorException("OpDatasetNames: Not a URI or variable: "+graphNode) ; DatasetGraph dsg = evaluator.getExecContext().getDataset() ; Iterator<Node> iter = dsg.listGraphNodes() ; List<Binding> list = new ArrayList<>((int)dsg.size()) ; for ( ; iter.hasNext(); ) { Node gn = iter.next(); Binding b = BindingFactory.binding(Var.alloc(graphNode), gn) ; list.add(b) ; } QueryIterator qIter = new QueryIterPlainWrapper(list.iterator(), evaluator.getExecContext()) ; return TableFactory.create(qIter) ; }
public static List<String> map(Collection<String> varNames, Map<Var, Var> varMap) { List<String> result = new ArrayList<String>(varNames.size()); for(String varName : varNames) { Var sourceVar = Var.alloc(varName); Var targetVar = varMap.get(sourceVar); if(targetVar == null) { targetVar = sourceVar; } String targetVarName = targetVar.getVarName(); result.add(targetVarName); } return result; }
private static List<Var> vars(CSVParser parser) { final List<Var> vars = new ArrayList<>(); List<String> varNames = parser.parse1() ; if ( varNames == null ) throw new ARQException("SPARQL CSV Results malformed, input is empty"); for ( String vn : varNames ) { vars.add(Var.alloc(vn)) ; } return vars ; }
private List<Binding> randomBindings(int numBindings) { random = new Random(); Var[] vars = new Var[]{ Var.alloc("1"), Var.alloc("2"), Var.alloc("3"), Var.alloc("4"), Var.alloc("5"), Var.alloc("6"), Var.alloc("7"), Var.alloc("8"), Var.alloc("9"), Var.alloc("0") }; List<Binding> toReturn = new ArrayList<>(); for(int i = 0; i < numBindings; i++){ toReturn.add(randomBinding(vars)); } return toReturn; }
private static Triple bindingToTriple(Node vs, Node vp, Node vo, Binding binding) { Node sResult = vs ; Node pResult = vp ; Node oResult = vo ; if ( Var.isVar(vs) ) sResult = binding.get(Var.alloc(vs)) ; if ( Var.isVar(vp) ) pResult = binding.get(Var.alloc(vp)) ; if ( Var.isVar(vo) ) oResult = binding.get(Var.alloc(vo)) ; return Triple.create(sResult, pResult, oResult) ; }
public static BinaryRelation parse(String relationStr, Function<String, Element> elementParser) { String[] splits = relationStr.split("\\|", 2); if(splits.length != 2) { throw new RuntimeException("Invalid string: " + relationStr); } String varsStr = splits[0]; Matcher m = VAR_PATTERN.matcher(varsStr); List<Var> vars = new ArrayList<Var>(); while(m.find()) { String varName = m.group(1); Var v = Var.alloc(varName); vars.add(v); } if(vars.size() != 2) { throw new RuntimeException("Exactly 2 variables expected, instead got: " + varsStr); } Var sourceVar = vars.get(0); Var targetVar = vars.get(1); String elementStr = splits[1]; Element element = elementParser.apply(elementStr); BinaryRelation result = new BinaryRelationImpl(element, sourceVar, targetVar); return result; }
private static Quad bindingToQuad(Node vg, Node vs, Node vp, Node vo, Binding binding) { Node gResult = vg ; Node sResult = vs ; Node pResult = vp ; Node oResult = vo ; if ( Var.isVar(vg) ) gResult = binding.get(Var.alloc(vg)) ; if ( Var.isVar(vs) ) sResult = binding.get(Var.alloc(vs)) ; if ( Var.isVar(vp) ) pResult = binding.get(Var.alloc(vp)) ; if ( Var.isVar(vo) ) oResult = binding.get(Var.alloc(vo)) ; return Quad.create(gResult, sResult, pResult, oResult) ; }