根据JSON-LD中的前缀和数据构造IRI

时间:2018-09-25 15:17:32

标签: json-ld

在将未编辑的JSON数据转换为JSON-LD时,我有一个问题使用前缀和数据值为对象构造IRI。我正在运行的示例代码是:

{ 
    "@context" : 
    { "prefix" : "http://www.gerastree.at/",
      "rdfs" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
      "@vocab" : "http://example.com/" ,
      "load" : "prefix:load"
       "items" : "prefix:item"

    }, 
    "@type" : "tree",
    "@id" : "prefix:t1" , 
    "items" : 
    [
        { "@id" : "prefix:t2",
          "@type" : "item",
          "load" : "some111"
         },
        { "@id" : "prefix:t3",
          "@type" : "item",
          "load" : "some2222"
         }    
    ]
}

但是当我将@id的值从“ prefix:t1”更改为原始JSON中具有的纯数据值(即,仅更改为“ t1”,“ t2”和“ t3”)时,对象就是不再处理了。 不正确的JSON-LD代码(至少未被riot读取)

{ 
    "@context" : 
    { "prefix" : "http://www.gerastree.at/",
      "rdfs" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
       "@vocab" : "http://example.com/" ,
       "load" : "prefix:load"
       "items" : "prefix:item"

    }, 
    "@type" : "tree",
    "@id" : "t1" , 
    "items" : 
    [
        { "@id" : "t2",
          "@type" : "item",
          "load" : "some111"
         },
        { "@id" : "t3",
          "@type" : "item",
          "load" : "some2222"
         }    
    ]
}

值“ t1”等是唯一的,我想使用它们作为IRI前缀来链接数据和其他数据。有没有一种方法可以在不更改生成JSON数据或编辑文件的程序的情况下,对上下文添加一些IRI。

我找到了一个解决方案(基于Json-LD > Define a "person" for easy reuse as values on different keys for WebPage schema的解决方案),但是不明白为什么它起作用。

{ 
    "@context" : 
    { "prefix" : "http://www.gerastree.at/",
      "rdfs" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
       "@base" : "http://example.com/" ,
      "load" : "prefix:load",
     "items" : "prefix:item"

    }, 
    "@type" : "tree",
    "@id" : "t1" , 
    "items" : 
    [
        { "@id" : "t2",
          "@type" : "item",
          "load" : "some111"
         },
        { "@id" : "t3",
          "@type" : "item",
          "load" : "some2222"
         }    
    ]
}

我认为这不是Any way to specify the default URI for the @id of a @type or the values of a property?的重复。

需要对上下文进行哪些添加和更改?

1 个答案:

答案 0 :(得分:1)

通过更多阅读JSON-LD建议和实验,我找到了解释为什么我的第三个版本可以按预期工作的原因。

@vocab仅应用于属性和对象 @base用于完成该主题的IRI。

不是很明显,但对于我的应用程序来说足够灵活。