Isn't there a way to do this uniformly, for any Reader? That would be much preferred.
I think I might be able to do what I need with a custom ErrorHandler. The downside is that it exposes only error message, and not the raw URI value. Couldn't the violations be passed to Model and then exposed as List<Violation> getParseViolations() or smth? That is probably not clean from the abstraction point of view, but where Model is the only contract, passing other information along gets complicated. On Sun, Jul 24, 2016 at 7:56 PM, Andy Seaborne <a...@apache.org> wrote: > On 24/07/16 10:35, Martynas Jusevičius wrote: >> >> Let me put it that way: can I successfully parse a Model with invalid URI >> values and also get a report saying which values were invalid and why? So >> that it could be presented to the user as error messages. > > > ParserProfile is closer to the parsing process (not for RDF/XML for JSON-LD) > > It is ParserProfileChecker that does the URI checking and error reporting. > > URI nodes are made by a FactoryRDF in ParserProfileBase. It has the string > and the line/column information. > > You'll need to look at makeIRI/resolveIRI as well (used in prefix handling). > > For RDF/XML see LangRDFXML.HandlerSink > > For JSON-LD is is hard to get the line/colun because the parser does all > JSON parsing, forms an intermediate form then hands it over to RIOT. > > Andy > > >> >> On Sat, 23 Jul 2016 at 01:37, Martynas Jusevičius <marty...@graphity.org> >> wrote: >> >>> Is it possible to let the Model parse silently and afterwards somehow >>> retrieve org.apache.jena.iri.Violation instances from the >>> ErrorHandler? >>> >>> Currently I'm implementing a custom ErrorHandler that would collect >>> violations instead of logging them. But ErrorHandler only provides >>> String message, long line, long col and doesn't know which IRI value >>> caused the violation (which I would like to get). >>> >>> On Fri, Jul 8, 2016 at 11:28 PM, Andy Seaborne <a...@apache.org> wrote: >>>> >>>> On 08/07/16 18:57, A. Soroka wrote: >>>>> >>>>> >>>>> This may or may not be close to what you are looking for, but you might >>>>> try something like oaj.riot.RDFDataMgr::parse with a wrapper around >>>>> oaj.riot.system.StreamRDFLib::graph. You can subclass >>>>> oaj.riot.system.StreamRDFWrapper for that. Then you have tuple-level >>> >>> control >>>>> >>>>> over the process and can throw exceptions or execute side-effects as >>>>> desired. >>>>> >>>>> --- >>>>> A. Soroka >>>>> The University of Virginia Library >>>>> >>>>>> On Jul 8, 2016, at 1:46 PM, Martynas Jusevičius <marty...@graphity.org >>>> >>>> >>>>>> wrote: >>>>>> >>>>>> Hey, >>>>>> >>>>>> I have implemented an RDF/POST parser which extends ReaderRIOTBase: >>>>>> >>>>>> >>> >>> https://github.com/AtomGraph/Core/blob/master/src/main/java/org/graphity/core/riot/lang/RDFPostReader.java >>>>>> >>>>>> >>>>>> It silently accepts broken URIs, so I want the behavior to depend on >>>>>> ParserProfile, and throw exceptions in case of strict error handler. >>>>>> >>>>>> I'm reading Model using Model.read(InputStream in, String base, String >>>>>> lang), so the question is: how do I set the (strict) error handler >>>>>> before reading it? >>>> >>>> >>>> >>>> Model.read does not expose >>>> >>>> See ExRIOT_2 which sets the ErrorHandler. >>>> >>>> >>> >>> https://github.com/apache/jena/blob/master/jena-arq/src-examples/arq/examples/riot/ExRIOT_2.java >>>> >>>> >>>> Create a ReaderRIOT, set the error handler. >>>> >>>> See also: >>>> ErrorHandlerFactory.setDefaultErrorHandler >>>> >>>> Or, for specifically IRIs, you might want to use ParserProfileBase or a >>>> derivative rather than ParserProfileChecker >>>> >>>> >>>>>> >>>>>> Also, what is the difference/connection between ErrorHandler and >>>>>> RDFErrorHandler? >>>>>> >>>>>> >>> >>> https://jena.apache.org/documentation/javadoc/arq/org/apache/jena/riot/system/ErrorHandler.html >>>>>> >>>>>> >>>>>> >>> >>> https://jena.apache.org/documentation/javadoc/jena/org/apache/jena/rdf/model/RDFErrorHandler.html >>>> >>>> >>>> >>>> RDFErrorHandler is used the ARP, for RDF/XML parsing. >>>> >>>> It is adapted to ErrorHandler by RIOT. >>>> >>>>>> >>>>>> Thanks, >>>>>> >>>>>> Martynas >>>>>> atomgraph.com >>>>> >>>>> >>>>> >>>> >>> >> >