private Node processPropFuncArg(PropFuncArg args) { if ( args.isNode() ) return args.getArg() ; // List ... List<Node> list = args.getArgList() ; if ( list.size() == 0 ) return RDF.Nodes.nil ; BasicPattern bgp = new BasicPattern() ; Node head = GraphList.listToTriples(list, bgp) ; currentGroup().addElement(process(bgp)) ; return head ; }
@Override public void visit(OpQuadPattern quadPattern) { Node graphNode = quadPattern.getGraphNode() ; if ( graphNode.equals(Quad.defaultGraphNodeGenerated) ) { currentGroup().addElement(process(quadPattern.getBasicPattern())) ; } else { startSubGroup() ; Element e = asElement(new OpBGP(quadPattern.getBasicPattern())) ; endSubGroup() ; // If not element group make it one if ( !(e instanceof ElementGroup) ) { ElementGroup g = new ElementGroup() ; g.addElement(e) ; e = g ; } Element graphElt = new ElementNamedGraph(graphNode, e) ; currentGroup().addElement(graphElt) ; } }
@Override public void visit(OpTriple opTriple) { currentGroup().addElement(process(opTriple.getTriple())) ; }
@Override public void visit(OpBGP opBGP) { currentGroup().addElement(process(opBGP.getPattern())) ; }
@Override public void visit(OpPropFunc opPropFunc) { Node s = processPropFuncArg(opPropFunc.getSubjectArgs()) ; Node o = processPropFuncArg(opPropFunc.getObjectArgs()) ; Triple t = new Triple(s, opPropFunc.getProperty(), o) ; currentGroup().addElement(process(t)) ; }