@Override public void execute( final SesameDataSet dataset, final TriplesMap map, final RMLPerformer performer, InputStream input) { try { this.map = map; String reference = getReference(map.getLogicalSource()); // Inititalize the XMLDog for processing XPath // an implementation of javax.xml.namespace.NamespaceContext // DefaultNamespaceContext dnc = new DefaultNamespaceContext(); DefaultNamespaceContext dnc = get_namespaces(); XMLDog dog = new XMLDog(dnc); // adding expression to the xpathprocessor dog.addXPath(reference); jlibs.xml.sax.dog.sniff.Event event = dog.createEvent(); // event.setXMLBuilder(new DOMBuilder()); // use XOM now event.setXMLBuilder(new XOMBuilder()); event.setListener( new InstantEvaluationListener() { // When an XPath expression matches @Override public void onNodeHit(Expression expression, NodeItem nodeItem) { Node node = (Node) nodeItem.xml; // if(!nodeItem.namespaceURI.isEmpty()) // log.info("namespace? " + nodeItem.namespaceURI); // else // log.info("no namespace."); // Let the performer do its thing performer.perform(node, dataset, map); // System.out.println("XPath: " + expression.getXPath() + " has hit: " + // node.getTextContent()); } @Override public void finishedNodeSet(Expression expression) { // System.out.println("Finished Nodeset: " + expression.getXPath()); } @Override public void onResult(Expression expression, Object result) { // this method is called only for xpaths which returns primitive result // i.e result will be one of String, Boolean, Double // System.out.println("XPath: " + expression.getXPath() + " result: " + result); } }); // Execute the streaming // dog.sniff(event, new InputSource(new FileInputStream(fileName))); dog.sniff(event, new InputSource(input)); } catch (SAXPathException ex) { Logger.getLogger(XPathProcessor.class.getName()).log(Level.SEVERE, null, ex); } catch (XPathException ex) { Logger.getLogger(XPathProcessor.class.getName()).log(Level.SEVERE, null, ex); } }