如何仅通过自定义上下文将普通JSON的Type项别名为@type关键字
自定义上下文实现Type字段映射@type方案
可以仅通过JSON-LD自定义上下文完成映射,无需修改原始JSON结构,具体配置根据业务需求分两种场景:
基础前提
你已经完成的Id字段到@id的映射配置可以保留,@type映射的核心是通过上下文别名规则,将原始JSON的Type字段绑定到JSON-LD规范的@type关键字上,同时适配当前Type为嵌套对象的结构。
场景1:取Type对象的属性值作为当前实体的类型标识(适配绝大多数三元组存储要求)
三元组存储中rdf:type的取值通常为类型的IRI标识,对应结构中Type.Id字段,不需要保留Type对象的其他冗余属性时,使用如下上下文配置:
{ "@context": { "@base": "http://your-custom-namespace.com/entity/", // 可选,用于补全纯数字Id为合法IRI "Id": "@id", // 已配置好的Id映射规则 "Type": { "@id": "@type", "@context": { "Id": "@value" // 指定取Type下的Id字段作为@type的实际值 } } // 其余业务字段按本体规则正常配置映射即可 } }
如果需要取Type.Name的值(比如示例中的"Person")作为类型名,只需要把嵌套上下文中的"Id"替换为"Name"即可。
场景2:保留Type为独立嵌套节点,同时标记为当前实体的类型
如果需要保留Type对象下的所有属性(比如类型的Id、名称、层级关系等),不做扁平化丢弃,直接使用如下别名配置即可:
{ "@context": { "@base": "http://your-custom-namespace.com/entity/", "Id": "@id", "Type": "@type", // 直接将Type字段别名为@type // 为Type嵌套节点配置独立上下文,识别其内部字段 "Type.Id": "@id", "Type.Name": "http://www.w3.org/2000/01/rdf-schema#label" } }
配置校验提示:配置完成后可以用JSON-LD解析工具测试展开结果,确认输出的三元组中
@type字段取值符合预期即可,不需要额外做字段重命名等预处理操作。
内容的提问来源于stack exchange,提问作者Pedram Hadjian
相关产品推荐
相关产品推荐

