JSON-LD处理器未展开紧凑IRI值:是处理器问题还是认知误区?
问题解答:JSON-LD属性值的紧凑IRI未展开的原因
这是对JSON-LD Expansion规则的理解偏差,处理器的行为完全符合规范。
默认情况下,JSON-LD处理器只会对属性名的紧凑IRI进行自动扩展,而属性值里的字符串形式紧凑IRI(比如"example:dog")会被当作普通字符串处理,不会自动解析为IRI。要让属性值的紧凑IRI被展开,需要明确告知处理器该值是IRI类型,有两种常用实现方式:
方式1:在@context中定义属性的类型为@id
修改上下文,指定animal属性的值类型为@id,处理器就会自动将该属性的紧凑IRI值展开为完整IRI:
{ "@context": { "example": "https://example.com/vocab#", "animal": {"@id": "example:animal", "@type": "@id"} }, "animal": "example:dog" }
展开后的结果:
{ "@context": { "example": "https://example.com/vocab#", "animal": {"@id": "example:animal", "@type": "@id"} }, "animal": "https://example.com/vocab#dog" }
方式2:直接用@id标记属性值
如果不想修改上下文,也可以直接将属性值标记为IRI类型:
{ "@context": { "example": "https://example.com/vocab#" }, "animal": {"@id": "example:dog"} }
这种写法展开后同样会得到完整IRI的结果。
内容的提问来源于stack exchange,提问作者Biofloat
相关产品推荐
相关产品推荐

