如何在 Schema.org 标记中将作业 (jobTitle) 与组织 (worksFor) 关联起来?

2024-02-25

Under a Person https://schema.org/Person模式,我想要将每个职位与其各自的组织相关联。这是一个类似简历的环境,所以有很多工作和很多组织。

这是我的项目中一些代码的实际示例(内容被剪辑+更改):

<div itemscope itemtype="http://schema.org/Person">
  …
  <p><!--list of jobs-->
    <span itemprop="jobTitle">Job 1</span>, 
    <span itemprop="jobTitle">Job 2</span>, and 
    <span itemprop="jobTitle">Job 3</span>
  </p>
  <p><!--list of places worked for-->
    <span itemprop="worksFor">Company A</span> and
    <span itemprop="worksFor">Company B</span>
  </p>
</div>

返回一个类似的模式这来自https://search.google.com/structured-data/testing-tool/ https://search.google.com/structured-data/testing-tool/:

@type   Person
jobTitle    Job 1
jobTitle    Job 2
jobTitle    Job 3
worksFor    
    @type   Organization
    name    Company A
worksFor    
    @type   Organization
    name    Company B

假设我希望作业 1 和 2 属于公司 A,作业 3 属于公司 B。我该如何表达,以便它在架构中具有清晰的层次结构?

我明白我可以选择itemref(来自诸如如何关联 schema.org 中的项目? https://stackoverflow.com/questions/7745955/how-do-i-relate-items-in-schema-org)但我不知道如何设计一种方法来制作jobTitle参考Organization (worksFor).


我不相信模式和谷歌(或至少是结构化数据工具)解释它的方式之间不会发生这种情况。我可能是错的,但我认为问题在于两者jobTitle and worksFor适用于person。因此,谷歌会将这两个属性与该人相关联,但不一定将这两个属性相互关联。

也可能是我的方法中遗漏了一些东西,而这实际上是可能的。我想发布我的答案,至少引导您或有更好经验的人朝正确的方向前进(或证实我的怀疑)。我有两种方法,我相信微数据方法在工具中看起来是正确的,但却是错误的。我认为 JSON-LD 方法是正确的,但在结构化数据工具中无法正确显示。

微观数据方法

如果您可以在一定程度上修改 DOM,则可以使用元标记将组织嵌套在人员中。尽管结构化数据工具显示了我认为您想要的结果,但我不相信数据真的相关,因为员工并未真正附加到 ID:

<div itemscope itemtype="http://schema.org/Person" id="person1">
  <p><!--list of jobs-->
    <span>Job 1</span>, 
    <span>Job 2</span>, and 
    <span>Job 3</span>
  </p>
  <p><!--list of places worked for-->
    <span itemscope itemprop="worksFor" itemtype="http://schema.org/Organization">
        <span itemprop="name">Company A</span>
        <span itemscope itemprop="employee" itemref="person1" itemtype="http://schema.org/Person">
            <meta itemprop="jobTitle" content="Job 1">
        </span>
    </span> and
    <span itemscope itemprop="worksFor" itemtype="http://schema.org/Organization">
        <span itemprop="name">Company B</span>
        <span itemscope itemprop="employee" itemref="person1" itemtype="http://schema.org/Person">
            <meta itemprop="jobTitle" content="Job 2">
            <meta itemprop="jobTitle" content="Job 3">
        </span>
    </span>
  </p>
</div>

返回:

@type = Person

worksFor    
    @type = Organization
    name = Company A

    employee    
        @type = Person
        jobTitle = Job 1

worksFor    
    @type = Organization
    name = Company B

    employee    
        @type = Person
        jobTitle = Job 2
        jobTitle = Job 3

我通过嵌套来解决这个问题Person > Organization > Employee (Person) > JobTitle。我为具有元标记的员工添加了一个空白范围,以便您可以保持相同的前端样式。

我对这种方法的担忧是Employee在每个下Organization将会与父级断开连接Person。我在父项上使用了 id,并在每个项中使用了 itemrefEmployee指向该父 ID,但我不确定这是否真正受支持,或者可能嵌套就足够了(值得怀疑)。

JSON-LD方法

我认为 JSON-LD 方法正确地将人与组织联系起来,但 Google 的工具最终将推动jobTitle返回给基本上给你相同结果的人。不过,可能有更好的方法来关联数据。

<script type="application/ld+json">
      {
        "@context": {
            "@vocab": "http://schema.org/",
            "id": "@id",
            "graph": "@graph",
            "type": "@type"
        },
        "graph" : [
            {
                "type": "Person",
                "id": "Person1",
                "name": "John Smith",
                "worksFor" : [
                    {
                        "id": "CompanyA"
                    }, 
                    {
                        "id": "CompanyB"
                    }
                ]
            }, 
            {
                "type": "Organization",
                "id": "CompanyA",
                "name": "Company A",
                "employees": [
                    {
                        "@id" : "Person1",
                        "jobTitle" : ["Job 1", "Job 2"]
                    }
                ]
            }, 
            {
                "type": "Organization",
                "id": "CompanyB",
                "name": "Company B",
                "employees": [
                    {
                        "@id" : "Person1",
                        "jobTitle" : "Job 3"
                    }
                ]
            }
        ]
      }
</script>

不幸的是返回:

@type : http://www.example.com/Person
@id : http://www.example.com/Person1
name : John Smith
jobTitle : Job 1
jobTitle : Job 2
jobTitle : Job 3

worksFor    
    @type : http://www.example.com/Organization
    @id : http://www.example.com/CompanyA
    name : Company A

worksFor    
    @type : http://www.example.com/Organization
    @id : http://www.example.com/CompanyB
    name : Company B

虽然结构化数据工具以一种看似正确的方式提供了上述一种选择,另一种看起来错误但看似正确的方式,但很难说 Google 是如何的truly关联数据。也可能只是架构/数据工具在更基本的层面上假设了这种关系,通常有人不会在多个组织中拥有多个职位......但我只是在这一点上推测。

底线是- 我觉得问题在于Organization只能列在a下person as worksFor. jobTitle只能在a下person并且不低于Organization。你可以联系Person在一个Organization as employee,但是那个seems只是推动jobTitle回到相关的person在结构化数据工具中匿名。过去,结构化数据工具已知对 Google 文档存在一些缺陷,因此我不确定您不能 100% 依赖从它看到的内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Schema.org 标记中将作业 (jobTitle) 与组织 (worksFor) 关联起来? 的相关文章

随机推荐

  • 常量折叠的具体规则是什么?

    我刚刚意识到 CPython 似乎对表示相同值的常量表达式的处理方式与常量折叠不同 例如 gt gt gt import dis gt gt gt dis dis 2 66 1 0 LOAD CONST 0 2 2 LOAD CONST 1
  • BigQuery 的速度是否足以满足实时现场请求

    我正在研究是否可以使用 BigQuery 及其 API 根据访问者查看的内容进行现场查询 因此 响应时间至关重要 我加载了一个包含 10k 行 4 列 的非常简单的结构化数据集 并运行了一个非常简单的查询 这需要 1 到 2 秒的时间 希望
  • CorFlags.exe /32BIT+ 如何工作?

    我想我的问题是关于CLR http en wikipedia org wiki Common Language Runtime装载机 我想了解背后的机制CorFlags exe http msdn microsoft com en us l
  • 无法按升序对列表进行排序

    Map
  • 实验::可选的 nullopt_t 构造函数

    Here http www open std org JTC1 SC22 WG21 docs papers 2013 n3793 html optional nullopt被描述为nullopt t and nullopt为了optiona
  • EKCalendar 中的“完整日历同步”到底是什么?

    的文档EKCalendar类指出了这一点calendarIdentifier财产 与日历完全同步将丢失此标识符 你应该 有一个处理标识符为 no 的日历的计划 通过缓存其其他属性 可以更长时间地获取 完全同步 究竟何时发生以及除了calen
  • pySpark将mapPartitions的结果转换为spark DataFrame

    我有一项工作需要在分区的 Spark 数据帧上运行 该过程如下所示 rdd sp df repartition n partitions partition key rdd mapPartitions lambda x some funct
  • 在 Symfony 2 中强制用户登录

    每当我尝试删除anonymous security yml 中的配置 系统最终返回错误 310 重定向循环 这是到目前为止的配置 firewalls secured area pattern anonymous form login che
  • 至少一个数字和一个大写字母的javascript正则表达式

    检查给定字符串是否至少包含一个数字和一个大写字母的正则表达式是什么 提前致谢 我正在这样做 function validate pass var var password document getElementById npassword
  • (void)var 实际上做了什么?

    考虑以下main int main int argc char argv return 0 编译后cc Wall Wextra 生成 未使用的参数 的警告 当我不需要在函数中使用参数时 例如在信号处理函数 http en wikipedia
  • 我需要 Sybase 数据类型来保存不定长度的字符串。

    我的要求是声明一个接受最大大小的 xml 值的数据类型 问题 Sybase 中有 text xml 或 varchar max 数据类型吗 有文本数据类型 您可以找到更多信息here http infocenter sybase com h
  • form_tag 用于创建/更新操作 Rails 3

    我的路线文件如下所示 scope locslug userslug do post rate stars gt articles rate as gt rate article end 我正在尝试生成一个表单 其中包含针对rate文章中的动
  • 可以在 VS 2008 中默认禁用 XAML 设计器吗?

    我的许多 XAML 页面都是手动设计的 当我打开它们时不需要在设计器中显示 我更喜欢只显示 XAML 页面 大多数时候设计师都会妨碍 是否可以默认禁用设计器 并在我改变主意时提供 恢复加载设计器 链接 Tools gt Options gt
  • C# 内部访问修饰符

    我想将类密封在命名空间中 我正在查看 内部 访问修饰符 但这似乎只是在程序集中密封类 我可以将类密封在命名空间中吗 或者我必须将东西移到单独的程序集中吗 但随后我会遇到 Visual Studio 拒绝循环装配引用的问题 不 没有特定于命名
  • Eclipse ADT 错误:无法运行程序 adb

    我使用的是 Ubuntu 刚刚安装了适用于 64 位 Linux 的 Android SDK 仅 SDK 然后我安装了 Eclipse 的 ADT 插件 当我重新启动 Eclipse 时 它 要求我打开 SDK 管理器并安装一些操作系统 S
  • Microtime() 对于 C 和 C++ 等效吗?

    我想知道 C 中是否有与 PHP 函数 microtime 等效的函数andC 我环顾四周 但找不到明确的答案 Thanks 没有与 PHP 的 microtime 完全相同的函数 但您可以基于以下代码创建具有类似功能的函数 Mac OS
  • 如何将其拆分为头文件和源文件?

    我有一些 C 代码 我想将其拆分为头文件和源文件 ifndef BENCHMARK H define BENCHMARK H ifdef WIN32 include
  • 我需要为 JDK 1.6 下载哪个 Jersey 版本?

    我需要为 JDK 1 6 下载什么 Jersey 有 RESTful Web 服务支持 版本 请提供下载的 URL 将会有所帮助 我还需要文件上传支持 客户端和服务器端的 jar 依赖项是什么 文件上传的REST服务器代码如下 Path f
  • 如何从URL中获取域名

    如何从 URL 字符串中获取域名 例子 input output www google com google www mail yahoo com mail yahoo www mail yahoo co in mail yahoo www
  • 如何在 Schema.org 标记中将作业 (jobTitle) 与组织 (worksFor) 关联起来?

    Under a Person https schema org Person模式 我想要将每个职位与其各自的组织相关联 这是一个类似简历的环境 所以有很多工作和很多组织 这是我的项目中一些代码的实际示例 内容被剪辑 更改 div p spa