java - 生成 Jena Bnode ID

标签 java ontology jena

有没有办法覆盖 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/

相关文章:

java - 耶拿 queryParseException

java - 许多在耶拿的 TDB 或 SDB 上命名为 Model

java - PriorityQueue 比较器类型与 Arrays.sort() 冲突

java.lang.NoSuchMethodError : org. apache.zookeeper.ZooKeeper.<init>(Ljava/lang/String;ILorg/apache/zookeeper/Watcher;Z)V

java - hibernate/ Spring : Lots (thousands) of open connections the database

sparql - 本体从类及其子类中查找属性

java - HermiT Reasoner 显示错误结果

java - jdbc创建表时出错

rdf - rdfs :label in Protégé 的更改顺序

sparql - 在 Jena OntMOdel 中添加个人并访问它。异常 ObjectFileStorage.read 不可能的大对象