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

如何正确结合containedIn与additionalProperty构建城市结构化数据?

解决城市结构化数据中containedIn与区域类型标注的重复问题

嘿,我来帮你搞定这个结构化数据的坑!你遇到的重复条目和name属性冲突问题,根源在于用additionalProperty来标注区域类型的思路不对——additionalProperty是用来定义实体的自定义额外属性的,而区域类型本身是Schema.org已经规范好的实体类型,这么用自然会和现有属性撞车。

下面给你两种既合规又高效的正确实现方式:

方法一:直接给containedIn对象指定内置类型

Schema.org里已经为区域定义了明确的类型,比如Province(省份)、State(州)、Region(地区),这些都是AdministrativeArea的子类。你只需要在containedIn的嵌套对象里直接声明@type,同时填写区域的name即可,完全不会和城市的属性重复。

举个JSON-LD的示例(现在Google更推荐用JSON-LD格式):

{
  "@context": "https://schema.org",
  "@type": "City",
  "name": "杭州市",
  "population": 12204000,
  "containedIn": {
    "@type": "Province",
    "name": "浙江省",
    "population": 65770000
  }
}

这里城市和省份是两个独立的实体,各自的name属性属于不同层级,测试工具会正确识别为不同实体的属性,不会判定为重复。

方法二:多层级嵌套的数组形式

如果你的城市需要同时关联多个层级的区域(比如城市→省份→国家),可以把containedIn设为数组,每个元素对应一个层级的区域实体,同样给每个实体指定对应的类型:

{
  "@context": "https://schema.org",
  "@type": "City",
  "name": "杭州市",
  "containedIn": [
    {
      "@type": "Province",
      "name": "浙江省"
    },
    {
      "@type": "Country",
      "name": "中国"
    }
  ]
}

为什么之前的additionalProperty会出错?

additionalProperty的设计初衷是为实体添加Schema.org没有预定义的属性,比如某个城市特有的“年平均日照时长”这类自定义字段。但你用它来标注区域类型,相当于给City实体额外加了一个type属性,和City本身的@type冲突;如果在additionalProperty里又写了name,就会和城市的name字段重复,这才导致测试工具报错。

所以核心原则是:优先使用Schema.org内置的实体类型和属性,不要用自定义属性来模拟已有规范的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:32:08