0

有没有办法覆盖 Jena 生成匿名节点 ID 的默认方法?

理想情况下,我想向 Jena 传递一个生成 ID 的函子,这样我就可以使它们在全球范围内独一无二(而不仅仅是机器独有的)。每当构造 AnonId 时都应使用仿函数。

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

这与我之前的问题有些相关。

编辑:我意识到 AnonId 有一个带有 id 参数的构造函数。我希望避免到处调用这个构造函数,而是简单地告诉 Jena(一次)如何生成 ID。

编辑 2:即使我不介意到处调用该构造函数,这也可能是不可能的,因为匿名节点可能是由我无权访问的库代码创建的。

4

1 回答 1

1

Jena 没有任何用于插入不同AnonId生成器的钩子。s 的创建AnonId也不是集中在一个地方,因此没有一种简单的方法来强制使用它们new AnonId(String)。实现目标的最佳方法是修补AnonId源代码,这很简单。

FWIW,AnonId代码已经有两种不同的方式来生成 ID,所以在 Jena 代码库中添加一个抽象可能是一个合理的想法。

于 2010-06-05T12:41:19.813 回答