Вопрос

Есть ли способ переопределить метод Jena по умолчанию для создания идентификаторов анонимных узлов?

В идеале я хотел бы передать Jena функтор, который будет генерировать идентификаторы, чтобы я мог сделать их глобально уникальными (а не просто уникальными для машины).Функтор следует использовать всякий раз, когда создается AnonId.

public interface IdGenerator {
   public String createId() {
      // create a globally unique ID
      ...
      return uid;
   }
}

Это в некоторой степени связано с мой предыдущий вопрос.

Редактировать:Я понимаю, что у AnonId есть конструктор, который принимает параметр id.Я надеюсь не вызывать этот конструктор повсюду, а вместо этого просто рассказать Джене (один раз), как генерировать идентификаторы.

Редактировать 2:Даже если бы я не возражал против повсеместного вызова этого конструктора, это может оказаться невозможным, поскольку анонимные узлы могут быть созданы кодом библиотеки, к которому у меня нет доступа.

Это было полезно?

Решение

У Джены нет крючков для подключения другого AnonId генератор.Создание AnonIds также не централизован в одном месте, поэтому не существует простого способа обеспечить использование new AnonId(String) или.Лучшим способом достижения вашей цели будет исправление AnonId источник, который был бы достаточно простым.

Кстати, AnonId В коде уже есть два разных способа генерации идентификаторов, поэтому добавление абстракции для этого в кодовую базу Jena может быть разумной идеей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top