【问题标题】:Generating Jena Bnode IDs生成 Jena Bnode ID
【发布时间】:2009-04-07 23:48:00
【问题描述】:

有没有办法覆盖 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:即使我不介意到处调用该构造函数,这也可能是不可能的,因为匿名节点可能是由我无权访问的库代码创建的.

【问题讨论】:

  • 为什么要这样做?如果您确实想这样做,为什么不一直这样做并提供节点 URI(这样更容易确保它们在全球范围内是唯一的)?
  • @DNA 我的具体用例与跨不同机器同步模型有关(请参阅this question)。我需要确保在不同机器上创建的匿名节点具有不同的 ID。

标签: java ontology jena


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 2012-02-22
    • 2011-01-11
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多