rdflib неверный удаленный контекст при тестировании на локальном сервере - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь проверить различные контексты, примененные к файлу json. Я создал очень простой файл контекста (с именем mycontext.json) на моем локальном компьютере (MacPro 2019) с содержанием:

{ "name": "http://example.com#name", "age": "http://example.com#age"}

Далее я запускаю локальный веб-сервер на своем компьютере, используя jekyll serve , Я могу проверить, что мой файл доступен в веб-браузере, перейдя к http://127.0.0.1:4000/mycontext.json или используя библиотеку python requests: requests.get("http://127.0.0.1:4000/mycontext.json").text.
Каждый тест работает нормально, поскольку он возвращает контекст mycontext.json ,

Файл json (с именем test-data.json) ссылается на json -ld контекст. Его содержимое:

{
        "@context": "http://127.0.0.1:4000/mycontext.json",
        "name:": "Bill",
        "age": "48"
}

Однако, когда я анализирую это в rdflb, я получаю ошибку INVALID_REMOTE_CONTEXT.
То есть g.parse("test-data.json", format="json-ld") выдает ошибку:

:
:
~/opt/anaconda3/lib/python3.7/site-packages/rdflib_jsonld/context.py in _prep_sources(self, base, inputs, sources, referenced_contexts, in_source_url)
    205                 source = source_to_json(source_url)
    206                 if CONTEXT not in source:
--> 207                     raise errors.INVALID_REMOTE_CONTEXT
    208             else:
    209                 source_url = in_source_url

JSONLDException: invalid remote context

Есть много сообщений об ошибках по этому поводу, но это кажется наиболее актуальным.

Я попытался инициализировать график, используя Graph() и ConjunctiveGraph(). Тот же результат для каждого.

Я также пытался: * поместить файл контекста в его собственную директорию и вызывать с помощью: "@context": "http://127.0.0.1:4000/context/ *, давая контексту не json расширение, и вызывать с: "@context": "http://127.0.0.1:4000/context/c1"

Я действительно очень озадачен :(

Я понял, что могу программно анализировать / объединять файлы контекста и данных в один файл. Но наша цель - создать файлы контекста локально и протестируйте их в файлах json. Если мы удовлетворены, мы можем затем развернуть файлы контекста на веб-сервере publi c без развертывания данных.

Я также опубликовал проблемы на rdflib-jsonld gihub: https://github.com/RDFLib/rdflib-jsonld/issues/80

1 Ответ

0 голосов
/ 15 апреля 2020

Я нашел ответ на свой вопрос. Документ, на который ссылается ключ "@context", должен также содержать ключ "@context".

Например, если ваш документ json выглядит так:

{ 
  "@context": "http://127.0.0.1:4000/mycontext", 
  "name:": "Bill", 
  "age": "48" 
}

содержимое http://127.0.0.1:4000/mycontext должно выглядеть так:

{ 
  "@context": <----- This is needed. It was missing in my original post.
  { 
     "name": "http://example.com#name", "age": "http://example.com#age" 
  } 
}
...