Я пишу компонент DCAT-запроса, и в идеале я смогу загрузить модель Jena с таким количеством дистрибутивов, которые доступны в каталоге (при условии, что они не отличаются представлениями одних и тех же данных, которые, по моему опыту, обычно нет).Как я могу программно определить, зарегистрирован ли парсер Jena, который может обрабатывать формат?
Но если я произвольно попытаюсь загрузить любой accessURL или downloadURL, найденный в документе DCAT, в Jena исключается исключение, поскольку данные не являются предполагаемым форматом анализатора (догадки Jena на основе типов MIME и расширений файлов) ,
Я знаю, что новые объекты парсера могут быть зарегистрированы с помощью RDFParserRegistry, на который я полагаю ссылаются во время Model.read(), но я бы хотел попробовать только Model.read(), если я знаю, что парсер зарегистрирован для чтения того документа, который я собираюсь получить. Но я не вижу способа сделать это с помощью RDFParserRegistry.
Спасибо за ваш ответ. Да, мне казалось, что сначала не нужно делать запрос http вручную, так как это все равно, что делает Йена. Наверное, я должен просто поймать исключение и двигаться дальше, если он не сработает. –
Либо вы отредактировали свой ответ, либо я все еще спал, когда читал его :). Поэтому, если была сделана запись для типа языка, RDFLanguages.contentTypeToLang должен вернуть этот зарегистрированный язык. Затем мне нужно проверить, была ли связанная с этим фабрика парсера связана с языком, поскольку язык может быть зарегистрирован, но не фабрика. Кроме того, я мог бы, возможно, просто сделать http HEAD по URL-адресу с Jena accept header, чтобы повысить производительность при запросе типа содержимого для проверки. –
Да, язык может существовать, но не иметь соответствующего анализатора – RobV