2009-04-07 56 views
0

有没有办法覆盖Jena生成匿名节点ID的默认方法?生成Jena Bnode 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

你为什么要这样做?如果你确实想这样做,为什么不去完整的方式,并给节点的URI(这使它更容易确保它们是全球唯一的)? – DNA 2011-05-07 00:08:17

回答

1

耶拿没有任何挂钩插入不同的AnonId发生器。 AnonId的创建也没有集中在一个地方,所以也没有简单的方法来强制使用new AnonId(String)。实现你的目标的最好方法是修补AnonId来源,这将是直截了当的。

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