Merge branch 'parser-writer-interface' into parser-with-quads
Project: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/commit/953e9b89 Tree: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/tree/953e9b89 Diff: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/diff/953e9b89 Branch: refs/heads/master Commit: 953e9b8915fd7d42f8beac6fac8cabc39d5351e1 Parents: 7c69d4f c0700de Author: Stian Soiland-Reyes <st...@apache.org> Authored: Mon Jun 20 09:52:59 2016 +0100 Committer: Stian Soiland-Reyes <st...@apache.org> Committed: Mon Jun 20 09:52:59 2016 +0100 ---------------------------------------------------------------------- api/src/main/java/org/apache/commons/rdf/api/RDFParserBuilder.java | 2 ++ 1 file changed, 2 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/953e9b89/api/src/main/java/org/apache/commons/rdf/api/RDFParserBuilder.java ---------------------------------------------------------------------- diff --cc api/src/main/java/org/apache/commons/rdf/api/RDFParserBuilder.java index 0494502,b387406..5e8ee33 --- a/api/src/main/java/org/apache/commons/rdf/api/RDFParserBuilder.java +++ b/api/src/main/java/org/apache/commons/rdf/api/RDFParserBuilder.java @@@ -183,71 -166,13 +183,73 @@@ public interface RDFParserBuilder * @return An {@link RDFParserBuilder} that will insert triples into the * specified graph. */ - default RDFParserBuilder target(Graph graph) { - return target(graph::add); + default RDFParserBuilder target(Graph graph) { + return target(q -> { + if (! q.getGraphName().isPresent()) { + graph.add(q.asTriple()); + } + }); } + RDFParserBuilder target(Consumer<Triple> tripleConsumer); + /** + * Specify a {@link Dataset} to add parsed quads to. + * <p> + * It is undefined if any quads are added to the specified + * {@link Dataset} if {@link #parse()} throws any exceptions. + * (However implementations are free to prevent this using transaction + * mechanisms or similar). On the other hand, if {@link #parse()} + * does not indicate an exception, the + * implementation SHOULD have inserted all parsed quads + * to the specified dataset. + * <p> + * Calling this method will override any earlier targets set with + * {@link #target(Graph)}, {@link #target(Consumer)} or {@link #target(Dataset)}. + * <p> + * The default implementation of this method calls {@link #target(Consumer)} + * with a {@link Consumer} that does {@link Dataset#add(Quad)}. + * + * @param dataset + * The {@link Dataset} to add quads to. + * @return An {@link RDFParserBuilder} that will insert triples into the + * specified dataset. + */ + default RDFParserBuilder target(Dataset dataset) { + return target(dataset::add); + } + + /** + * Specify a consumer for parsed quads. + * <p> + * It is undefined if any quads are consumed if {@link #parse()} throws any + * exceptions. On the other hand, if {@link #parse()} does not indicate an + * exception, the implementation SHOULD have produced all parsed quads to + * the specified consumer. + * <p> + * Calling this method will override any earlier targets set with + * {@link #target(Graph)}, {@link #target(Consumer)} or + * {@link #target(Dataset)}. + * <p> + * The consumer is not assumed to be thread safe - only one + * {@link Consumer#accept(Object)} is delivered at a time for a given + * {@link RDFParserBuilder#parse()} call. + * <p> + * This method is typically called with a functional consumer, for example: + * <pre> + * List<Quad> quads = new ArrayList<Quad>; + * parserBuilder.target(quads::add).parse(); + * </pre> + * + * @param consumer + * A {@link Consumer} of {@link Quad}s + * @return An {@link RDFParserBuilder} that will call the consumer for into + * the specified dataset. + * @return + */ + RDFParserBuilder target(Consumer<Quad> consumer); + + /** * Specify a base IRI to use for parsing any relative IRI references. * <p> * Setting this option will override any protocol-specific base IRI (e.g.