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.