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

如何在JSON-LD框架中结合@reverse与@embed:@never并保留无broader概念

解决SKOS JSON-LD框架保留所有概念并排除broader嵌入的问题

问题出在哪

你用@reverse加"@embed": "@never"时,JSON-LD处理器只会认那些通过broader反向关联到ConceptScheme的概念——也就是带broader的那两个。没broader的概念因为没这个反向关联,直接被过滤了。这是@reverse和@embed交互的正常行为,但刚好和你要的效果相反。

怎么改才能达到目的

要同时满足「ConceptScheme在顶层、所有4个概念都保留、broader不嵌入」,得把“包含所有概念”和“控制broader不嵌入”这俩逻辑分开:

  1. 先明确指定所有skos:Concept类型的资源都要被包含在ConceptScheme下,比如用skos:concept或skos:hasTopConcept属性
  2. 单独给broader属性设置"@embed": "@never",只阻止它嵌入关联资源,别用它来过滤概念

给你两个可行的框架示例:

示例1:用skos:hasTopConcept关联概念

{
  "@context": "http://schema.org",
  "@type": "skos:ConceptScheme",
  "skos:hasTopConcept": {
    "@type": "skos:Concept",
    "@embed": "@always",
    "broader": {
      "@embed": "@never"
    }
  }
}

示例2:直接指定Concept类型的包含规则

{
  "@context": "http://schema.org",
  "@type": "skos:ConceptScheme",
  "@reverse": {
    "broader": {
      "@embed": "@never"
    }
  },
  "skos:concept": {
    "@type": "skos:Concept",
    "@embed": "@always"
  }
}

核心逻辑就是:别让@reverse里的规则决定哪些概念被包含,而是单独用属性(比如skos:concept)把所有概念都拉进来,再单独控制broader不嵌入。

关于@embed": "@never"在@reverse块的生效问题

它确实会生效,但作用是阻止反向关联的资源被嵌入,不是强制包含所有资源。你之前只在@reverse块里定义了broader的规则,处理器就只会处理有这个反向关联的概念,没关联的自然被排除——这是处理器按规则匹配资源的正常逻辑,不是bug。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 02:55:07