TL; DRJSON в JSON LD с минимальными изменениями исходного JSON (все изменения в контексте JSON-LD)
Если у меня есть JSON документ как
{
"policyid": "http://example.com/policy:0099",
"policytype": "http://www.w3.org/ns/odrl/2/Set"
}
и я хочу иметь 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"
}
можно не менять имя/юдоли пары { "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"
}
Я прошел через пример спецификации и не смог найти, как это сделать.
Более контекст
Скажем, если у нас есть модель, которая имеет спецификацию RDF, и JSON кодирование, например, ODRL 2.1 Ontology и ODRL Version 2.1 JSON Encoding.
Я хочу начать с JSON и генерировать JSON-LD, сопоставляя кодировку JSON с онтологией ODRL.
{
"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"
}]
}
Следующая модель RDF Я хочу преобразовать этот json в. (Я поставил сериализацию черепахи, чтобы сделать ее более читаемой).
@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, как это, есть ли способ сказать «policyid» -> «@id» в контексте?
Большое спасибо!
, возможно, вы можете использовать эту библиотеку -> ** https: //github.com/digitalbazaar/jsonld.js** в 'jsonld.compact()' функция, кажется, быть тем, что вы ищете ... – davidkonrad
Спасибо большое Дэвид! Это именно то, что мне нужно, я нахожу jsonld.js весьма полезным. Мое сомнение заключалось в том, как создать контекст, который нужен jsonld.compact() для ввода в этом конкретном случае. – Nandana