有没有办法覆盖 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:即使我不介意到处调用该构造函数,这也可能是不可能的,因为匿名节点可能是由我无权访问的库代码创建的.
最佳答案
Jena 没有任何用于插入不同 AnonId
生成器的钩子(Hook)。 AnonId
的创建也不是集中在一个地方,因此也没有一种简单的方法来强制使用 new AnonId(String)
。实现目标的最佳方法是修补 AnonId
源,这非常简单。
FWIW,AnonId
代码已经有两种不同的方式来生成 ID,因此将其抽象添加到 Jena 代码库可能是一个合理的想法。
关于java - 生成 Jena Bnode ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/728025/