PS Try Jena 4.1.0.

There were changes relating to:

* Handing of Unicode surrogate pairs
* not being sensitive to the Unicode version supported by the Java runtime platform.

Depending on how you use the data, it may output as one or two U+FFFD ("unmappable") characters but that's an output issue.

    Andy

On 14/06/2021 15:50, Andy Seaborne wrote:
Hi Jerven,

This is java.nio.charset.MalformedInputException wrapped up. Unfortunately, the line/col aren't right because the standard Java decoder does not provide the information. It will be after the reported point in the input so slicing the front off should get you a smaller file to look at, then binary chop to find a slice containing the error.

For efficiency reasons (and it does make a notable difference), RIOT grabs large chunks of characters from the UTF-8 => java characters decoder (128K chunks). Down side - encoding errors are reported as "somewhere" and can be anywhere in the chunk.

There is a Jena tool "utf8" which more carefully translates UTF-8 - it may help pinpoint the error. It's better in 4.1.0: in 4.0.0 it got left in verbose mode - it needs a small slice of data and it may not find the error helpfully because of the different ways it can fail.

I'd be interested in knowing whether mapping to "unmappable" U+FFFD would help - but it's a silent translation so not a perfect solution.

     Andy

Is this connected with a Q today:
https://stackoverflow.com/questions/67970538/is-it-possible-to-ignore-riotparseexception-in-apache-jena

On 14/06/2021 14:59, jerven Bolleman wrote:
Dear Jena team,

I have a turtle file that fails validation with the following error.

riot --validate swisslipids.ttl
15:19:08 ERROR riot            :: [line: 5794892, col: 6 ] Bad character encoding

But I can't spot the error on that line so I did a hexdump.


sed -n '5794892p' swisslipids.ttl | hexdump -C
00000000  20 20 53 4c 4d 3a 72 61  6e 6b 20 53 4c 4d 3a 49  | SLM:rank SLM:I| 00000010  73 6f 6d 65 72 69 63 5f  53 75 62 73 70 65 63 69 |someric_Subspeci|
00000020  65 73 20 3b 0a                                    |es ;.|
00000025

Which is the same as a different earlier line which passed

sed -n '5794877p' swisslipids.ttl | hexdump -C
00000000  20 20 53 4c 4d 3a 72 61  6e 6b 20 53 4c 4d 3a 49  | SLM:rank SLM:I| 00000010  73 6f 6d 65 72 69 63 5f  53 75 62 73 70 65 63 69 |someric_Subspeci|
00000020  65 73 20 3b 0a                                    |es ;.|
00000025


The file is unfortunatly to large to attach at 29MB of xz compressed data. I would be more than happy to share it or a subset.

Riot version is 4.0.0

Regards,
Jerven

PS nearby lines with their line numbers

5794876 SLM:000501095 a owl:Class ;
5794877   SLM:rank SLM:Isomeric_Subspecies ;
5794878   rdfs:label "(12S)-hydroperoxy-(5Z,8Z,10E,14Z,17Z)-eicosapentaenoate" ;
5794879   skos:altLabel "(12S)-Hp-(5Z,8Z,10E,14Z,17Z)-EPE" ;
5794880   rdfs:subClassOf SLM:000501324 ;
5794881   chebislash:inchi "InChI=1S/C20H30O4/c1-2-3-4-5-10-13-16-19(24-23)17-14-11-8-6-7-9-12-15-18-20(21)22/h3-4,7-11,13-14,17,19,23H,2,5-6,12,15-16,18H2,1H3,(H,21,22)/p-1/b4-3-,9-7-,11-8-,13-10-,17-14+/t19-/m0/s1" ;
5794882   chebislash:inchikey "HDMYXONNVAOHFR-UOLHMMFFSA-M" ;
5794883   owl:equivalentClass
5794884  CHEBI:90772
5794885  ;
5794886   rdfs:seeAlso lipidmaps:LMFA03070012 ;
5794887   chebislash:charge "-1" ;
5794888   chebislash:smiles '''C(=C\\C\\C=C/C=C/[C@H](C/C=C\\C/C=C\\CC)OO)\\CCCC([O-])=O''' ;
5794889   SLM:citation citation:22984144 ;
5794890   chebislash:formula "C20H29O4" .
5794891 SLM:000501145 a owl:Class ;
5794892   SLM:rank SLM:Isomeric_Subspecies ;








Reply via email to