You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JSON-LD中为@id值关联类型信息且不增加数据负载?

如何在JSON-LD中为@id值关联额外类型信息且不增加数据负载?

背景与需求

先看这个示例JSON-LD:

{
  "@context": "http://vocab.example/0.1/",
  "@type": "Foo",
  "foo": "bar",
  "@id": "https://host.example/ce157da859bbfba38d96ccaf080fa812/"
}

其中@id的尾部是通过算法计算生成的。当前只用一种算法,但未来可能变更,所以希望通过上下文说明使用的算法类型。但@id作为JSON-LD关键字,没法直接给它关联类似CumputedUsingAlgorithmXYZ的表达性类型。

最终期望生成的RDF如下:

<https://host.example/ce157da859bbfba38d96ccaf080fa812/>
  <https://host.example/ce157da859bbfba38d96ccaf080fa812/@>
    "https://host.example/ce157da859bbfba38d96ccaf080fa812/"^^<http://vocab.example/0.1/CumputedUsingAlgorithmXYZ> .

可行方案(无额外数据负载)

可以通过JSON-LD 1.1的反向属性+值类型标注特性,完全在上下文里配置实现,不需要修改数据主体的任何内容:

{
  "@context": [
    "http://vocab.example/0.1/",
    {
      "@reverse": {
        "https://host.example/ce157da859bbfba38d96ccaf080fa812/@": {
          "@id": "@id",
          "@type": "CumputedUsingAlgorithmXYZ"
        }
      }
    }
  ],
  "@type": "Foo",
  "foo": "bar",
  "@id": "https://host.example/ce157da859bbfba38d96ccaf080fa812/"
}

方案说明

  1. 上下文里通过@reverse定义目标属性的反向关联,将资源自身与它的@id值绑定
  2. 为这个绑定的@id值指定@type为算法标识,生成你需要的类型标注三元组
  3. 数据主体完全不需要新增字段,没有额外负载
  4. 未来算法变更时,仅需修改上下文里的@type值即可,现有数据无需调整

如果要让方案更通用(不绑定到特定资源的@属性),可以在你的词汇表中定义一个通用属性(比如hasComputedId),然后在上下文中映射为反向属性并关联@id与算法类型,这样所有使用该上下文的资源都会自动生成对应的类型标注。

内容的提问来源于stack exchange,提问作者avnr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 22:30:31