public static List<Node> members(GNode gnode) { List<Node> x = new ArrayList<>() ; members(gnode, x) ; return x ; }
private QueryIterator members(Binding binding, Node listNode, Var itemVar, ExecutionContext execCxt) { List<Node> members = GraphList.members(new GNode(execCxt.getActiveGraph(), listNode)) ; return new QueryIterExtendByVar(binding, itemVar, members.iterator(), execCxt) ; }
/** Format:: access:entry ("user1" <http://host/graphname1> <http://host/graphname2> ) ; */ private void parseList(Multimap<String, Node> map, Resource root, GNode entry) { List<Node> members = GraphList.members(entry); // string, then URIs. if ( members.isEmpty() ) throw new AssemblerException(root, "Found access:entry with an empty list"); Node userNode = members.get(0); if ( ! Util.isSimpleString(userNode) ) throw new AssemblerException(root, "User name is not a string: "+NodeFmtLib.str(userNode)); String user = userNode.getLiteralLexicalForm(); List<Node> graphs = members.subList(1, members.size()); accessEntries(root, map, user, graphs); }
private static QueryIterator findIndexMember(Graph graph, Binding binding, Node listNode, Var varIndex, Var varMember, ExecutionContext execCxt) { // Iterate over list List<Node> members = GraphList.members(new GNode(graph, listNode)) ; List<Binding> bindings = new ArrayList<>() ; for ( int i = 0 ; i < members.size() ; i++ ) { Node idx = NodeFactoryExtra.intToNode(i) ; Node member = members.get(i) ; BindingMap b = BindingFactory.create(binding) ; b.add(varIndex, idx) ; b.add(varMember, member) ; bindings.add(b) ; } return new QueryIterPlainWrapper(bindings.iterator(), execCxt) ; } }
private static PropertyFunctionInstance magicProperty(Context context, Triple pfTriple, BasicPattern triples) { List<Triple> listTriples = new ArrayList<>() ; GNode sGNode = new GNode(triples, pfTriple.getSubject()) ; GNode oGNode = new GNode(triples, pfTriple.getObject()) ; List<Node> sList = null ; List<Node> oList = null ; if ( GraphList.isListNode(sGNode) ) { sList = GraphList.members(sGNode) ; GraphList.allTriples(sGNode, listTriples) ; } if ( GraphList.isListNode(oGNode) ) { oList = GraphList.members(oGNode) ; GraphList.allTriples(oGNode, listTriples) ; } PropFuncArg subjArgs = new PropFuncArg(sList, pfTriple.getSubject()) ; PropFuncArg objArgs = new PropFuncArg(oList, pfTriple.getObject()) ; // Confuses single arg with a list of one. PropertyFunctionInstance pfi = new PropertyFunctionInstance(subjArgs, pfTriple.getPredicate(), objArgs) ; triples.getList().removeAll(listTriples) ; return pfi ; }
/** Calculate ?s list:member ?o as if it were a graph.find */ public static Iterator<Triple> listMember(Graph graph, final Node s, Node o) { if ( isAny(s) ) { Set<Node> x = findAllLists(graph) ; IteratorConcat<Triple> iterConcat = new IteratorConcat<>() ; for ( Node s2 : x ) { Iterator<Triple> iter = listMember(graph, s2, o) ; if ( iter.hasNext() ) iterConcat.add(iter); } return iterConcat ; } GNode gn = new GNode(graph, s) ; if ( ! isAny(o) ) { if ( contains(gn, o) ) return Iter.singleton(Triple.create(s, ListPFunction.nListMember, o)) ; else return Iter.nullIterator() ; } List<Node> x = members(gn) ; return Iter.map(x.iterator(), t -> Triple.create(s, ListPFunction.nListMember, t)) ; }