Исключение Apache Jena RIOT при загрузке внешнего RDF или файла черепахи

Я пытаюсь загрузить внешний словарь (http://purl.org/eis/vocab/daq#) - этот словарь имеет допустимый синтаксис, может быть разыменован и имеет сериализацию как RDF / XML, так и TURTLE - однако с использованием RDFDataMgr я получаю исключение RIOTException:

org.apache.jena.riot.RiotException: [line: 23, col: 1 ] Broken token (newline): The Dataset Quality Vocabulary (daQ) is a lightweight, extensible core vocabulary for attaching the result of quality benchmarking of a linked open 

Это исключение возникает только тогда, когда я пытаюсь загрузить его извне. Загрузка работает, когда я использую свою локальную копию словаря. Я использовал версию Jena 2.11.1, но вчера я обновил код до последней версии 3.3.0, но у меня все еще было то же исключение. Я думаю, что это может быть проблема, связанная с тем, как механика Jena и внешние библиотеки читают нелокальные источники. Есть ли у кого-нибудь идеи, как это можно исправить?

Спасибо Джереми


person jerdeb    schedule 12.07.2017    source источник


Ответы (1)


Конечная точка возвращает черепаху с нарушенным синтаксисом и недопустимым синтаксисом. В строке вокруг строки 23 есть необработанные символы новой строки. Замените кавычками "" "или исправьте данные.

RDF / XML в порядке.

Используйте RDFParser для создания процесса синтаксического анализатора, который устанавливает заголовок «accept» на «application / rdf + xml». По умолчанию RDFDataMgr предпочитает Черепаху.

person AndyS    schedule 12.07.2017
comment
Но если использовать RDFParser, тогда мне нужно будет передавать данные в потоковом режиме для построения модели, верно? Есть ли способ заставить RDFDataMgr принимать, например, rdf + xml? Я думал, что RDFDataMgr.loadModel (someuri, Lang.RDFXML) делает это - person jerdeb; 12.07.2017
comment
RDFDataMgr использует сам RDFParser. StreamRDFLib.graph(model.getGraph()) создаст место назначения для синтаксического анализа, например, для модели. RDFDataMgritself не имеет функции для установки заголовка (который находится в WebContent.defaultRDFAcceptHeader); это удобная библиотека поверх основного оборудования. Черепаха предпочтительнее, потому что она быстрее и надежнее. Jena мало что может сделать автоматически и безопасно в случае неверных данных (часто из-за ошибок передачи). - person AndyS; 13.07.2017