如何在rails 4 app中设置"application/ld + json"schema.org元数据

Sta*_*ars 9 ruby metadata schema.org ruby-on-rails-4 json-ld

我想使用json ld设置schema.org元数据.例如,以下链接使用ghost并且它具有"application/ld + json"元数据. http://blog.ghost.org/distributed-team-tools/

我想为我的rails应用程序实现类似的功能.我应该如何实现它.这样做是否有一些宝石

谢谢!

Gre*_*ogg 9

有一个JSON-LD gem(http://rubygems.org/gems/json-ld),但它可能不是你想要的.请注意,JSON-LD的重点在于它只是JSON,在这种情况下使用schema.org上下文来解释值.假设您的数据在ActiveRecord模型中,您需要一种方法来确保记录属性对应于相应的schema.org属性.如果是这种情况,那么只需将您的模型序列化为JSON(#to_json)就可以获得最大的收益.剩下的是在增加@context,@id@type字段的JSON.

例如,假设您有一个用户模型,其序列化为如下所示:

{
  "name": "Harry",
  "email": "Harry@example.org"
}
Run Code Online (Sandbox Code Playgroud)

由于两个"名"和"电子邮件"属性http://schema.org/Person,你可以得到中途有通过简单地添加@context@type如下:

{
  "@context": "http://schema.org/",
  "@type": "Person",
  "name": "Harry",
  "email": "Harry@example.org"
}
Run Code Online (Sandbox Code Playgroud)

假设您正在构建一个RESTful应用程序,最好给每个对象一个@id,这对应于此人的资源URL.这可能如下所示:

{
  "@context": "http://schema.org/",
  "@id": "http://example.com/people/harry",
  "@type": "Person",
  "name": "Harry",
  "email": "Harry@example.org"
}
Run Code Online (Sandbox Code Playgroud)

现在,如果您将http://example.com/people/harry检索为JSON(或JSON-LD),则可以返回该表示.

关于JSON-LD的另一个问题是它是"关联数据",因此包含对其他资源的引用对于允许它们的发现非常有用,就像你在HTML中所做的那样.schema.org文档包含大量示例,说明如何为它们定义的大多数类型生成不同类型的标记,包括JSON-LD.见http://schema.org/Person的一个例子,或http://schema.org/docs/full.html其完整的类型层次.

当您想要从其他来源(通常是某些RDF格式)生成此数据或解释您收到的数据时,JSON-LD gem会派上用场.您可以在http://json-ld.org/playground上进行试验.

您也可以使用带有type ="application/ld + json"的脚本标记在HTML中包含JSON-LD.如果您想了解数据的外观,可以在Google结构化数据测试工具或http://linter.structured-data.org/上进行测试.

  • >我正在使用局部和jbuilder模板。怎么样? (2认同)