TL; DRJSON以JSON LD與原來的JSON的最小變化(JSON-LD環境中的所有變化)
如果我有一個像
{
"policyid": "http://example.com/policy:0099",
"policytype": "http://www.w3.org/ns/odrl/2/Set"
}
一個JSON文件,我想有類似
{
"@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"
}
一個JSON-LD文件是否有可能不是這個名字/谷對{ 「策略ID」: 「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"
}
我正在通過規範的例子,並找不到如何做到這一點。
更多的上下文
說,如果我們有具有規範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"
}]
}
以下是我想將此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> .
我幾乎可以與一個上下文以下最低的變化做到這一點。
{
"@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" }]
}
但是,如果我想保持原來的JSON,因爲它是,有沒有辦法說「策略ID」 - >「@id」的背景下?
非常感謝!
也許你可以使用這個庫 - > **的https://github.com/digitalbazaar/jsonld.js**了'jsonld.compact()'功能似乎成爲你正在尋找的... – davidkonrad
非常感謝大衛!這正是我需要的功能,我發現jsonld.js非常有用。我的疑問是關於如何生成jsonld.compact()在此特定情況下需要作爲輸入的上下文。 – Nandana