在本地服务器上测试时 rdflib 无效的远程上下文

rdflib invalid remote context when testing on local sever

我正在尝试测试应用于 json 文件的不同上下文。我在本地计算机(2019 MacPro)上创建了一个非常简单的上下文文件(名为 mycontext.json),其内容为:

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

接下来,我使用 jekyll serve 在我的机器上启动本地 Web 服务器。我可以通过导航到 http://127.0.0.1:4000/mycontext.json 或使用 python requests 库来测试我的文件是否可以在 Web 浏览器中访问:requests.get("http://127.0.0.1:4000/mycontext.json").text.
每个测试工作正常,因为它 returns 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"

此时我真的很困惑:(

我意识到我可以通过编程方式 parse/combine 将上下文和数据文件合并到一个文件中。但是,我们的目标是在本地创建上下文文件并在 json 文件上测试它们。如果我们满意,我们可以将上下文文件部署到 public 网络服务 w/o 上,同时部署数据。

我还在 rdflib-jsonld gihub 上发布了一个问题:https://github.com/RDFLib/rdflib-jsonld/issues/80

我找到了问题的答案。 "@context" 键引用的文档还必须包含一个 "@context" 键。

例如,如果您的 json-ld 文档如下所示:

{ 
  "@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" 
  } 
}