微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过 SPARQL 为更新生成 UUID 在客户端生成一个 UUID 并在更新请求中使用它在客户端生成一个 UUID 并检查 RDF 存储是否包含具有该 id 的三元组迭代直到 UUID 是新的向 RDF 存储询问 UUID 并使用它在进行大量更新之前向 RDF 存储询问 N >> 1 个 UUID

如何解决如何通过 SPARQL 为更新生成 UUID 在客户端生成一个 UUID 并在更新请求中使用它在客户端生成一个 UUID 并检查 RDF 存储是否包含具有该 id 的三元组迭代直到 UUID 是新的向 RDF 存储询问 UUID 并使用它在进行大量更新之前向 RDF 存储询问 N >> 1 个 UUID

使用通过 SPARQL 端点访问的 RDF 数据库生成新的 UUID IRI 并将它们用于新资源的最佳方法是什么?

以下是我尝试过的一些方法的概述。我分享这个是因为我希望找到这个问题的答案。我最喜欢的是最后一种方法,但我认为它仍有待讨论。

在客户端生成一个 UUID 并在更新请求中使用它

  • 亲:快
  • con:您无法确定 UUID 在数据库中是唯一的。不过发生碰撞的可能性很小。

在客户端生成一个 UUID 并检查 RDF 存储是否包含具有该 id 的三元组。迭代直到 UUID 是新的。

  • pro:您可以合理地确定 UUID 在数据库中是唯一的(除了在并发更新中添加的)
  • 缺点:很慢

向 RDF 存储询问 UUID 并使用它

查询SELECT (UUID() as ?id) WHERE{}

  • pro:UUID 保证在商店中是唯一的(即尚未使用)
  • con:这是一个额外的请求(但它是一个快速的请求)

在进行大量更新之前向 RDF 存储询问 N >> 1 个 UUID

查询(返回 1000 个结果行):

SELECT (UUID() as ?id) WHERE {
   VALUES ?index1 { 0 1 2 3 4 5 6 7 8 9 } 
   VALUES ?index2 { 0 1 2 3 4 5 6 7 8 9 } 
   VALUES ?index3 { 0 1 2 3 4 5 6 7 8 9 } 
}
  • pro:如果需要 >> 1,每个 UUID 可能最快
  • pro:UUID 保证在商店中未使用
  • 缺点:这种方法需要更多的客户端编程
  • 并且:这是一个不寻常的查询,有没有更好的方法来实现这一点?

相关:

解决方法

根据AndyS的评论,我决定look that up again并调整我的期望:你必须在大约 85 年内每秒生成 10 亿个 UUID,才能达到 50% 的一次或多次碰撞概率.因此,变体 1 是最好的:

在客户端生成一个 UUID 并在更新请求中使用它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?