微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

rdf – @vocab在JSON-LD中的用途是什么?与@context的区别是什么?

JSON-LD中的@vocab属性是什么?正如我所看到的,你可以“导入”一个远程词汇表,但这与@context可以做的不一样吗?如果我没错,那么你也可以“导入”@context的远程源代码.那么@vocab和@context之间的区别在哪里?

额外的问题:我可以拥有一个以上的@vocab吗?例如,第一个引用到schema.org,另一个引用到rdfs?

解决方法

@vocab专门用于声明所有术语派生的认词汇表,而不必为每个术语声明特定的映射(正如您在@context中通常所做的那样).

例如,请参阅此代码段(取自JSON-LD 1.0 spec):

{
  "@context": {
    "@vocab": "http://schema.org/"
  }
  "@id": "http://example.org/places#BrewEats","@type": "Restaurant","name": "Brew Eats"
  ...
}

在这个片段中,@ vocab用于定义在此上下文中,所有术语都来自schema.org词汇表.因此,在以下片段中,Restaurant会映射到http://schema.org/Restaurant,并将地图命名为http://schema.org/name.您当然也可以在@context中使用显式映射来完成此操作:

{
  "@context": {
    "Restaurant": "http://schema.org/Restaurant","name" : "http://schema.org/name" 
  }
  "@id": "http://example.org/places#BrewEats","name": "Brew Eats"
  ...
}

但是当你开始使用来自相同词汇表的越来越多的术语时,这很快变得乏味. @vocab只是一个有用的简短方法:“如果我没有明确的术语映射,这就是它映射到的”.

至于你是否可以使用多个@vocab:你可以在JSON-LD文档中拥有多个@vocab(就像你可以拥有多个@context一样),但你不能同时拥有多个@vocab @context.我相信它定义认值的解释也清楚地表明为什么你不能在同一个上下文中有两个.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐