Ошибка SVC-КОДОВОЙ точки утраивает загрузку в MarkLogic

#marklogic #triples #marklogic-10

#marklogic #тройки #марклогик-10

Вопрос:

При попытке загрузить файл ntriples, содержащий около 7 миллионов троек, я получаю следующую ошибку от 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.

Комментарии:

1. хм, казалось бы, где-то есть ошибка преобразования или синтаксического анализа. Прежде чем прибегать к бинарному поиску и обработке фрагментов файла, как насчет удаления любых буквенно-цифровых символов и просмотра того, что осталось? Может быть, это раскроет персонажей, которыми он может подавиться? Или попробуйте поместить содержимое внутри XML-структуры внутри блока CDATA: <doc><![CDATA[ PUT_NTRIPLES_CONTENT_HERE ]]></doc> а затем попробуйте выполнить синтаксический анализ как XML-файл, чтобы увидеть, улучшите ли вы диагностику?

2. ошибка: FOCH0001, кодовая точка недопустима. Вызывается fn: codepoints-to-string, если входные данные содержат целое число, которое не является кодовой точкой допустимого символа XML. w3.org/TR/xpath-functions/#ERRFOCH0001

Ответ №1:

Я мог бы удалить вопрос, но если это кому-то поможет…

Преобразуйте 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
 

Комментарии:

1. Любопытно, был ли это, в конце концов, действительно плохой персонаж или просто что-то, что не понравилось MarkLogic?

2. Это был действительно плохой символ (технически два), или, если быть точным, недопустимый символ юникода. Я думаю, что он был сгенерирован не-MarkLogic утилитой при экспорте RDF. У MarkLogic не было проблем, как только я заменил два неверных символа юникода на правильный — unicode.org/emoji/charts/emoji-list.html#1f929 . Я воздержусь от комментариев по поводу смайликов в RDF, за исключением того, что это законно.