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

JSON-LD: Assign custom URIs to blank nodes within context

我正在尝试将一个非常大的 JSON 文件转换为 JSON-LD。当我将下面的示例代码导入 GraphDB 时,db:metadata 变成一个 property/predicate 连接每个 GeneSet:setX 节点和一个自动创建的空白节点 _:bX(图中灰色),从中属性 set_nameset_id 然后指向它们对应的值。

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

我想将这些空白节点转换为实际的 URI,最好使用独特的形式 db:setX/data,但更通用的 db:data 也可以。我知道我可以通过在每个 "data": {...} 定义的大括号内添加 "@id": "db:data/setX" 来实现前者,但是由于我的完整数据有超过 100,000 个这些 GeneSets 我想通过简单地修改 @context.

这可能吗?

通过 JSON-LD @context 机制(故意)无法实现您之后的那种“模板化”ID 生成。 @context 用于将树数据映射为图形数据,而不是对其进行转换。

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

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