JSON-LD:将自定义 URI 分配给上下文中的空白节点

问题描述

我正在尝试将一个非常大的 JSON 文件转换为 JSON-LD。当我将下面的示例代码导入 GraphDB 时,db:Metadata 成为一个属性/谓词,将每个 Geneset:setX 节点与一个自动创建的空白节点 _:bX(图中灰色)连接起来,其中的属性 { {1}} 和 set_name 然后指向它们对应的值。

Linked data example

set_id

我想将这些空白节点转换为实际的 URI,最好使用唯一的形式 { "@context":{ "xsd": "http://www.w3.org/2001/XMLSchema#","db": "http://example.com/setDB#","_id": "@id","Geneset": {"@id": "db:Geneset"},"data": {"@id": "db:Metadata"},"set_name": { "@id": "db:set_name","@type": "xsd:string" },"set_id": { "@id": "db:set_id","@type": "xsd:string" } },"@graph": [ { "_id": "Geneset:set1","data": { "set_name": "set1","set_id": "M123"}},{ "_id": "Geneset:set2","data": { "set_name": "set2","set_id": "M456"}},{ "_id": "Geneset:set3","data": { "set_name": "set3","set_id": "M789"} }] } ,但更通用的 db:setX/data 也可以工作。我知道我可以通过在每个 db:data 定义的大括号内添加 "@id": "db:data/setX" 来实现前者,但由于我的完整数据有超过 100,000 个这些 Geneset,我想通过简单地修改 {{ 1}}。

这可能吗?

解决方法

通过 JSON-LD @context 机制(故意)不可能实现您所追求的那种“模板化”ID 生成。 @context 用于将树数据映射到图形数据,而不是转换它。

因此,在处理之前以编程方式将这些 ID 值注入 JSON-LD 是一种选择。

您可能还想在 JSON-LD WG's mailing list 上询问以获得更多选项。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...