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.我相信它定义认值的解释也清楚地表明为什么你不能在同一个上下文中有两个.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...