如何通过@context压缩@id中的IRI,无需使用@base?
问题解答
完全可以在不使用@base的前提下,通过@context实现@id的IRI压缩,你提供的示例代码本身就是符合JSON-LD规范的合法实现。
你给出的示例经过JSON-LD处理器展开后,@id会被正确解析为完整IRI http://example.org/MaxMustermann,name字段也会正确映射到https://schema.org/name,完全符合预期效果。
补充优化方案
如果你的场景下存在多个同域名下的资源需要定义@id,可以用前缀映射的方式简化@context配置,不需要为每个资源单独配置完整IRI映射,示例如下:
{ "@context": { "ex": {"@id": "http://example.org/", "@prefix": true}, "name": "https://schema.org/name" }, "@id": "ex:MaxMustermann", "name": "Max Mustermann" }
上述代码展开后@id的解析结果和你原来的写法完全一致,可复用性更高。
常见误区说明
很多开发者误以为只有@base才能处理@id的IRI缩写,实际上JSON-LD规范中明确支持直接将@context中定义的术语、前缀用于@id值的自动展开,无需依赖@base配置。
内容的提问来源于stack exchange,提问作者frm
相关产品推荐
相关产品推荐

