On 2018/08/03 12:44:25, Andy Seaborne <[email protected]> wrote: 
> Extend StreamRDFWrapper and call super.triple() otherwise the data will 
> not flow down the pipeline.  There are prefixes as well and quads if the 
> input is trig etc.
> 
>   @Override
>   public void triple(Triple triple) {
>     ... process triple ... create newTriple ...
>     super.triple(newTriple);
> }
> 
>      Andy
> 
> 
> On 03/08/18 12:53, ajs6f wrote:
> >> Since I want triple processing...is extending the StreamRDFBase and 
> >> overriding the method `public void triple(Triple triple)` an option? Is it 
> >> the best option?
> > 
> > That's a reasonable option, or try StreamRDFWrapper [1] and override where 
> > appropriate. Keep in mind that triple-level processing can occur well after 
> > parsing, if that's what makes sense for your application; although you 
> > won't have the advantages of streaming, you will have random-access to the 
> > rest of your data.
> > 
> > ajs6f
> > 
> > [1] 
> > https://jena.apache.org/documentation/javadoc/arq/org/apache/jena/riot/system/StreamRDFWrapper.html
> > 
> >> On Aug 3, 2018, at 7:33 AM, [email protected] wrote:
> >>
> >>
> >>
> >> On 2018/08/03 10:10:34, Andy Seaborne <[email protected]> wrote:
> >>>
> >>>
> >>> On 02/08/18 22:17, [email protected] wrote:
> >>>> I'm converting a JSON-LD input to RDF using Jena:
> >>>>
> >>>> Model m = ModelFactory.createDefaultModel;
> >>>> String str_reader = new StringReader(json.noSpaces)
> >>>> RDFDataMgr.read(m, str_reader, "", RDFFormat.JSONLD.getLang)
> >>>                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >>> Lang.JSONLD
> >>>
> >>>> I want to be able to have a custom serializer for String Literals. My 
> >>>> end goal is to convert a plain String literal to a xsd:date or 
> >>>> xsd:dateTime Literal whenever a desired format is found.
> >>>
> >>> Look at StreamRDF and RDFDataMgr.parse
> >>> (or build your parser for more control with RDFParser.create())
> >>>
> >>> All parsers send their output to a output to a StreamRDF.
> >>>
> >>> RDFDataMgr.read uses a StreamRDF that puts triples/quads into a graph.
> >>>
> >>>
> >>> StreamRDFs combine so you can build a pipeline
> >>>
> >>> Parser -> convert strings -> store in graph.
> >>>
> >>> Streams as well so works for large data if the syntax streams (JSON-LD
> >>> does not).
> >>>
> >>>> I know this is handled by jsonld-java which in turn relies on jackson. 
> >>>> Is there anyone who can give me a hint on how to add this type of custom 
> >>>> serialization?
> >>>
> >>> Jackson is the JSON parser.
> >>>
> >>> jsonld-java is the JSON-LD algorithms.
> >>>
> >>> What you seem to want is triple processing and be syntax agnostic.
> >>>
> >>>      Andy
> >>>
> >> Thanks for your reply. That's informative. I see that I can use 
> >> RDFParser.create() to customize the StreamRDF (using 
> >> RDFParser.create().parse(stream)).
> >>
> >> Since I want triple processing...is extending the StreamRDFBase and 
> >> overriding the method `public void triple(Triple triple)` an option? Is it 
> >> the best option?
> > 
> That's exactly what I did. Thanks for the clear answers. It has been very 
> helpful.

Reply via email to