Сопоставление IRI и ссылки в JSON-LD

Я пытаюсь разработать онтологию с использованием JSON-LD, но у меня возникают проблемы с правильным синтаксисом. Я просмотрел https://www.w3.org/TR/json-ld, но не смог найти именно ту информацию, которую я ищу, а именно: как вложить IRI в контекст и как ссылаться на них в теле?

{
  "@context":{
    "@base":"http://example.com/",
    "instances":"base:instances",
    "animals":"base:animals",
    "plants":"base:plants"
  },
  "@graph":[
    {
      "@id": "instances:1",
      "@type": "Plant",
      "plants:numleaves": "8",
      "plants:speciesname": "sunflower"
    },
    {
      "@id": "instances:2",
      "@type": "Animal",
      "animals:numlegs": "4",
      "animals:speciesname": "dog",
      "animals:eats": "instances:1"
    }
  ]
}

Я хочу, чтобы идентификатор первого элемента был http://example.com/instances#1, но когда я запускаю его через http://json-ld.org/playground/ , его расширенная форма — base:instances1. Как мне сделать это правильно?


person user6454026    schedule 18.06.2016    source источник


Ответы (1)


Это не работает так, как вы хотите, потому что вы определяете @base, а затем пытаетесь использовать его в качестве префикса.

Также решетка (#) не появится просто волшебным образом. Вы должны включить его в свой базовый URI.

Подводя итог, вам придется изменить свой контекст на:

"@context":{
  "base":"http://example.com/",
  "instances":"base:instances#",
  "animals":"base:animals#",
  "plants":"base:plants#"
}

Теперь instances:1 представляет собой конкатенацию http://example.com/ + instances# + 1, как вы и просили.

person Tomasz Pluskiewicz    schedule 18.06.2016