Генерация идентификаторов Jena Bnode
Вопрос
Есть ли способ переопределить метод Jena по умолчанию для создания идентификаторов анонимных узлов?
В идеале я хотел бы передать Jena функтор, который будет генерировать идентификаторы, чтобы я мог сделать их глобально уникальными (а не просто уникальными для машины).Функтор следует использовать всякий раз, когда создается AnonId.
public interface IdGenerator {
public String createId() {
// create a globally unique ID
...
return uid;
}
}
Это в некоторой степени связано с мой предыдущий вопрос.
Редактировать:Я понимаю, что у AnonId есть конструктор, который принимает параметр id.Я надеюсь не вызывать этот конструктор повсюду, а вместо этого просто рассказать Джене (один раз), как генерировать идентификаторы.
Редактировать 2:Даже если бы я не возражал против повсеместного вызова этого конструктора, это может оказаться невозможным, поскольку анонимные узлы могут быть созданы кодом библиотеки, к которому у меня нет доступа.
Решение
У Джены нет крючков для подключения другого AnonId
генератор.Создание AnonId
s также не централизован в одном месте, поэтому не существует простого способа обеспечить использование new AnonId(String)
или.Лучшим способом достижения вашей цели будет исправление AnonId
источник, который был бы достаточно простым.
Кстати, AnonId
В коде уже есть два разных способа генерации идентификаторов, поэтому добавление абстракции для этого в кодовую базу Jena может быть разумной идеей.