final List<String> vars = query.getResultVars(); if (!query.isQueryResultStar() && !query.hasGroupBy()) { final String[] all = new String[vars.size()];
@Override public void visitDescribeResultForm(Query query) { x ^= query.getResultVars().hashCode() ; x ^= query.getResultURIs().hashCode() ; }
private Optional<ResultAnnotation> getFocusNodeAnnotation() { if (query.getResultVars().contains("focusNode")) { return Optional.of( createVariableAnnotation(SHACL.focusNode, "focusNode")); } else { return Optional.of( createVariableAnnotation(SHACL.focusNode, "this")); } }
private Optional<ResultAnnotation> getFocusNodeAnnotation() { if (query.getResultVars().contains("focusNode")) { return Optional.of( createVariableAnnotation(SHACL.focusNode, "focusNode")); } else { return Optional.of( createVariableAnnotation(SHACL.focusNode, "this")); } }
private Optional<ResultAnnotation> getMessageAnnotation() { if (query.getResultVars().contains("message")) { return Optional.of( createVariableAnnotation(SHACL.resultMessage, "message")); } else { return ImmutableList.of(shape.getMessage(),validator.getDefaultMessage()).stream() .filter(Optional::isPresent) .map(Optional::get) .findFirst() .map(message -> createValueAnnotation(SHACL.resultMessage, message)); } }
private Optional<ResultAnnotation> getMessageAnnotation() { if (query.getResultVars().contains("message")) { return Optional.of( createVariableAnnotation(SHACL.resultMessage, "message")); } else { return ImmutableList.of(shape.getMessage(),validator.getDefaultMessage()).stream() .filter(Optional::isPresent) .map(Optional::get) .findFirst() .map(message -> createValueAnnotation(SHACL.resultMessage, message)); } }
/** * Execute a query, expecting the result to be one row, one column. Return * that one RDFNode */ public static RDFNode getExactlyOne(String qs, Dataset ds) { Query q = QueryFactory.create(qs) ; if ( q.getResultVars().size() != 1 ) throw new ARQException("getExactlyOne: Must have exactly one result columns") ; String varname = q.getResultVars().get(0) ; try ( QueryExecution qExec = QueryExecutionFactory.create(q, ds) ) { return getExactlyOne(qExec, varname) ; } }
@Bean @StepScope @Autowired public LineAggregator<Binding> lineAggregator(Query query) { List<String> varNames = query.getResultVars(); LineAggregator<Binding> result = new LineAggregatorBindingToXml(varNames); return result; // return new LineAggregator<Binding>() { // @Override // public String aggregate(Binding item) { // return item.toString(); // } // }; }
public static Node extractDescribeNode(Query query) { if (!query.isDescribeType()) { throw new RuntimeException("DESCRIBE query expected. Got: [" + query.toString() + "]"); } // TODO Right now we only support describe with a single constant. //Element queryPattern = query.getQueryPattern(); if(query.getQueryPattern() != null || !query.getResultVars().isEmpty() || query.getResultURIs().size() > 1) { throw new RuntimeException("Sorry, DESCRIBE is only implemented for a single resource argument"); } Node result = query.getResultURIs().get(0); return result; }
@Override public void visitDescribeResultForm(Query query1) { check("Not both DESCRIBE queries", query2.isDescribeType()) ; check("Result variables", query1.getResultVars(), query2.getResultVars() ) ; check("Result URIs", query1.getResultURIs(), query2.getResultURIs() ) ; }
private ResultSet asResultSet(QueryIterator qIter) { Model model = null ; if ( dataset != null ) model = dataset.getDefaultModel() ; else model = ModelFactory.createDefaultModel() ; ResultSetStream rStream = new ResultSetStream(query.getResultVars(), model, qIter) ; return rStream ; }
private Optional<ResultAnnotation> getPathAnnotation() { if (query.getResultVars().contains("path")) { List<Var> vars = query.getProjectVars(); VarExprList vel = query.getProject(); return Optional.of( createVariableAnnotation(SHACL.resultPath, "path")); } else { if (shape.getPath().isPresent()) { return Optional.of( createValueAnnotation(SHACL.resultPath, shape.getPath().get().getPathAsRdf())); } } return Optional.empty(); }
private Optional<ResultAnnotation> getPathAnnotation() { if (query.getResultVars().contains("path")) { List<Var> vars = query.getProjectVars(); VarExprList vel = query.getProject(); return Optional.of( createVariableAnnotation(SHACL.resultPath, "path")); } else { if (shape.getPath().isPresent()) { return Optional.of( createValueAnnotation(SHACL.resultPath, shape.getPath().get().getPathAsRdf())); } } return Optional.empty(); }
@Override public void visitDescribeResultForm(Query query) { out.print("DESCRIBE ") ; if ( query.isQueryResultStar() ) out.print("*") ; else { appendVarList(query, out, query.getResultVars()) ; if ( query.getResultVars().size() > 0 && query.getResultURIs().size() > 0 ) out.print(" ") ; appendURIList(query, out, query.getResultURIs()) ; } out.newline() ; }
@Test public void testDoubleCount() { Query[] result = test_roundTripQuery("select (count(?s) as ?sc) (count(?p) as ?pc) { ?s ?p ?o }") ; assertEquals(2, result[1].getResultVars().size()); assertTrue(result[1].getResultVars().contains("sc")); assertTrue(result[1].getResultVars().contains("pc")); }
@Test public void testProject2() { Query[] result = test_roundTripQuery("SELECT (?x + 1 AS ?c) ?d {}"); assertEquals(2, result[1].getResultVars().size()); assertTrue(result[1].getResultVars().contains("c")); assertTrue(result[1].getResultVars().contains("d")); }
/** Find the variables needed out of this query. * If we don't do sorting in-DB, then we need the ORDER BY variables as well. * @param query */ public static List<Var> queryOutVars(Query query) { // If part query, need all variables. // Project variables List<Var> vars = toList(map(query.getResultVars().iterator(), Var::alloc)) ; // Add the ORDER BY variables List<SortCondition> orderConditions = query.getOrderBy() ; if ( orderConditions != null ) { for ( SortCondition sc : orderConditions ) { Set<Var> x = sc.getExpression().getVarsMentioned() ; for ( Var v : x ) { if ( ! vars.contains(v) ) vars.add(v) ; } } } return vars ; }
/** * * * @param pattern * a pattern of a where-clause * @param resultVar * an optional result variable (used for describe queries) * @return */ public static Query elementToQuery(Element pattern, String resultVar) { if (pattern == null) return null; Query query = new Query(); query.setQueryPattern(pattern); query.setQuerySelectType(); if (resultVar == null) { query.setQueryResultStar(true); } query.setResultVars(); if (resultVar != null) { query.getResultVars().add(resultVar); } return query; }
@Override public Iterator<JsonObject> execJsonItems() { checkNotClosed() ; if ( ! query.isJsonType() ) throw new QueryExecException("Attempt to get a JSON result from a " + labelForQuery(query)+" query") ; startQueryIterator() ; return new JsonIterator(queryIterator, query.getResultVars()) ; }
@Override public JsonArray execJson() { checkNotClosed() ; if ( ! query.isJsonType() ) throw new QueryExecException("Attempt to get a JSON result from a " + labelForQuery(query)+" query") ; startQueryIterator() ; JsonArray jsonArray = new JsonArray() ; List<String> resultVars = query.getResultVars() ; while (queryIterator.hasNext()) { Binding binding = queryIterator.next() ; JsonObject jsonObject = new JsonObject() ; for (String resultVar : resultVars) { Node n = binding.get(Var.alloc(resultVar)) ; JsonValue value = RDFTerm2Json.fromNode(n) ; jsonObject.put(resultVar, value) ; } jsonArray.add(jsonObject) ; } return jsonArray ; }