Hey Andy, Sorry for the delay in responding.
It appears that we were using the assembly plugin, I've been able to switch to the shade plugin and it seems to have resolved the issue.
Thanks for the help. cheers, jared On 2022-08-04 3:56 p.m., Andy Seaborne wrote:
On 04/08/2022 20:00, Jared Whiklo wrote:Alright, that is good to know. Thank you very much, I was able to make a simple exchange - triples.write(output, Lang.NTRIPLES.getName()); + NTriplesWriter.write(output, triples.getGraph().find());triples.write(output, Lang.NTRIPLES.getName()); should work ... if Jena has been repackaged correctly (e.g. shading) Try RDFDataMgr.write(output, model, Lang.NTRIPLES); Andyand it works correctly. I'll make note to check anywhere else we are outputting triples.cheers, jared On 2022-08-04 1:07 p.m., Andy Seaborne wrote:On 03/08/2022 21:13, Jared Whiklo wrote:Sorry I forgot to also say we are using Jena 4.2.0NTripleWriter in jena-core is not the usual N-Triples writer. It is old, legacy Yes, it could be fixed but if the problem is what I think it is, there are going to be other problems.Normally, NTriplesWriter in org.apache.jena.riot.writer is the output code.And you must have RIOT on the classpath because you use "Lang" so ...has Jena been repackaged? If so, then the Java ServiceLoader files need to be combined.https://jena.apache.org/documentation/notes/jena-repack.html This calls both old and current: "D.rdf" is the RDF/XML from your first message. public static void main(String...args) { final var model = ModelFactory.createDefaultModel(); try (final var is = IO.openFileBuffered("D.rdf") ) { RDFDataMgr.read(model, is, Lang.RDFXML); } catch (IOException e) { e.printStackTrace(); return; } // Wrong writer new org.apache.jena.rdf.model.impl.NTripleWriter() .write(model, System.out, null); System.out.println("----"); // Correct new org.apache.jena.riot.writer.NTriplesWriter() .write(System.out, model.getGraph(), null, null, null); //model.write(System.out, Lang.NTRIPLES.getName()); } AndyOn 2022-08-03 2:54 p.m., Jared Whiklo wrote:Hi Andy,This problem is being encountered in https://github.com/fcrepo-exts/migration-utilsThe code we are using is reading in an RDF-XML file and then serializing to N-Triples. So an example input is<rdf:RDF xmlns:METS="http://www.loc.gov/METS/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><rdf:Description rdf:about="info:fedora/example:11"><cc:useGuidelines xmlns:cc="http://web.resource.org/cc/" xml:lang="en">This resource is free of copyright restrictions and is published under the Public Domain Mark 1.0.</cc:useGuidelines></rdf:Description> </rdf:RDF> And the output of the above is<info:fedora/example:11> <http://web.resource.org/cc/useGuidelines> "This resource is free of copyright restrictions and is published under the Public Domain Mark 1.0."@en^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#langString> .We read in the rdfXml here: https://github.com/fcrepo-exts/migration-utils/blob/3a794b504ca04016e0ee91b0f17e88d152b0bfd5/src/main/java/org/fcrepo/migration/handlers/ocfl/ArchiveGroupHandler.java#L873-L883And serialize it out here: https://github.com/fcrepo-exts/migration-utils/blob/3a794b504ca04016e0ee91b0f17e88d152b0bfd5/src/main/java/org/fcrepo/migration/handlers/ocfl/ArchiveGroupHandler.java#L947-L961I realize that is fair from transparent.From what I can discern I think the problem is here https://github.com/apache/jena/blob/31dc0d328c4858401e5d3fa99702c97eba0383a0/jena-core/src/main/java/org/apache/jena/rdf/model/impl/NTripleWriter.java#L198-L203It seems like it should print either the "@lang" OR the "^^<datatypeURI>" but not both.If it would help I could try and make a much smaller proof-of-concept code.cheers, jared On 2022-08-03 2:11 p.m., Andy Seaborne wrote:Hi Jared, On 03/08/2022 18:35, Jared Whiklo wrote:Hi,We are experiencing an issue where N-Triples produced by Jena cannot be parsed by Jena. The issue seems to be how the Model outputs a literal likeexample:123 @cc:useGuidelines "This is some text."@en;Model.toString isn't supposed to be RDF syntax. Which version of Jena are you using?Do you have an an example N-Triples file? Or short code that creates the statement?AndyIt stores this triple properly (or seems to in the graph) but when serialized as N-Triples it has both a datatypeUri and a langString and so prints out.<example:123> <http://web.resource.org/cc/useGuidelines> "This is some text."@en^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#langString> .My understanding is that you can _either_ have a language or a datatype but not both. We'd like to retain the language as that seems more important that "langString".I am unable to see how to alter the LiteralImpl to get a plain literal output instead of a typed one?Any help is appreciated. cheers, jared
-- Jared Whiklo [email protected]
OpenPGP_signature
Description: OpenPGP digital signature
