DiscussionForumPosting 的 Schema.org 数据出错?

我在 DiscussionForumPostingSchema.org 数据中发现了一个 bug。

当我通过 验证器 运行一个随机的 Discourse 论坛主题时,它显示 @id 字段的 URL 不存在。

这是一个带有 /post_2 后缀的示例(这是一个 404 错误):

我认为这些 @id 字段应该是有效的 URL,因为 W3.org 说:

为了能够从外部引用图中的节点,节点拥有标识符非常重要。IRI 是链接数据的基本概念,要使节点真正链接,解引用标识符应该会产生该节点的表示。这可能允许应用程序检索有关节点的更多信息。

1 个赞

我想知道这是否是 validator 显示 id 的方式有问题。据我所知,id 是从标记中提取的,并不是我们自己定义的,例如:

<div id='post_1' itemscope itemtype='http://schema.org/DiscussionForumPosting' class='topic-body crawler-post'>

id='post_1@id

如果您在 validator 中单击该 id 部分,它会正确地突出显示具有匹配 id 的帖子……因此,看起来 validator 可以正确识别它。

我注意到其他带有 @id 值的网站也有这种行为,例如在此 stackoverflow.com 问题中:

Screenshot 2023-03-28 at 5.59.12 PM

这也有同样的问题,https://stackoverflow.com/questions/7227202/answer-38775925 实际上并不是一个有效的 URL,它存在同样的错误,应该是 # 而不是 / https://stackoverflow.com/questions/7227202#answer-38775925

是否有任何迹象表明这会在实际使用此数据时导致任何问题?

1 个赞

这很有趣。我没想到会去检查 HTML 源代码,只是以为它是 JSON-LD。

Google 使用 schema 数据,但不确定他们是否使用这个特定的数据。schema.org 的文档写得不是很清楚。

看起来 Discourse 在每个主题上放置了多个 DiscussionForumPosting,但文档中的示例看起来 DiscussionForumPosting 可能指的是主帖而不是评论?文档列出了一个 comment 字段,其中包含一个 Comment(单数),尽管描述的措辞是复数。

image

我刚看了 Invison 是如何做的,它使用 JSON-LD,将 Comment 对象放在 comment 字段中。看起来发送到浏览器需要很多额外的文本。

我不知道答案是什么,但我稍后会尝试做更多研究。

1 个赞

这相关吗?

3 个赞

我碰巧在这个论坛上潜水,这很方便。我拥有解析它的 Google 代码。

链接的帖子很好地回应了那个跑题的评论。我将在下面处理其余部分。

将 HTML id 属性解释为节点 ID 本质上是非标准的。这在 Google 的 microdata 解析的最初阶段就已完成,可能是出于模糊的原因。如果你想明确地这样做,你应该使用 itemid。我希望有一天能移除那个 hack,但要无损地移除它很难。

其次,IRI 不必是可解引用的。这是 W3C 的一项建议,但许多 IRI 并非如此,Google 绝对不要求这样做。

这只有在导致结构化数据中的节点无意中合并时才是一个问题,例如如果你在 HTML 中的其他地方使用了相同值的 itemid。否则,这只是一种可以忽略的怪异现象。

哦,请不要切换到 JSON-LD。老实说,对于像论坛这样的文本密集型标记来说,JSON-LD 是首选。不得不重复文本内容很愚蠢。它只是更容易编写,这就是我们一直在推动它的原因。

9 个赞

感谢潜水 @rrlevering!听起来可以关闭此问题了,我们将在 Different schema type for Topics and Posts 中更新主题/帖子 schema。

5 个赞

此主题已自动关闭,已有 2 天。不再允许回复。