混合 JSON-LD CollectionPage 和 Schema.org 的微数据 `hasPart`

2023-12-03

下面的微数据标记工作得很好,Google 的结构化数据测试工具显示一个CollectionPage and WebSite/WebPage作为孩子。

<body itemscope itemtype="https://schema.org/CollectionPage">
  <span itemscope itemtype="https://schema.org/WebSite" itemprop="hasPart">
    <a href="https://springfield-xxxx.us" itemprop="url">Official site of Springfield</a>
  </span>
  <span itemscope itemtype="https://schema.org/WebPage" itemprop="hasPart">
    <a href="https://facebook.com/group/XXXX" itemprop="url">Local events in Springfield</a>
  </span>
  <span itemscope itemtype="https://schema.org/WebPage" itemprop="hasPart">
    <a href="https://news.us/city/springfield-xxxx" itemprop="url">Latest news in Springfield</a>
  </span>
</body>

但是当我添加 JSON-LD 时Google 的结构化数据测试工具显示对象CollectionPage and WebPage/WebSite分开就像他们没有联系一样。以下是 JSON-LD 的示例:

<!DOCTYPE html>
<html>
<head>
  <script type="application/ld+json">
    {
      "description": "...",
      "author": {"@type":"Person", "name": "Homer J. Simpson"},
      "@type": "CollectionPage",
      "url": "http://my-springfield.us/sites",
      "publisher": {
        "@type": "Organization",
        "logo": "Object of type ImageObject here",
        "name": "Homer J. Simpson"
      },
      "image": "...",
      "headline": "Springfield Sites",
      "sameAs": ["..."],
      "@context": "http://schema.org"
    }
  </script>
</head>
<body>
  <span itemscope itemtype="https://schema.org/WebSite" itemprop="hasPart">
    <a href="https://springfield-xxxx.us" itemprop="url">Official site of Springfield</a>
  </span>
  <span itemscope itemtype="https://schema.org/WebPage" itemprop="hasPart">
    <a href="https://facebook.com/group/XXXX" itemprop="url">Local events in Springfield</a>
  </span>
  <span itemscope itemtype="https://schema.org/WebPage" itemprop="hasPart">
    <a href="https://news.us/city/springfield-xxxx" itemprop="url">Latest news in Springfield</a>
  </span>
</body>
</html>

我尝试把@id在 JSON-LD 中和itemid on the body无济于事:谷歌测试工具显示两个单独的CollectionPages或其他类型的两个单独的项目。

我的问题:如何连接 JSON-LD 和微数据,以便 Google 测试工具显示一个CollectionPage with WebPage/WebSite作为孩子/道具?


就像他们没有联系一样

嗯,他们aren’t在你的例子中连接。 JSON-LD 和 Microdata 无法在语法级别上协同工作。

如果要连接以不同语法定义的实体,唯一的方法是

  • 给这些实体 URI(如果它们是相同的东西,则为相同的 URI),并且
  • 将这些 URI 作为属性值引用(如果一个实体是另一实体的属性值)。

提供实体 URI按照你提到的方式工作:@id在 JSON-LD 中,并且itemid在微观数据中(并且与resource在 RDFa Lite 中)。

消费者(例如搜索引擎或 Google 的 SDTT 等服务、浏览器插件等本地客户端)必须支持以下引用(并非全部都支持),如果他们确实支持以下引用,那么他们还必须支持解析附加语法(并非所有人都这样做)。

但即使您使用此类 URI 引用,它也不会改变您使用的语法的一致性要求。您的 HTML 文档无效,因为您有itemprop不属于的属性itemscope。这是不允许的。因此,如果您想继续使用 Microdata,您也必须在 Microdata 中提供父项(CollectionPage在你的情况下)。

这将是传达两者的方式CollectionPage出现的次数代表相同的实体(它们具有相同的 URI = 当前文档的基本 URL):

<script type="application/ld+json">
  {
    "@context": "http://schema.org",
    "@type": "CollectionPage",
    "@id": ""
  }
</script>

<div itemscope itemtype="http://schema.org/CollectionPage" itemid="">
  <span itemprop="hasPart" itemscope itemtype="http://schema.org/WebSite"></span>
  <span itemprop="hasPart" itemscope itemtype="http://schema.org/WebSite"></span>
  <span itemprop="hasPart" itemscope itemtype="http://schema.org/WebPage"></span>
</div>

Google 的 SDTT 仍然显示两个CollectionPage条目(如果语法混合),但它们(正确地)具有相同的 URI。由谷歌决定如何处理这些信息以实现其各种结构化数据功能。也许它们的所有功能都支持混合语法引用(他们似乎没有记录下来);他们的 SDTT 如何显示事物并不一定反映他们如何解释其特征。

更多示例

  • same ProductJSON-LD + 微数据
  • WebPage(JSON-LD) +BreadcrumbList(微观数据)
  • Organization(JSON-LD) +WebPage(微观数据)
  • CollegeOrUniversity(JSON-LD) +WebPage(微观数据)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

混合 JSON-LD CollectionPage 和 Schema.org 的微数据 `hasPart` 的相关文章

随机推荐

  • 自动标记 C 中未使用的结构成员

    我需要一个工具来自动标记未使用的结构成员在 C 代码库中 我对 未使用 的定义很简单 如果从代码中删除结构成员定义 并且代码编译成功 则该结构成员被声明为未使用 问题是 如何以自动化方式完成此操作 由于代码库很小 速度并不是太重要 关于该主
  • Marionette.js appRouter 在应用程序启动时未触发

    我目前正在将 Marionette 集成到现有的 Backbone 应用程序中 我已经有一个现有的 Backbone 路由器 但我正在尝试实现 Marionette AppRouter 来取代它 问题是 在新 Marionette 路由器应
  • 调试 Qt 源代码

    是否可以进入 Qt 源 例如qmainwindow cpp 在 Qt Creator 中 目前我正在看到反汇编 但如果能看到源代码就好了 当然 但你可能必须首先 转到 QT HOME qt 使用 debug 或 debug and rele
  • 将 uiimage 设置为 nil 不会使用 ARC 释放内存

    我有一个滚动视图 它在页面滚动时显示不同的图像 例如 PhotoScroller 我正在使用ARC 当有人滚动到另一个页面时 我将当前未显示的 UIImageView 的图像属性设置为 nil 作为 尝试 避免内存崩溃 这种情况仍在发生 然
  • Now.js 中的会话支持

    Now js 引用 只需在 nowjs initialize 中传递一个连接或快速 http 服务器 this user session 就应该可用 So express require express app module exports
  • 如果任何线程发生异常,则中断所有线程

    我有一个方法名称someTask我必须调用 100 次 并且我正在使用异步编码 如下所示 for int i 0 i lt 100 i futures add CompletableFuture supplyAsync gt someTas
  • Postgres 中的递归 CTE

    我有一个结构如下的表 Employee ID Employee Name Manager ID 而且 对于每个员工 我都需要出示最高管理者的 ID 我的意思是 例如 如果我有 EmployeeID 2 其经理为 3 因此 数字 3 的经理为
  • 如何允许某些特定IP地址访问我的WCF服务

    我有一个 WCF 服务返回 xml 我只想要一个 IP 地址来访问它 例如 10 0 0 5 有人可以告诉我我该怎么做吗 请告诉我除防火墙和 IIS 之外的其他内容 您需要添加 ip 过滤 如下所示 https stackoverflow
  • 将文本值输入到 div 中?

    假设我有这个文本框
  • IPv6 的示例数据?

    是否存在 IPv6 流量的示例数据集 例如Apache 日志还是流量分析日志 或者 是否有人有任何想法如何生成一个或 乐观地 现有工具来生成数据 理想情况下 我希望实际部署的示例地址与该范围内的地址数量和 或来自这些范围的预期流量成比例 即
  • 访问资源目录路径

    看起来 NSBundle mainBundle pathForResource name ofType png 对于 Images xcassets 资产目录内的资产 不返回任何内容 我也尝试过 NSBundle mainBundle pa
  • 雅虎 YQL RSS - 错误请求

    为了使用 jQuery 发出跨域 AJAX 请求 我尝试使用 YQL RSS select from rss where url https www top1000funds com feed most popular posts My c
  • C++中如何将字符串转换为char *?

    我怎样才能转换string in to char 我使用了以下方法 但它不起作用 在运行时它给我以下错误 运行时检查失败 3 变量 url 正在被使用而没有 正在初始化 尽管我已经将其初始化 如下面的代码所示 你能给我举个例子吗 char
  • 具有动态键的对象的 Apollo/GraphQL 字段类型

    假设我的 graphql 服务器想要以 JSON 形式获取以下数据 其中person3 and person5是一些 id persons person3 id person3 name Mike person5 id person5 na
  • JTable 基于隐藏列的排序

    我想排序JTable基于一个隐藏列的行 假设我有一个像这样的 JTable column1 column2 val1 val2 现在我又多了一个被隐藏的column3 我不想显示 当用户单击 Column2 时 它应该根据 Column3
  • 在 JavaScript 中创建特定时区的日期对象并将其转换为 UTC

    我的应用程序当前以以下格式存储特定事件的日期和时间 date 2022 05 06 time 00 00 12 00 AM 每个事件的时间还包含与其关联的时区 如果组织活动的人来自新加坡 那么时区将亚洲 新加坡 当我向与会者发送此活动的日历
  • 使用delphi以编程方式执行防病毒程序

    我编写了一个小应用程序来使用 indy 组件传输文件 现在我想在传输完成后启动防病毒程序来检查文件 下载完成后 如何执行客户端安装的防病毒程序 UPDATE下载文件时我需要实现类似于 Firefox 的功能 然后执行机器中安装的防病毒软件
  • 如何以编程方式设置拨号连接的“自动配置脚本”?

    我在 Internet 选项 gt 连接 中有一个拨号连接 我想以编程方式为其设置一个 自动配置脚本 连接设置之一 将其设置为 LAN 很容易 但我找不到有关将其设置为其他连接的任何信息 好的 我已经解决了 实际上 它以与存储 LAN 设置
  • 如何使用基于 JWT 的身份验证处理文件下载?

    我正在用 Angular 编写一个 Web 应用程序 其中身份验证由 JWT 令牌处理 这意味着每个请求都有一个包含所有必要信息的 身份验证 标头 这对于 REST 调用非常有效 但我不明白应该如何处理后端托管文件的下载链接 文件驻留在托管
  • 混合 JSON-LD CollectionPage 和 Schema.org 的微数据 `hasPart`

    下面的微数据标记工作得很好 Google 的结构化数据测试工具显示一个CollectionPage and WebSite WebPage作为孩子 span a href https springfield xxxx us Official