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

如何在JSON-LD中定义和使用Schema?兼询与JSONSchema的关联

JSONSchema与JSON-LD的关联及JSON-LD Schema创建验证指南

一、JSONSchema与JSON-LD的关联

两者属于不同技术标准,定位互补:

  • JSONSchema:专注结构验证,定义JSON数据的格式规则(如字段类型、必填项、取值范围),确保数据语法合规。
  • JSON-LD:专注语义标记,通过@context给JSON数据添加语义上下文,让机器能理解数据的实际含义(比如区分name是指人名还是产品名)。
  • 关联场景:可结合使用——用JSONSchema验证JSON-LD实例的结构正确性,同时借助JSON-LD的语义约束,实现「结构+语义」的双重校验。

二、在JSON-LD中创建Schema并验证实例的步骤

JSON-LD本身无内置Schema定义机制,通常结合RDF Schema(RDFS/OWL) 和JSONSchema实现,分语义定义与结构验证两部分:

1. 定义JSON-LD语义上下文(@context)

先确定数据术语对应的语义URI,可自定义或复用已有标准:

{
  "@context": {
    "name": "http://example.org/ontology#PersonName",
    "age": "http://example.org/ontology#PersonAge",
    "Person": "http://example.org/ontology#Person"
  }
}

该上下文将name映射到自定义本体的PersonName属性,Person映射到Person类,明确术语的语义指向。

2. 用RDF Schema定义语义约束

用RDFS/OWL编写类、属性的语义规则(如类的层次、属性的定义域/值域),支持Turtle或JSON-LD格式:

@prefix ex: <http://example.org/ontology#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ex:Person a rdfs:Class .
ex:PersonName a rdf:Property ;
  rdfs:domain ex:Person ;
  rdfs:range xsd:string .
ex:PersonAge a rdf:Property ;
  rdfs:domain ex:Person ;
  rdfs:range xsd:integer .

这段规则定义了Person类,要求PersonName属性只能属于Person类且值为字符串,PersonAge值为整数。

3. 用JSONSchema验证结构合规性

编写JSONSchema规则,校验JSON-LD实例的结构:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "required": ["@type", "name"],
  "properties": {
    "@type": { "const": "Person" },
    "name": { "type": "string" },
    "age": { "type": "integer", "minimum": 0 }
  }
}

该Schema要求实例必须包含@type且值为Person,name为必填字符串,age为非负整数。

4. 语义验证

使用RDF工具(如Apache Jena、RDF4J)加载RDF Schema和JSON-LD实例,校验语义约束:

  • 检查属性是否匹配对应类的定义域(比如给Person实例添加price属性是否违反规则)
  • 检查属性值是否符合值域要求(比如age填字符串是否合法)

三、schema.org的Schema定义方式

schema.org是基于RDF Schema和OWL构建的开放语义Schema,核心实现逻辑:

  1. 语义定义:用RDFS/OWL定义所有类(如Person、Product)和属性(如name、email)的层次关系、定义域、值域,并发布为Turtle、JSON-LD等格式的本体文件。
  2. 上下文复用:提供统一的@context(https://schema.org),所有术语都映射到schema.org的语义URI,比如"name": "https://schema.org/name",简化语义标记。
  3. 验证支持:
    • 结构层面:可借助社区维护的schema.org JSONSchema校验实例格式。
    • 语义层面:用RDF工具验证实例是否符合schema.org的语义约束,比如price属性仅能用于Product类实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:54:33