【问题标题】:How can I override the @context when loading json-ld in Jena在耶拿加载 json-ld 时如何覆盖@context
【发布时间】:2017-01-05 21:04:52
【问题描述】:

我正在使用 Jena 加载 JSON-LD 文档:

  Model mj = RDFDataMgr.loadModel([filename]);

实际加载的内容在这里:http://build.fhir.org/account-example.jsonld

Jena 关闭并解析上下文,并返回错误(LOADING_REMOTE_CONTEXT_FAILED - Jena 代码中实际原因的可爱抑制:-()。但无论如何我需要覆盖上下文,并使用不同的源,因为我我正在为 build.fhir.org 上发布的内容进行构建,我需要使用我的本地版本。我看不到如何覆盖上下文解析

或者,我可以使用此处记录的加载方法:https://github.com/jsonld-java/jsonld-java#code-example - 但我不知道如何从那里获取 Jena 图(而且我还没有弄清楚如何使自定义分辨率在我的 Eclipse 上下文中工作要么)

如何使用在某处代码中定义的上下文来获取 Jena 图?

【问题讨论】:

    标签: jena json-ld hl7-fhir


    【解决方案1】:
    1. 我认为 Jena 开发人员订阅了相关标签 RSS 流。他们可能会权衡LOADING_REMOTE_CONTEXT_FAILED 错误的清晰度。但对我来说似乎很清楚。

    2. 为了覆盖上下文,您可以使用read(Model model, String uri, Context context) 方法。 ModelFactory.createDefaultModel() 将创建一个 Model 的实例,您可以将其作为第一个参数传递。在此处查看更多示例:https://github.com/apache/jena/tree/master/jena-arq/src-examples/arq/examples/riot

    3. 替代库与 Jena 不兼容(也不是 RDF4J,这让我觉得很傻),因此没有简单的方法可以将它与 Jena 相关的代码一起使用。

    4. 最后,您提供了用于获取模型的代码示例,但现在提到了一个图表 - 还有一种方法:read(Graph graph, String uri, Context context)

    【讨论】:

    • try { /* stuff */ } catch (final Exception e) { throw new JsonLdError(JsonLdError.Error.LOADING_REMOTE_CONTEXT_FAILED, url); } 隐藏上下文加载失败的原因。错误的地址?错误的配置? http认证?缺少 CORS?错误的内容类型?有很多事情要猜测,没有例外的提示。如果耶拿开发人员正在阅读....我想我只是不得不实际使用源代码,而不是获取罐子....
    • 至于 .read() - 感谢您的指点,但我找不到任何示例来说明如何使用上下文来解决我的问题。我想我只需要走源
    • 声音相关 issues.apache.org/jira/browse/JENA-1178 - 你可以在 Jena 用户列表中询问。不是每个人都订阅 StackOverflow。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多