TL; DR
如果我有一个像JSON文件
{
"policyid": "http://example.com/policy:0099",
"policytype": "http://www.w3.org/ns/odrl/2/Set"
}
Run Code Online (Sandbox Code Playgroud)
我想要一个类似的JSON-LD文档
{
"@context": {
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"policytype": { "@id": "rdf:type", "@type": "@id" }
}
"@id" : "http://example.com/policy:0099",
"policytype": "http://www.w3.org/ns/odrl/2/Set"
}
Run Code Online (Sandbox Code Playgroud)
是否可以不将名称/值对{{policyid":" http://example.com/policy:0099 "} 更改为{"@ id ":" http://example.com/policy:0099 "而是在上下文中说出"policyid" - >"@ id".
{
"@context": {
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"policytype": { "@id": "rdf:type", "@type": "@id" },
#### something here that says "policyid" -> "@id"
}
"policyid" : "http://example.com/policy:0099",
"policytype": "http://www.w3.org/ns/odrl/2/Set"
}
Run Code Online (Sandbox Code Playgroud)
我正在通过规范示例,但无法找到如何做到这一点.
更多背景
假设我们有一个具有RDF规范和JSON编码的模型,例如ODRL 2.1 Ontology和ODRL Version 2.1 JSON Encoding.
我想从JSON开始,通过将JSON编码映射到ODRL本体来生成JSON-LD.
{
"policyid": "http://example.com/policy:0099",
"policytype": "http://www.w3.org/ns/odrl/2/Set",
"permissions": [{
"target": "http://example.com/asset:9898",
"action": "http://www.w3.org/ns/odrl/2/reproduce"
}]
}
Run Code Online (Sandbox Code Playgroud)
以下是我希望将此json转换为的RDF模型.(我将使用Turtle序列化使其更具可读性).
@prefix odrl: <http://www.w3.org/ns/odrl/2/> .
<http://example.com/policy:0099> a odrl:Set .
<http://example.com/policy:0099> odrl:permission _:perm0 .
_:perm0 odrl:action <http://www.w3.org/ns/odrl/2/reproduce> .
_:perm0 odrl:target <http://example.com/asset:9898> .
Run Code Online (Sandbox Code Playgroud)
我几乎可以通过上下文进行最小的更改来完成此操作,如下所示.
{
"@context": {
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"odrl": "http://www.w3.org/ns/odrl/2/",
"policytype": { "@id": "rdf:type", "@type": "@id" },
"permissions": { "@id": "odrl:permission", "@type": "@id"},
"target" : {"@id": "odrl:target", "@type": "@id" },
"action" : {"@id": "odrl:action", "@type": "@id" }
},
"@id": "http://example.com/policy:0099",
"policytype": "http://www.w3.org/ns/odrl/2/Set",
"permissions": [{
"target": "http://example.com/asset:9898",
"action": "http://www.w3.org/ns/odrl/2/reproduce" }]
}
Run Code Online (Sandbox Code Playgroud)
但是如果我想保留原来的JSON,有没有办法在上下文中说"policyid" - >"@ id"?
非常感谢!
是否可以不将名称/值对{{policyid":" http://example.com/policy:0099 "} 更改为{"@ id ":" http://example.com/policy:0099 "而是在上下文中说出"policyid" - >"@ id".
是的,您只需将policyid映射到@id.这在规范中称为关键字别名.所以你的例子看起来像这样:
{
"@context": {
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"policyid": "@id",
"policytype": { "@id": "rdf:type", "@type": "@id" }
},
"policyid" : "http://example.com/policy:0099",
"policytype": "http://www.w3.org/ns/odrl/2/Set"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
186 次 |
| 最近记录: |