[ https://issues.apache.org/jira/browse/JENA-1634?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16689538#comment-16689538 ]
Andy Seaborne commented on JENA-1634: ------------------------------------- {{RDFWriterRegistry}} holds all the registered writers; {{StreamRDFWriter}} gives a stronger guarantee about a subset of these - that the output streams. The default RDFFormat for RDF/XML does not stream; RDFFormat.RDFXML_PLAIN does. {{RDFDataMgr}} uses {{RDFWriterRegistry}}. If you want a fallback, then check with {{StreamRDFWriter.registered}} and if it returns null, use {{RDFWriterRegistry}}. Or just lookup in {{RDFWriterRegistry}}. For a streaming format, like RDFFormat.TURTLE_BLOCKS, you will get a streaming writer (in fact the same writer code). See {{ModLangOutput}} and how it handles {{argOutput}}. On reading all RDF formats stream. > StreamRDFWriter doesn't work with Lang or RDFFormat default instances. > ---------------------------------------------------------------------- > > Key: JENA-1634 > URL: https://issues.apache.org/jira/browse/JENA-1634 > Project: Apache Jena > Issue Type: New Feature > Components: RIOT > Affects Versions: Jena 3.9.0 > Reporter: Marco Brandizi > Priority: Major > > I have [some > code|https://github.com/Rothamsted/ondex-knet-builder/blob/master/modules/rdf-export-2/src/main/java/net/sourceforge/ondex/rdf/export/RDFFileExporter.java] > that writes RDF to a file, starting from a Model. This is invoked many times > over the same FileOutput stream, by many threads that are producing RDF in > parallel. > The output type can be selected by the invoker, by passing Lang or RDFFormat > instances. Because of the way it works, that output will be > RDFFormat.TURTLE_BLOCKS most of times. However, there might be cases of small > output, where the user might want to send in formats like Lang.RDFXML. > Now, the problem is in the latter case the StreamRDFWriter.getWriterStream() > doesn't work. I've isolated the issue > [here|https://github.com/marco-brandizi/jena-stream-writer-issue/blob/master/src/test/java/info/marcobrandizi/rdf/test/JenaWritersTest.java]: > I get messages like _"No serialization for language Lang:RDF/XML"_ and, > looking at the sources, it seems that StreamRDFWriter recognises only > Lang/RDFFormat instances set in its own registry. > The same languages/variants work fine when I use the RDFDataMgr approach. > This makes me guess/hope that data manager is able to work in a stream > fashion, when the received RDF variants supports it. > Whatever it is, I think this is wrong, or at least should be documented > better, in particular, the documentation should say what to do in a situation > like mine, where it's not known in advance if we're going to deal with > streaming or not. Ideally, StreamRDFWriter should fallback to non-streaming, > or trigger a specific exception when dealing with a streaming-incompatible > format, so that the invoker can take fallback actions. > I'm using the whole apache-jena-libs as Jena dependency. > I suppose this applies to reading too. -- This message was sent by Atlassian JIRA (v7.6.3#76005)