Our use case is round-tripping, so after I solved reading I moved on to writing (and started a new thread).
What I probably haven't made clear is that there is no intermediate data structure holding the form data. It is being read directly into a Model just like any other RDF format, using application/x-www-form-urlencoded media type and RDF/POST encoding: http://www.lsrn.org/semweb/rdfpost.html Could you give an example of how you see ParserProfile being used here? On Wed, Jul 27, 2016 at 9:49 AM, Andy Seaborne <a...@apache.org> wrote: > On 26/07/16 22:06, Martynas Jusevičius wrote: >> >> OK. But how do you handle invalid URI input without turning the checking >> off? > > > That's what ParserProfile is for. It provides the policy for string from > the token in parsing to IRI. > >> And without reading and then writing the Model? Where the user >> provides URIs manually, e.g. as a form input for SPARQL endpoint URI. > > > Until now, this has been about reading now writing RDF. > > You could use a ParserProfile for the form input or at least whatever code > is used for makeIRI. > > Andy > > >> >> On Tue, 26 Jul 2016 at 20:27, Andy Seaborne <a...@apache.org> wrote: >> >>> On 26/07/16 16:14, Martynas Jusevičius wrote: >>>> >>>> But the assumption obviously doesn't hold? Illegal Models exist >>>> because they can be parsed. >>> >>> >>> No - because someone turned the checking off or created them them with >>> code, not a parser. >>> >>>> Wouldn't it make sense for the Writers check URIs just like the >>>> Readers do? URI validity does not depend on syntax, does it? >>> >>> >>> Checking URIs is expensive. Sometimes it matters (NTriples, NQuads). >>> >>> To check them, process the model first which is something possible for >>> writers and not for readers. >>> >>> The rules for different syntaxes are different anyway - RDF/XMl has >>> special rules for properties. >>> >>> > What do you mean with "keep the original user input"? >>> You said: >>> [[ >>> If the user provided invalid >>> URI values, they need to be presented back to the user with an error >>> message, giving him/her a chance to correct the errors. >>> ]] >>> >>> Andy >>> >>>> >>>> On Tue, Jul 26, 2016 at 11:32 AM, Andy Seaborne <a...@apache.org> wrote: >>>>> >>>>> On 26/07/16 10:23, Martynas Jusevičius wrote: >>>>>> >>>>>> >>>>>> Andy, >>>>>> >>>>>> "allowBadURIs" was my next move, I will try that later today and >>>>>> report >>>>>> back. >>>>>> >>>>>> Any reason why this cannot be exposed uniformly on the WriterRIOT >>>>>> level? Like it is on ReaderRIOT. >>>>> >>>>> >>>>> >>>>> RDF/XML is the only case that checks IIRC. >>>>> >>>>> Writers output what they can. They assume the model is legal RDF and >>>>> do >>>>> their best. There is a myriad of "illegal RDF" cases and what they can >>> >>> and >>>>> >>>>> can't write depends on the syntax. >>>>> >>>>> If you want to round trip user input - why not keep the original user >>> >>> input? >>>>> >>>>> >>>>> Andy >>>>> >>>>> >>>>>> >>>>>> On Tue, Jul 26, 2016 at 11:15 AM, Andy Seaborne <a...@apache.org> >>> >>> wrote: >>>>>>> >>>>>>> >>>>>>> Turtle-class syntaxes print bad URIs. >>>>>>> >>>>>>> For RDF/XML, does setting "allowBadURIs" work? >>>>>>> >>>>>>> >>>>>>> >>> >>> https://jena.apache.org/documentation/io/rdfxml_howto.html#advanced-rdfxml-output >>>>>>> >>>>>>> >>>>>>> Andy >>>>>>> >>>>>>> >>>>>>> On 26/07/16 09:34, Martynas Jusevičius wrote: >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> RDF/XML (plain) in this case. I would of course prefer a >>>>>>>> format-agnostic solution. >>>>>>>> >>>>>>>> On Tue, Jul 26, 2016 at 10:21 AM, Andy Seaborne <a...@apache.org> >>> >>> wrote: >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Which serialization format are you working with? >>>>>>>>> >>>>>>>>> Andy >>>>>>>>> >>>>>>>>> >>>>>>>>> On 25/07/16 22:44, Martynas Jusevičius wrote: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Hey, >>>>>>>>>> >>>>>>>>>> I was planning to set an ErrorHandler on WriterGraphRIOT instance, >>> >>> but >>>>>>>>>> >>>>>>>>>> it turns such setter does not exist. >>>>>>>>>> >>>>>>>>>> My ErrorHandler allows invalid URIs to be read without throwing >>>>>>>>>> exceptions. However model.write() throws BadURIException when >>> >>> writing >>>>>>>>>> >>>>>>>>>> them. So round-tripping such Model currently does not work. How do >>> >>> I >>>>>>>>>> >>>>>>>>>> handler writer errors? >>>>>>>>>> >>>>>>>>>> I think it would make sense to reuse the error handler between >>>>>>>>>> RIOT >>>>>>>>>> readers and writers. >>>>>>>>>> For example, if it is set to strict, both throw exceptions on >>> >>> invalid >>>>>>>>>> >>>>>>>>>> URIs. >>>>>>>>>> If it is set to lax, invalid URIs are allowed during both during >>>>>>>>>> parsing and writing. >>>>>>>>>> That would make round-tripping easy. >>>>>>>>>> >>>>>>>>>> Martynas >>>>>>>>>> atomgraph.com >>>>>>>>>> >>>>>>>>> >>>>>>> >>>>> >>> >>> >> >