public static List<Var> buildVarList(ItemList list) { if ( list.size() > 0 && list.getFirst().isSymbol(Tags.tagVars) ) list = list.cdr() ; List<Var> vars = new ArrayList<Var>() ; for (Item x : list) { Var v = buildVar(x) ; vars.add(v) ; } return vars ; }
public static ItemList skipTag(ItemList list, String tag) { if ( list.size() > 0 ) { if ( list.get(0).isSymbol(tag) ) list = list.cdr() ; } return list ; } }
@Override public final Expr make(ItemList list) { ItemList x = list.cdr(); // drop "sum" boolean distinct = startsWithDistinct(x) ; if ( distinct ) x = x.cdr(); BuilderLib.checkLength(1, x, "Broken syntax: "+list.shortString()) ; // (sum ?var) Expr expr = buildExpr(x.get(0)) ; return make(distinct, expr) ; }
public Expr make(final ItemList list) { ItemList x = list.cdr(); // drop "count" boolean distinct = startsWithDistinct(x) ; if ( distinct ) x = x.cdr(); BuilderLib.checkLength(0, 1, x, "Broken syntax: "+list.shortString()) ; Aggregator agg = null ; if ( x.size() == 0 ) agg = AggregatorFactory.createCount(distinct) ; else { Expr expr = BuilderExpr.buildExpr(x.get(0)) ; agg = AggregatorFactory.createCountExpr(distinct, expr) ; } return new ExprAggregator((Var)null, agg) ; } };
@Override public Expr make(final ItemList list) { ItemList x = list.cdr(); // drop "count" boolean distinct = startsWithDistinct(x) ; if ( distinct ) x = x.cdr(); BuilderLib.checkLength(0, 1, x, "Broken syntax: "+list.shortString()) ; Aggregator agg = null ; if ( x.size() == 0 ) agg = AggregatorFactory.createCount(distinct) ; else { Expr expr = BuilderExpr.buildExpr(x.get(0)) ; agg = AggregatorFactory.createCountExpr(distinct, expr) ; } return new ExprAggregator(null, agg) ; } };
@Override public Op make(ItemList list) { boolean silent = false ; BuilderLib.checkLength(3, 4, list, "service") ; list = list.cdr() ; if ( list.size() == 3 ) { if ( !list.car().isSymbol() ) BuilderLib.broken(list, "Expected a keyword") ; if ( ! list.car().getSymbol().equalsIgnoreCase("SILENT") ) BuilderLib.broken(list, "Service: Expected SILENT") ; silent = true ; list = list.cdr() ; } Node service = BuilderNode.buildNode(list.car()) ; if ( ! service.isURI() && ! service.isVariable() ) BuilderLib.broken(list, "Service must provide a URI or variable") ; list = list.cdr() ; Op sub = build(list, 0) ; return new OpService(service, sub, silent) ; } } ;
public Op make(ItemList list) { boolean silent = false ; BuilderLib.checkLength(3, 4, list, "service") ; list = list.cdr() ; if ( list.size() == 3 ) { if ( !list.car().isSymbol() ) BuilderLib.broken(list, "Expected a keyword") ; if ( ! list.car().getSymbol().equalsIgnoreCase("SILENT") ) BuilderLib.broken(list, "Service: Expected SILENT") ; silent = true ; list = list.cdr() ; } Node service = BuilderNode.buildNode(list.car()) ; if ( ! service.isURI() && ! service.isVariable() ) BuilderLib.broken(list, "Service must provide a URI or variable") ; list = list.cdr() ; Op sub = build(list, 0) ; return new OpService(service, sub, silent) ; } } ;
private void init(Item stats) { if ( !stats.isTagged(STATS) ) throw new ARQException("Not a tagged '"+STATS+"'") ; ItemList list = stats.getList().cdr(); // Skip tag if ( list.car().isTagged(META) ) { // Process the meta tag. Item elt1 = list.car(); list = list.cdr(); // Move list on // Get count. Item x = Item.find(elt1.getList(), COUNT) ; if ( x != null ) count = x.getList().get(1).asInteger() ; } while (!list.isEmpty()) { Item elt = list.car() ; list = list.cdr(); onePattern(elt) ; } }
private void init(Item stats) { if ( !stats.isTagged(STATS) ) throw new ARQException("Not a tagged '"+STATS+"'") ; ItemList list = stats.getList().cdr(); // Skip tag if ( list.car().isTagged(META) ) { // Process the meta tag. Item elt1 = list.car(); list = list.cdr(); // Move list on // Get count. Item x = Item.find(elt1.getList(), COUNT) ; if ( x != null ) count = x.getList().get(1).asInteger() ; } while (!list.isEmpty()) { Item elt = list.car() ; list = list.cdr(); onePattern(elt) ; } }
@Override public Op make(ItemList list) { BuilderLib.checkLength(3, list, Tags.tagTopN) ; int N = BuilderNode.buildInt(list.get(1).getList(), 0, -1) ; ItemList conditions = list.get(1).getList().cdr() ; // Maybe tagged (asc, desc or a raw expression) List<SortCondition> x = new ArrayList<SortCondition>() ; for ( int i = 0 ; i < conditions.size() ; i++ ) { //int direction = Query.ORDER_DEFAULT ; Item item = conditions.get(i) ; SortCondition sc = scBuilder(item) ; x.add(sc) ; } Op sub = build(list, 2) ; Op op = new OpTopN(sub, N, x) ; return op ; } } ;
public static Triple buildTriple(ItemList list) { if ( list.size() != 3 && list.size() != 4 ) BuilderLib.broken(list, "Not a triple", list) ; if ( list.size() == 4 ) { if ( ! list.get(0).isSymbol(Tags.tagTriple) ) BuilderLib.broken(list, "Not a triple") ; list = list.cdr() ; } return _buildNode3(list) ; }
public static Triple buildTriple(ItemList list) { if ( list.size() != 3 && list.size() != 4 ) BuilderLib.broken(list, "Not a triple", list) ; if ( list.size() == 4 ) { if ( ! list.get(0).isSymbol(Tags.tagTriple) ) BuilderLib.broken(list, "Not a triple") ; list = list.cdr() ; } return _buildNode3(list) ; }
public static Quad buildQuad(ItemList list) { if ( list.size() != 4 && list.size() != 5 ) BuilderLib.broken(list, "Not a quad") ; if ( list.size() == 5 ) { if ( ! list.get(0).isSymbol(Tags.tagQuad) ) BuilderLib.broken(list, "Not a quad") ; list = list.cdr() ; } return _buildNode4(list) ; }
public static Quad buildQuad(ItemList list) { if ( list.size() != 4 && list.size() != 5 ) BuilderLib.broken(list, "Not a quad") ; if ( list.size() == 5 ) { if ( ! list.get(0).isSymbol(Tags.tagQuad) ) BuilderLib.broken(list, "Not a quad") ; list = list.cdr() ; } return _buildNode4(list) ; }
public Expr make(final ItemList list) { ItemList x = list.cdr(); // drop "group_concat" boolean distinct = startsWithDistinct(x) ; if ( distinct ) x = x.cdr(); // Complex syntax: // (groupConcat (separator "string) expr ) if ( x.size() == 0 ) BuilderLib.broken(list, "Broken syntax: "+list.shortString()) ; String separator = null ; if ( x.get(0).isTagged(Tags.tagSeparator)) { ItemList y = x.get(0).getList() ; BuilderLib.checkLength(2, y, "Broken syntax: "+list) ; Node n = y.get(1).getNode() ; if ( ! n.isLiteral() || n.getLiteralDatatype() != null ) BuilderLib.broken(y, "Need string for separator: "+y) ; separator = n.getLiteralLexicalForm() ; x = x.cdr(); } Expr expr = buildExpr(x.get(0)) ; Aggregator agg = AggregatorFactory.createGroupConcat(distinct, expr, separator) ; return new ExprAggregator((Var)null, agg) ; } };
public static Graph buildGraph(Graph graph, ItemList list) { if ( ! list.isEmpty() && list.get(0).isSymbol() ) { if ( list.get(0).isSymbol(Tags.tagGraph) ) list = list.cdr(); } for (Item item : list) { BuilderLib.checkList(item) ; Triple triple = buildTriple(item.getList()) ; graph.add(triple) ; } return graph ; }
public static Graph buildGraph(Graph graph, ItemList list) { if ( ! list.isEmpty() && list.get(0).isSymbol() ) { if ( list.get(0).isSymbol(Tags.tagGraph) ) list = list.cdr(); } for (Item item : list) { BuilderLib.checkList(item) ; Triple triple = buildTriple(item.getList()) ; graph.add(triple) ; } return graph ; }
public static TriplePath buildTriplePath(ItemList list) { if ( list.size() != 3 && list.size() != 4 ) BuilderLib.broken(list, "Not a triple path", list) ; if ( list.size() == 4 ) { if ( ! list.get(0).isSymbol(Tags.tagTriplePath) ) BuilderLib.broken(list, "Not a triple path") ; list = list.cdr() ; } Node s = BuilderNode.buildNode(list.get(0)) ; Path p = BuilderPath.buildPath(list.get(1)) ; Node o = BuilderNode.buildNode(list.get(2)) ; return new TriplePath(s, p, o) ; }
public static TriplePath buildTriplePath(ItemList list) { if ( list.size() != 3 && list.size() != 4 ) BuilderLib.broken(list, "Not a triple path", list) ; if ( list.size() == 4 ) { if ( ! list.get(0).isSymbol(Tags.tagTriplePath) ) BuilderLib.broken(list, "Not a triple path") ; list = list.cdr() ; } Node s = BuilderNode.buildNode(list.get(0)) ; Path p = BuilderPath.buildPath(list.get(1)) ; Node o = BuilderNode.buildNode(list.get(2)) ; return new TriplePath(s, p, o) ; }