Как установить локально предоставляемый пользовательский контекст с помощью Ruby JSON-LD?

#ruby #rdf #semantic-web #json-ld #linked-data

#ruby #rdf #семантическая сеть #json-ld #связанные данные

Вопрос:

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

Итак, что я делаю, это использую JSON::LD::API.toRdf . Но, похоже, я не могу установить локальный контекст непосредственно в его интерфейсе. Как это можно сделать?

Ответ №1:

API JSON-LD (спецификация и Ruby) описывает expandContext опцию. В Ruby это может принимать строку (интерпретируемую как URL), что-то, на что реагирует #read (например, StringIO или File), Hash Array , или экземпляр JSON::LD::Context .

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

 context = JSON.parse(%({
  "@context": {...}
}))

graph = RDF::Graph.new

JSON::LD::API.toRdf(input, context) { |statement| graph << statement}
 

Взгляните на документацию здесь или, не стесняйтесь, найдите меня на gitter.

Комментарии:

1. К сожалению, когда я делаю так, как вы описали, я получаю следующую ошибку при вызове toRdf : ArgumentError: wrong number of arguments (given 2, expected 1) . Я использую самую json-ld популярную версию gem 3.1.5.

2. Мне удалось сделать это сейчас, но мне пришлось использовать JSON::LD::API.toRdf(input, expandContext: context) do |statement| , и контекст должен был быть определен непосредственно в context переменной, а не вложен в "@context" => {…} член. Я делаю что-то не так, потому что ваш описанный способ не сработал?

3. Нет, я думаю, вы правы. Возможно, код должен искать @context и использовать это, а не контекст без ссылок. Здесь мы выходим за рамки спецификации, поэтому это полностью определяется библиотекой Ruby. Если у вас что-то все еще не работает, отправьте сообщение о проблеме по адресу github.com/ruby-rdf/json-ld/issues .