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

问题描述 投票:0回答:1

我正在尝试测试应用于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库:requests.get("http://127.0.0.1:4000/mycontext.json").text,可以测试我的文件在Web浏览器中是否可访问。每个测试都能正常工作,因为它返回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文件上对其进行测试。如果满意,我们可以将上下文文件部署到公共Web服务上,而无需部署数据。

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

json-ld rdflib
1个回答
0
投票

我找到了问题的答案。 "@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" 
  } 
}
© www.soinside.com 2019 - 2024. All rights reserved.