在JSON-LD中,是否可以为属性值定义URI映射?

Maa*_*ten 9 json-ld

假设我们有以下JSON:

{
  "@context":
  {
    "name": "http://schema.org/name",
    "status": "http://schema.org/status"
  },
  "name": "Manu Sporny",
  "status": "trollin'"
}
Run Code Online (Sandbox Code Playgroud)

(JSON-LD游乐场)

trollin'状态被标识一个URI: http://example.com/trolling.是否可以将trollin'上面示例中的关键字扩展为URI http://example.com/trolling

直接操作上下文不起作用:

{
  "@context":
  {
    "name": "http://schema.org/name",
    "status": "http://schema.org/status",
    "trollin'": "http://example.com/trolling"
  },
  "name": "Manu Sporny",
  "status": "trollin'"
}
Run Code Online (Sandbox Code Playgroud)

(JSON游乐场)

强制的类型status@id也是不行的,因为它会假设trollin'是一个相对的URI.

{
  "@context":
  {
    "name": "http://schema.org/name",
    "status": {
      "@id": "http://schema.org/status",
      "@type": "@id"
    },
    "trollin'": "http://example.com/trolling"
  },
  "name": "Manu Sporny",
  "status": "trollin'"
}
Run Code Online (Sandbox Code Playgroud)

(JSON-LD游乐场)

Gre*_*ogg 7

是的,你可以这样做,你需要将状态类型设置为@vocab:

{
  "@context":
  {
    "name": "http://schema.org/name",
    "status": {
      "@id": "http://schema.org/status",
      "@type": "@vocab"
    },
    "trollin'": "http://example.com/trolling"
  },
  "name": "Manu Sporny",
  "status": "trollin'"
}
Run Code Online (Sandbox Code Playgroud)

这是一个游乐场的链接.

  • 这个`{"@ type":"@ vocab"}`描述在哪里?我似乎无法在[官方JSON-LD规范](http://www.w3.org/TR/json-ld/)中的任何地方找到它.更新:我找到了它:http://lists.w3.org/Archives/Public/public-hydra/2014Sep/0029.html>经过与Gregg的一些讨论后,他向我指了http://www.w3.org/TR/json-ld-api/#value-expansion,这就是结果.> @vocab关键字具有第二个含义,在json-ld规范中没有提到,仅在api中.如果在上下文中用作@type的值,则表示必须将相应的属性值扩展为IRI. (3认同)
  • 好奇......为什么在JSON-LD规范中从未提及过它?另外...... JSON-LD API规范是_very_神秘的(真正的RDF风格),我似乎无法确切地找到这个`{"@ type":"@ vocab"}`构造的描述...... (2认同)