Json-ld, определяющий тип для узла

У меня есть простой файл JSON, как:

{
   "name": "something"
}

Теперь у меня есть определение json-ld, где есть объекты. Есть объект с идентификатором #something - он существует, скажем, на http://example.com/test.jsonld.

Теперь я хочу добавить контекст без модификации исходных данных, чтобы имя стало типом, а значение стало IRI для http://example.com/test.jsonld.

Я сделал что-то вроде этого:

{
   "@context":{
      "name":"@type"
   },
   "@id":"1234",
   "name":"something"
}

Это дает мне на детской площадке почти то, что я хочу:

{
   "@id": "1234",
   "@type": "http://json-ld.org/playground/something",
}

Как добавить контекст, чтобы значение "что-то расширилось в IRI http://example.com/test.jsonld вместо playgorund?

Пробовал с "@base", но он также меняет @id на URL.

1 ответ

Вы можете использовать термины (строки, сопоставленные с IRI) в качестве значений @type, Как вы псевдоним name в @type уже все, что вам нужно сделать, это добавить отображение из something в http://example.com/test.jsonld#something:

{
  "@context":{
    "name": "@type",
    "something": "http://example.com/test.jsonld#something"
  },
  "@id": "1234",
  "name": "something"
}

Пробовал с "@base", но он также меняет @id на URL.

Значение @id это всегда IRI. Это просто не раскрывается, если у вас нет базы ("@base": null)

Другие вопросы по тегам