ресурс переименования apache jena не проверяет префикс

Я пытаюсь изменить URI ресурса в модели. Я использую ResourceUtils.renameResource он работает, но когда я сохраняю модель в файл, новый URI расширяется (имеет форму <http://prefix.com/resource> вместо prefix:resource) даже правда есть приставка в модели (@prefix prefix: <http://prefix.com/>). Есть ли способ заставить Jena использовать префикс при замене URI ресурса или метод обновления модели, перезаписывая каждый URI, используя короткую версию с «prefix:», когда это возможно?


person Giuseppedes    schedule 29.05.2017    source источник
comment
RDF работает с абсолютными URI - префиксы только перед внешним видом поверхности. Внутри Jena работает с абсолютными URI, а не с префиксными именами. Префиксы расширяются при чтении и используются для сокращения при записи (если возможно - не все URI можно сокращать - и это зависит от синтаксиса).   -  person AndyS    schedule 29.05.2017
comment
Покажите, как вы пишете модель и как на самом деле выглядят данные. Детали имеют значение!   -  person AndyS    schedule 29.05.2017
comment
когда я пишу модель, которую использую: Model model = ModelFactory.createDefaultModel(); чем model.setNsPrefix(PREFIX, NAMESPACE); и когда я добавляю ресурс: Resource res = model.createResource(NAMESPACE + RESOURCE_ID); res.addProperty(someProperty, someObject); Если я печатаю модель в файле, res записывается как prefix: resId, но когда я использую ResourceUtils.renameResource(res, NAMESPACE + NEW_ID); Когда я печатаю модель в файле, res расширяется. Я знаю, что jena работает с расширенным URI, но я бы хотел использовать префикс: чтобы сделать файл более читабельным.   -  person Giuseppedes    schedule 31.05.2017
comment
Я забыл сказать, что я создаю модель в экземпляре службы сервлета, затем я читаю модель и переименовываю ресурс другой веб-службой, возможно, проблема в том, что ResourceUtilis.renameResource не знает о предыдущей модели. setNsPrefix, иначе он не читает префиксы из модели и работает без проверки, можно ли записать ресурс коротким способом с использованием префиксов.   -  person Giuseppedes    schedule 31.05.2017
comment
Полный, минимальный пример, пожалуйста. Важны такие детали, как значения этих констант.   -  person AndyS    schedule 01.06.2017


Ответы (1)


Это не сработало, потому что в новом URI после префикса были символы вроде «/» и «#». Решил заменой этих символов тире "-".

person Giuseppedes    schedule 20.06.2017