Генерация идентификаторов Jena Bnode - PullRequest
0 голосов
/ 08 апреля 2009

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

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

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

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

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

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

1 Ответ

1 голос
/ 05 июня 2010

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

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

...