有没有办法覆盖Jena的默认方法来生成匿名节点ID?
理想情况下,我想将Jena传递给生成ID的仿函数,以便我可以使它们全局唯一(而不仅仅是机器的唯一)。无论何时构造AnonId,都应该使用仿函数。
public interface IdGenerator {
public String createId() {
// create a globally unique ID
...
return uid;
}
}
这与my previous question有些相关。
编辑:我意识到AnonId有一个带有id参数的构造函数。我希望避免在整个地方调用这个构造函数,而只是告诉Jena(曾经)如何生成ID。
编辑2 :即使我不介意在整个地方调用该构造函数,也可能无法实现,因为匿名节点可能由我无法访问的库代码创建
答案 0 :(得分:1)
Jena没有任何用于插入不同AnonId
生成器的钩子。 AnonId
s的创建也不集中在一个地方,因此也没有一种简单的方法来强制使用new AnonId(String)
。实现目标的最佳方法是修补AnonId
来源,这很简单。
FWIW,AnonId
代码已经有两种不同的生成ID的方法,因此为Jena代码库添加抽象可能是一个合理的想法。