JSON-LD 正常 JSON
JSON-LD to normal JSON
我正在尝试将 JSON-LD 文件插入到我的 CouchDB 中。我遇到的唯一问题是,当我插入我的 JSON-LD 文件时,生成的 CouchDB 没有意义,因为 ID 没有 link 在一起。
我的 JSON-LD 文件的示例:
"contributor": [
{
"@id": "_:N6e57c55b35b74782ada714fdc6d66bf1"
},
{
"@id": "_:N810e115dfb3348579a7b826a7548095b"
}
还有一部分:
{
"@id": "_:N6e57c55b35b74782ada714fdc6d66bf1",
"@type": "Person",
"label": "Isely, Duane, 1918-"
},
{
"@id": "_:N810e115dfb3348579a7b826a7548095b",
"@type": "Person",
"label": "Cronquist, Arthur"
}
现在 "contributor" 中的 ID 正在 linking 到描述人员的第二部分的两个字段。我想知道如何 link 他们(正确的方式),所以我会得到这样的东西:
"contributor": [
{
"@type": "Person",
"label": "Isely, Duane, 1918-"
},
{
"@type": "Person",
"label": "Cronquist, Arthur"
}
您可以使用 JSON-LD 处理器为您的数据库(重新)创建更好的 JSON。规定 JSON-LD 文档结构的一个很好的可能性是 to define a frame.
引用自规范:
JSON-LD Framing allows developers to query by example and force a specific tree layout to a JSON-LD document.
示例:
假设您的文档看起来像
{
"@context": {
"contributor": {
"@type": "@id",
"@id": "http://purl.org/dc/terms/contributor",
"@container": "@list"
},
"label": {
"@id": "http://www.w3.org/2004/02/skos/core#prefLabel"
}
},
"@graph": [
{
"@type": "MainResource",
"@id": "_:foo",
"contributor": [
{
"@id": "_:N6e57c55b35b74782ada714fdc6d66bf1"
},
{
"@id": "_:N810e115dfb3348579a7b826a7548095b"
}
]
},
{
"@id": "_:N6e57c55b35b74782ada714fdc6d66bf1",
"@type": "Person",
"label": "Isely, Duane, 1918-"
},
{
"@id": "_:N810e115dfb3348579a7b826a7548095b",
"@type": "Person",
"label": "Cronquist, Arthur"
}
]
}
添加一个JSON-LD Frame like
{
"@context": {
"contributor": {
"@type": "@id",
"@id": "http://purl.org/dc/terms/contributor",
"@container": "@list"
},
"label": {
"@id": "http://www.w3.org/2004/02/skos/core#prefLabel"
}
},
"@type": "MainResource",
"@embed": "always"
}
把它扔到你选择的 JSON-LD 处理器上,你会得到类似
的东西
{
"@context": {
"contributor": {
"@type": "@id",
"@id": "http://purl.org/dc/terms/contributor",
"@container": "@list"
},
"label": {
"@id": "http://www.w3.org/2004/02/skos/core#prefLabel"
}
},
"@graph": [
{
"@id": "_:b0",
"@type": "http://json-ld.org/playground/MainResource",
"contributor": [
{
"@id": "_:b1",
"@type": "http://json-ld.org/playground/Person",
"label": "Isely, Duane, 1918-"
},
{
"@id": "_:b2",
"@type": "http://json-ld.org/playground/Person",
"label": "Cronquist, Arthur"
}
]
}
]
}
中的完整示例
不幸的是,框架没有得到同样好的支持。所以结果取决于您使用的 JSON-LD 处理器。
您可以通过从数据中删除“@”符号来进一步阐述。只需将以下内容添加到您的上下文中:
"type" : "@type",
"id" :"@id"
此外,您还可以将类型的缩写添加到上下文文档中
"MainResource": "http://json-ld.org/playground/MainResource"
中的示例
有关 rdf4j 的完整代码 java 示例请看这里: .
我正在尝试将 JSON-LD 文件插入到我的 CouchDB 中。我遇到的唯一问题是,当我插入我的 JSON-LD 文件时,生成的 CouchDB 没有意义,因为 ID 没有 link 在一起。
我的 JSON-LD 文件的示例:
"contributor": [
{
"@id": "_:N6e57c55b35b74782ada714fdc6d66bf1"
},
{
"@id": "_:N810e115dfb3348579a7b826a7548095b"
}
还有一部分:
{
"@id": "_:N6e57c55b35b74782ada714fdc6d66bf1",
"@type": "Person",
"label": "Isely, Duane, 1918-"
},
{
"@id": "_:N810e115dfb3348579a7b826a7548095b",
"@type": "Person",
"label": "Cronquist, Arthur"
}
现在 "contributor" 中的 ID 正在 linking 到描述人员的第二部分的两个字段。我想知道如何 link 他们(正确的方式),所以我会得到这样的东西:
"contributor": [
{
"@type": "Person",
"label": "Isely, Duane, 1918-"
},
{
"@type": "Person",
"label": "Cronquist, Arthur"
}
您可以使用 JSON-LD 处理器为您的数据库(重新)创建更好的 JSON。规定 JSON-LD 文档结构的一个很好的可能性是 to define a frame.
引用自规范:
JSON-LD Framing allows developers to query by example and force a specific tree layout to a JSON-LD document.
示例:
假设您的文档看起来像
{
"@context": {
"contributor": {
"@type": "@id",
"@id": "http://purl.org/dc/terms/contributor",
"@container": "@list"
},
"label": {
"@id": "http://www.w3.org/2004/02/skos/core#prefLabel"
}
},
"@graph": [
{
"@type": "MainResource",
"@id": "_:foo",
"contributor": [
{
"@id": "_:N6e57c55b35b74782ada714fdc6d66bf1"
},
{
"@id": "_:N810e115dfb3348579a7b826a7548095b"
}
]
},
{
"@id": "_:N6e57c55b35b74782ada714fdc6d66bf1",
"@type": "Person",
"label": "Isely, Duane, 1918-"
},
{
"@id": "_:N810e115dfb3348579a7b826a7548095b",
"@type": "Person",
"label": "Cronquist, Arthur"
}
]
}
添加一个JSON-LD Frame like
{
"@context": {
"contributor": {
"@type": "@id",
"@id": "http://purl.org/dc/terms/contributor",
"@container": "@list"
},
"label": {
"@id": "http://www.w3.org/2004/02/skos/core#prefLabel"
}
},
"@type": "MainResource",
"@embed": "always"
}
把它扔到你选择的 JSON-LD 处理器上,你会得到类似
的东西{
"@context": {
"contributor": {
"@type": "@id",
"@id": "http://purl.org/dc/terms/contributor",
"@container": "@list"
},
"label": {
"@id": "http://www.w3.org/2004/02/skos/core#prefLabel"
}
},
"@graph": [
{
"@id": "_:b0",
"@type": "http://json-ld.org/playground/MainResource",
"contributor": [
{
"@id": "_:b1",
"@type": "http://json-ld.org/playground/Person",
"label": "Isely, Duane, 1918-"
},
{
"@id": "_:b2",
"@type": "http://json-ld.org/playground/Person",
"label": "Cronquist, Arthur"
}
]
}
]
}
中的完整示例
不幸的是,框架没有得到同样好的支持。所以结果取决于您使用的 JSON-LD 处理器。
您可以通过从数据中删除“@”符号来进一步阐述。只需将以下内容添加到您的上下文中:
"type" : "@type",
"id" :"@id"
此外,您还可以将类型的缩写添加到上下文文档中
"MainResource": "http://json-ld.org/playground/MainResource"
中的示例
有关 rdf4j 的完整代码 java 示例请看这里: