JSON-LD框架:框架对象属性仅作为术语(不作为IRI)

时间:2018-09-22 18:17:15

标签: parsing json-ld

我正在学习如何使用Node jsonld.js 使用JSON-LD框架,我想知道为什么某些属性被标记为IRI而另一些属性被标记为术语,而我可以看不出有什么明显的原因。

这里是sample

例如,在该示例中,name属性被标记为预期的,而在其他情况下,其标记为http://www.schema.org/name,与urlhttp://www.schema.org/url相同;我不知道为什么:

{
  "@context": "https://schema.org/docs/jsonldcontext.json",
  "@graph": [
    {
      "id": "_:b0",
      "type": "MusicRecording",
      "byArtist": {
        "id": "_:b1",
        "type": "http://www.schema.org/MusicGroup",
        "http://www.schema.org/name": "Snoop Dogg",
        "http://www.schema.org/sameAs": "/Snoop-Dogg/"
      },
      "name": "Paper'd Up",
      "schema:sameAs": "/Snoop-Dogg/Paper%27d-Up/",
      "url": "../Snoop-Dogg/Paper%27d-Up/",
      "http://www.schema.org/duration": "PT3M55S",
      "http://www.schema.org/image": "/static/track_images_200/lr1734_2009720_1372375126.jpg",
      "http://www.schema.org/inAlbum": {
        "id": "_:b2",
        "type": "http://www.schema.org/MusicAlbum",
        "http://www.schema.org/albumRelease": {
          "id": "_:b4",
          "type": "http://www.schema.org/MusicRelease",
          "http://www.schema.org/datePublished": "2001",
          "http://www.schema.org/recordLabel": "Priority"
        },
        "http://www.schema.org/name": "Paid the Cost to Be the Bo$$"
      },
      "http://www.schema.org/producer": {
        "id": "_:b3",
        "type": "http://www.schema.org/Person",
        "http://www.schema.org/name": "Fredwreck",
        "http://www.schema.org/sameAs": "/Fredwreck/",
        "http://www.schema.org/url": {
          "id": "../Fredwreck/"
        }
      },
      "http://www.schema.org/thumbnailUrl": {
        "id": "../static/track_images_100/mr1734_2009720_1372375126.jpg"
      }
    }
  ]
}

如何使用名为type而不是IRI的属性检索树(使用 jsonld.js )?

1 个答案:

答案 0 :(得分:2)

该术语必须与您用于该物业的IRI相匹配。例如,schema.org将name定义为http://schema.org/name。在您的示例中,您有http://www.schema.org/name

在很多地方,应将IRI(URL)值视为文本,为此,您要使用类似"http://schema.org/image": {"@id": "/static/track_images_200/lr1734_2009720_1372375126.jpg"}

术语选择的一部分看起来是要确保值与上下文中适当的@type定义相匹配。例如,image设置为{"@type": "@id"},因此它将仅匹配类似的内容。

这里是updated example on the playground