@Override public boolean contains(Triple t) { return base.contains(t); }
/** * Instantiates a new sparql construct function. * * @param conf the graph with dataflow definition * @param confRoot the specific node in the graph representing the producer configuration * @param map the map to access the other defined producers * @see RDFProducer */ public SparqlConstructFunction(Graph conf, Node confRoot, final ProducerMap map) { URI baseURI = URI.create(confRoot.getURI()); Node inputNode = GraphUtils.getSingleValueOptProperty(conf, confRoot, DF.input.asNode()); inputProducer = (inputNode != null) ? map.getProducer(inputNode) : EmptyGraphProducer.getInstance(); Node queryAsInputNode = NodeFactory.createURI(baseURI.resolve("#query").toString()); Node queryNode = GraphUtils.getSingleValueOptProperty(conf, confRoot, DF.configTxt.asNode()); String queryTxt = (queryNode != null) ? queryNode.getLiteralLexicalForm() : null; Node configNode = GraphUtils.getSingleValueOptProperty(conf, confRoot, DF.config.asNode()); RDFProducer configProducer = (configNode != null) ? map.getProducer(configNode) : null; Node configRootNode = GraphUtils.getSingleValueOptProperty(conf, confRoot, DF.configRoot.asNode()); if (configRootNode == null) configRootNode = configNode; if (configRootNode == null && inputNode != null) { Iterator<Node> namedInputNodes = GraphUtils.getPropertyValues(conf, inputNode, DF.namedInput.asNode()); while (namedInputNodes.hasNext()) { Node namedInputNode = namedInputNodes.next(); if (conf.contains(namedInputNode, DF.id.asNode(), queryAsInputNode)) { configRootNode = GraphUtils.getSingleValueProperty(conf, namedInputNode, DF.input.asNode()); break; } } } // String configRootURI = (configRootNode != null && configRootNode.isURI()) ? // configRootNode.getURI() : null; queryProducer = new CoalesceQueryProducer( new GraphQueryProducer( new CoalesceGraphProducer( configProducer, new SelectGraphProducer(inputProducer, queryAsInputNode)), configRootNode /*NodeFactory.createURI(baseURI.resolve("").toString())*/), new StringQueryProducer(queryTxt, baseURI.toString())); // final Model confModel = ModelFactory.createModelForGraph(conf); // Resource constructResource = // confModel // .getRDFNode(confRoot) // .asResource() // .getPropertyResourceValue(SPINX.config); // Iterator<Producer> fromGraphProds = // confModel // .getRDFNode(confRoot) // .asResource() // .listProperties(SPINX.from) // .mapWith(new Map1<Statement, Producer>() { // @Override // public Producer map1(Statement stmt) { // return map.getProducer(stmt.getObject().asNode()); // } // }); // defaultProd = null; // if (!fromGraphProds.hasNext()) { // defaultProd = EmptyGraphProducer.getInstance(); // } else { // defaultProd = fromGraphProds.next(); // if (fromGraphProds.hasNext()) { // defaultProd = // new UnionFunction( // new ConcatenatedIterator<Producer>( // new SingletonIterator<Producer>(defaultProd), // fromGraphProds)); // } // } // Iterator<Node> fromNamedGraphNames = // confModel // .getRDFNode(confRoot) // .asResource() // .listProperties(SPINX.fromNamed) // .mapWith(new Map1<Statement, Node>() { // @Override // public Node map1(Statement stmt) { // return stmt.getObject().asNode(); // } // }); // while (fromNamedGraphNames.hasNext()) { // Node graphNames = fromNamedGraphNames.next(); // prodMap.put(graphNames, map.getProducer(graphNames)); // } // query = QueryFactory.toQuery(conf, constructResource.asNode()); // if (query == null) // throw new RuntimeException("Parsing Error"); /* // debug Graph revEnginedGraph = SpinxFactory.fromQuery(query); System.out.println(); System.out.println("**********************************"); System.out.println("*** Reverse Engine query graph ***"); System.out.println("**********************************"); ModelFactory.createModelForGraph(revEnginedGraph).write(System.out,"N3"); System.out.println("**********************************"); System.out.println(); */ /* SPINFactory.asExpression(constructResource); query = ARQFactory.get().createQuery(SPINFactory.asQuery(constructResource)); */ /* Iterator<String> graphUris = new ConcatenatedIterator<String>( query.getGraphURIs().iterator(), query.getNamedGraphURIs().iterator()); while (graphUris.hasNext()) { Node node = confModel.getResource(graphUris.next()).asNode(); prodMap.put(node, (GraphProducer) map.getProducer(node)); } */ }
@Override public boolean contains(Node s, Node p, Node o) { return base.contains(s, p, o); }