GitHub user HansBrende opened a pull request:

    https://github.com/apache/any23/pull/122

    ANY23-396 allow mapping/filtering TripleHandlers in Rover

    Here is one possible alternative to the existing PR for ANY23-396.
    
    **Pros:**
    
    1. Fully backwards compatible
    2. Extends `WriterFactory` with new `DelegatingWriterFactory` interface, 
which, rather than writing a `TripleHandler` to an output stream, writes a 
`TripleHandler` to another `TripleHandler`. This will allow users to produce a 
final domain-specific RDF graph of their choosing in Rover by implementing 
mapping/filtering `DelegatingWriterFactory` implementations. 
    3. the `--format` flag in rover now represents a list of WriterFactory ids, 
rather than a single WriterFactory id. Each id in the list is composed with the 
one previous to it to construct the final `TripleHandler`. All writers in the 
list, except the last, are required to implement `DelegatingTripleHandler`.
    
    **Cons:** 
    1. this solution requires deprecating 3 methods in the `WriterFactory` 
interface (and then un-deprecating them in the extending `FormatWriterFactory` 
interface.) However, this drawback does not affect backwards compatibility. 
    
    ## ALTERNATIVE
    
    In order to avoid the single "con" I have listed, the alternative to this 
solution would be, rather than extending the `WriterFactory` interface with 
`DelegatingWriterFactory`, to keep these two interfaces completely separate and 
define a new `DelegatingWriterFactoryRegistry` (analogous to the 
`WriterFactoryRegistry`) with a different `ServiceLoader` in order to load 
`DelegatingWriterFactory` implementations.
    
    @jgrzebyta @lewismc Thoughts? 

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/HansBrende/any23 ANY23-396

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/any23/pull/122.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #122
    
----
commit cb293e22b9352652d91474cd3e35233e75dc9fb9
Author: Hans <firedrake93@...>
Date:   2018-09-14T15:29:33Z

    ANY23-396 allow mapping/filtering TripleHandlers in Rover

----


---

Reply via email to