Контекст для ключа только индекса верхнего уровня в JSON-LD

Я пытаюсь использовать JSON-LD, чтобы сделать устаревший файл JSON машиночитаемым. Рассматриваемый файл JSON имеет объект верхнего уровня с членом item, ссылающимся на объект, который содержит актуальные релевантные данные.

{
  "item": {
    "id": "123",
    "name": "Test"
  }
}

Когда я сейчас представляю контекст вроде следующего:

{
  "@context": {
    "name": "https://example.org/name"
  }
}

Никакие знания не извлекаются, а это значит, что из этого нельзя интерпретировать тройки. Чтобы заставить его работать, я понял, что могу сделать следующее:

{
  "@context": {
    "item": "https://example.org/exists",
    "name": "https://example.org/name"
  }
}

Это работает, то есть тройка с предикатом имени извлекается хорошо. Однако проблема с этим подходом заключается в том, что также извлекается ненужная тройка с предикатом exists.

Поэтому я экспериментировал с маркировкой объекта верхнего уровня как контейнера индекса, так что ключ item полностью игнорировался. Я просто не могу найти способ сделать это без необходимости назначать IRI термину item, и если я его назначу, снова будет извлечена ненужная тройка.

{
  "@context": {
    "name": "https://example.org/name"
  }
}

Никакие знания не извлекаются, а это значит, что из этого нельзя интерпретировать тройки. Чтобы заставить его работать, я понял, что могу сделать следующее:

Это вообще не работает (потому что термин item не имеет IRI):

{
  "@context": {
    "item": {
      "@container": "@index"
    },
    "name": "https://example.org/name"
  }
}

И это действительно работает, но снова имеет ненужные тройки:

{
  "@context": {
    "@container": "@index",
    "item": "https://example.org/exists",
    "name": "https://example.org/name"
  }
}

Что мне здесь не хватает? Как я могу создать контекст, который извлекает только тройку name?


person aef    schedule 04.12.2020    source источник


Ответы (1)


Сравните это с вашим процессором JSON-LD:

{
  "item": {
    "id":   "123",
    "name": "Test"
  } ,
  "@context": {
    "@base": "http://example.com/id/",
    "id":    "@id", 
    "item":  "@nest",
    "name":  "https://example.org/name"
  } 
}

В JSON-LD Playground этот контекст создает следующую единственную тройку RDF:

<http://example.com/id/123> <https://example.org/name> "Test" .

Используемые функции JSON-LD:

Вас также может заинтересовать RML.

person Stanislav Kralin    schedule 05.12.2020
comment
Вот и все. Большое спасибо. - person aef; 05.12.2020