SVC-CODEPOINT将三元组加载到MarkLogic时出错

SVC-CODEPOINT将三元组加载到MarkLogic时出错,marklogic,triples,marklogic-10,Marklogic,Triples,Marklogic 10,当尝试加载一个包含700万个三元组的ntriples文件时,我从REST-API中得到以下错误: {"errorResponse":{"statusCode":500, "status":"Internal Server Error", "messageCode":"INTERNAL ERROR", "message":"SVC-CODEPOI

当尝试加载一个包含700万个三元组的ntriples文件时,我从REST-API中得到以下错误:

{"errorResponse":{"statusCode":500, "status":"Internal Server Error", 
"messageCode":"INTERNAL ERROR", 
"message":"SVC-CODEPOINT: (err:FOCH0001) xdmp:nquad($body, $options) -- Codepoint not legal . See the MarkLogic server error log for further detail."}}
错误日志在这里没有多大帮助:

2021-01-13 14:24:53.771 Info: Status 500: SVC-CODEPOINT: (err:FOCH0001) xdmp:nquad($body, $options) -- Codepoint not legal
我已经通过rapper和Jena的riot验证运行了该文件,但这两个工具都没有发现该文件有问题,或者任何特定的三元组

如何使用MarkLogic对此进行故障排除


我可以生成一个采用不同序列化的文件,但这会让我重写代码,因为这在过去是有效的,并且在批处理中对另外两个文件有效。不同的序列化可能会起作用,或者,如果不起作用,可能会生成相同的错误。在这两种情况下,我都没有真正确定问题所在。文件中一定有东西,但我想找到它,因为我们碰巧也是ntriples的来源。

我可以删除这个问题,但如果它有助于某人

将ntriples转换为RDF/XML并加载该文件。MarkLogic将发出一条更有价值的错误消息:

2021-01-13 16:10:43.292 Info: Status 400: XDMP-DOCXMLCHAR: xdmp:get-request-body("xml") -- 
Invalid XML character codepoint 55358 at  line 14398744 -- document contains non-XML character

嗯,似乎在某个地方出现了转换或解析错误。在使用二进制搜索和处理文件块之前-删除任何字母数字字符并查看剩下的内容如何?也许这会揭示它可能会窒息的角色?或者尝试将XML结构中的内容放入CDATA块中:
,然后尝试将其作为XML文件进行解析,以查看是否获得更好的诊断?错误:FOCH0001,代码点无效。如果输入包含的整数不是有效XML字符的代码点,则由fn:codepoints引发为字符串。奇怪的是,它到底是一个真正的坏字符,还是仅仅是MarkLogic不喜欢的字符?它是一个真正的坏字符(技术上是两个),或者准确地说是一个无效的unicode字符。我认为它是在导出RDF时由非MarkLogic实用程序生成的。一旦我用正确的unicode字符替换了两个不好的unicode字符,MarkLogic就没有问题了。我将保留对RDF中表情符号的评论,除非说它是合法的。