钥匙上是否有“:&引用;(冒号)允许在@上下文“;一个json-ld图?

钥匙上是否有“:&引用;(冒号)允许在@上下文“;一个json-ld图?,json-ld,rdflib,Json Ld,Rdflib,json ld上下文是否允许在其密钥中包含“:”?例如,以下是有效的json ld文档吗 { “@context”:{ “abc:def”:http://abc-def.com/" }, “@graph”:[ { “abc:def”:“某物” } ] } 我找不到关于规范的任何具体信息。我尝试使用两个最流行的python库pyld和rfdlib jsonld解析上述文档,其中一个认为这是一个错误,而另一个解析很好。我还尝试了一些在线的json ld游乐场,他们也不同意上面的文档是否格式正确 p

json ld上下文是否允许在其密钥中包含“:”?例如,以下是有效的json ld文档吗

{
“@context”:{
“abc:def”:http://abc-def.com/"
},
“@graph”:[
{
“abc:def”:“某物”
}
]
}
我找不到关于规范的任何具体信息。我尝试使用两个最流行的python库
pyld
rfdlib jsonld
解析上述文档,其中一个认为这是一个错误,而另一个解析很好。我还尝试了一些在线的json ld游乐场,他们也不同意上面的文档是否格式正确

pyld
给出一个错误,表示
JSON-LD语法无效;IRI形式的术语必须扩展到定义。
,而
rdflib jsonld
将其扩展到

[
{
"http://abc-def.com/": [
{
“@value”:“某物”
}
]
}
]

哪一个是正确的?

根据JSON-LD 1.1规范,应该可以在
@context
中使用紧凑的IRIs。但是,IRI前缀应存在于上下文中:

紧凑的IRI通过将映射到前缀的IRI连接到后缀(可能为空)来扩展。如果未在活动上下文中定义前缀,或后缀以两个斜杠开头(如中),则该值将被解释为IRI

因此,您的示例可能应该转换为:

{
“@context”:{
“abc”:http://example.org/",
“abc:def”:{
@type:“@id”
}
},
“abc:def”:“某物”
}
在JSON-LD游乐场检查,应符合规范要求


因此答案是肯定的,可以在JSON-LD
@context
中使用冒号。我要说的是,pyld的行为符合规范。

根据JSON-LD1.1规范,应该可以在
@context
中使用紧凑的IRIs。但是,IRI前缀应存在于上下文中:

紧凑的IRI通过将映射到前缀的IRI连接到后缀(可能为空)来扩展。如果未在活动上下文中定义前缀,或后缀以两个斜杠开头(如中),则该值将被解释为IRI

因此,您的示例可能应该转换为:

{
“@context”:{
“abc”:http://example.org/",
“abc:def”:{
@type:“@id”
}
},
“abc:def”:“某物”
}
在JSON-LD游乐场检查,应符合规范要求

因此答案是肯定的,可以在JSON-LD
@context
中使用冒号。我要说的是,
pyld
的行为符合规范