为什么简单的结构化数据(Microdata,RDFa)并不简单
本文将深入了解与Microdata和RDFa相关的问题和解决方案,以及为什么一个简单的问题并不简单。
介绍
首先,让我们了解为什么我们需要像Microdata和RDFa这样的结构化数据及其用途。假设你有一个包含“Jaguar”一词的网页内容,此时阅读文章的人可以根据上下文判断“Jaguar”指的是一种动物还是一个汽车品牌。不幸的是,目前的机器(计算机)无法自动理解这种区别,因为它们不知道这些词在什么上下文中使用。因此,这就是为什么我们需要手动插入结构化数据,为机器提供关于我们内容的上下文信息。这意味着人类需要手动添加额外的信息来向机器解释页面在谈论什么!
为什么我们需要让机器知道页面在谈论什么?一个原因是因为搜索引擎(如Google)使用这些信息在搜索结果页面(SERP)中显示丰富的片段。
问题
为了手动添加结构化数据,你需要擅长HTML、SEO(搜索引擎优化)以及Microdata/RDFa,但并非每个人都有这些技能。不同角色的用户有不同的技能。现在让我们分析所有的问题,看看我们如何以自动化的方式实现和添加这类信息。
问题一
为了生成有效的语义(因为我们不希望因改进而造成灾难),我们需要一个数据库,以便检查语义代码是否有效。数据库可能是一个包含schema.org提供的所有可用类型和属性的压缩.json文件。实际上,这正是JMicrodata所做的事情——它使用一个包含所有内容的.json文件来检查语义的有效性,而这个文件是由Spider4Schema网络爬虫生成的。
很遗憾,schema.org没有提供官方的.json文件,但他们正在努力开发,因此目前需要在外部生成文件。文件需要外部生成。另一个问题是,由于这是一个新的标准,schema.org的规范经常更新,这意味着需要频繁地生成和更新类型.json文件。
问题二
目前Google支持以下类型的丰富片段:人物、事件、评论、产品、食谱和面包屑导航。但他们正在努力支持新类型。Yandex、Bing和Baidu的情况也是一样,他们只支持其中的一些。所以简而言之,目前我们不需要支持所有可用的类型。
问题三
Google需要某些数据来为每种支持的类型生成丰富片段,如果缺少必需的属性,它将不会显示丰富片段。遗憾的是,schema.org不提供任何必需的属性,也没有标准化。
如果我们实施结构化数据,我们希望确保丰富片段显示出来——因此我们必须确保提供必需的数据。为了减少这种情况发生的可能性,我们必须确保当发布者保存文章时,必需的属性至少被提供。为了查看和检查哪些属性是必需的,我们需要将它们放在某个地方,一个解决方案就是types.json文件。如果是这种方式,我们需要在types.json文件中手动指定哪些是必需的,Google没有提供任何API来自动获取该列表。其他搜索引擎也是如此。
问题四
正如文章开头所述,人类需要手动添加额外的信息来向机器解释页面在说什么。即使我们可以在某些部分自动化这个过程,但有些部分我们无法控制,一个例子就是内容编辑器。我们无法控制最终用户在内容正文中插入的内容类型,他们必须手动指定嵌套级别的上下文。
所以简要总结一下
完全自动生成结构化数据(微数据、RDFa)的万能钥匙还不存在。目前还没有强大的标准,每个搜索引擎只支持少数类型,并且为了显示丰富片段,需要一些必需的属性,而schema.org不提供这些属性,也没有提供包含所有内容的.json文件。
这是一项年轻的技术,标准每天都在更新,事情需要频繁更新。
解决方案
尽管无法完全自动化结构化数据(微数据、RDFa)的完全自动生成,但可以使用JMicrodata库部分实现,该库允许你显示有效的语义,并使用回退来动态更改页面类型。但该库不易于使用,也不直观。
感谢Thomas Hunziker的想法,为Joomla 3.2+系统创建了一个插件来简化CMS中JMicrodata库的使用。基本上,该插件解析HTML标记,并将data-* HTML5属性转换为微数据语义。data-*属性是HTML5的新特性,它们使我们能够在所有HTML元素上嵌入自定义数据属性。所以如果你禁用库输出,HTML仍然会被验证。
您可以在以下位置下载和查看插件文档:点此下载。
(您也可以下载并尝试包含Microdata库新版本的相同插件,其中包含JRDFa库。这样,您只需一个按钮即可轻松地在Microdata和RDFa Lite 1.1语义之间切换)
使用语法很简单
您可以在任何地方使用该data-sd HTML5属性:在您的视图、模板、文章编辑器,任何允许您修改HTML的地方。
在渲染网页之前,插件将搜索data-sd属性,并将其替换为生成的微数据语义。
目前此插件不支持回退和多个data-*后缀,但它应该会发展到类似这样的功能(尚未实现)
这将允许添加回退和自定义后缀以进行搜索和转换,因此任何第三方开发者都可以添加并使用自己的后缀。但对于非HTML和Microdata/RDFa专家来说,这种解决方案仍然很复杂。
现在我正在开发由YouJoomla.com提出的实现方案,目前尚未实现,但应该很快就会到来!以下是实现的简单概念验证
从文章选项中,您只需选择Google支持的一种类型并填写属性。此外,如果您使用此功能,则在插入Google要求的必填字段之前,您将无法保存内容,这样丰富片段就会在搜索结果页面上显示。
从前端看,以下是该信息的显示方式
结论
通过使用这两种实现,编辑器可以简单地将结构化数据添加到文章中,开发人员可以在自己的扩展中使用API,SEO专家也可以从编辑器中轻松添加。还有很多工作要做,已经进行了许多讨论和实验。库的新版本支持RDFa语义,因此您可以选择Microdata和RDFa,还有一个系统插件允许您全局使用和添加结构化数据。尚未提交任何拉取请求,但到GSoC 2014项目结束时,新的更新将被建议插入项目核心。
此外,感谢:Ruth Cheesley、Matt Thomas、Thomas Hunziker、YouJoomla.com和社区。
在Joomla社区杂志上发表的一些文章代表了作者在特定主题上的个人意见或经验,可能与Joomla项目的官方立场不一致
通过接受,您将访问由 https://magazine.joomla.net.cn/ 之外的第三方提供的服务
评论