【问题标题】:Upload triples into Fuseki dataset avoiding IRI clashes将三元组上传到 Fuseki 数据集,避免 IRI 冲突
【发布时间】:2021-11-16 11:45:10
【问题描述】:

我已经使用 Apache Jena Fuseki 的 Web GUI 创建了一个数据集,现在我想使用 RDFConnection 以编程方式将一些三元组上传到远程数据集中。

我想上传的三元组来自不同的来源,我想避免创建远程数据集中已经存在 IRI 的 RDF 节点。有没有办法在不显式查询远程数据集的情况下做到这一点?返回所有 IRI 的列表是一种资源浪费。

例如,如果我的远程三元存储中有这个数据集(采用 Turtle 语法):

<iri_1> a foaf:Person
<iri_2> a foaf:Person
...
<iri_n> a foaf:Person

我想添加一个foaf:Person 的新个体,它与现有个体不同,我如何为新个体生成 IRI,而不会有使用远程数据集中已经存在的 IRI 的风险?

【问题讨论】:

  • 一个具体的例子会有所帮助,这里的细节很重要。听起来您要么需要一个命名方案来区分不同的事物(在 URI 中包含源),要么使用 UUID 之类的东西生成唯一的 URI,或者使用空白节点。如果数据中的重叠 IRI 表示相同的实体,则它们是好的 - 它可以将数据连接起来。
  • @AndyS 我已经通过包含一个示例来编辑我的问题。我不认为空白节点在我想添加新的三元组时有用,这些三元组稍后将新添加的个人作为主题。

标签: java jena fuseki


【解决方案1】:

从您的示例看来,每个主题都以该类的出现次数命名。为了继续这样做,我会计算 foaf:Persons 的数量(简单而快速的 sparql 查询),然后从计数中抵消新的主题。

如果您无法联系数据库,那么我将只生成 uuid,它们永远不会发生冲突。主题不会在视觉上吸引人,但它们肯定不会发生冲突。您应该可以使用UUID 中的java.utilRDFUnit 具有使用 JennaUUID 生成唯一 IRI 的 example,这也应该适合您。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多