微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

html5 – 如何在Schema.org标记中将Job(jobTitle)与Organization(worksFor)联系起来?

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/返回这样的模式:

@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公司的一部分,将Job 3作为公司B的一部分.我将如何表达,以便它在Schema中具有干净的层次结构?

我知道我可以选择itemref(来自像How do I relate items in schema.org?这样的问题),但我无法弄清楚如何设计一种方法来使jobTitle引用组织(worksFor).

解决方法

我不相信这可能发生在Schema和Google(或至少结构化数据工具)如何解释它之间.我可能是错的,但我认为问题是jobTitle和works适用于人.因此,Google会将这两个属性与此人相关联,但不一定将这两个属性相互关联.

也可能是我在方法中遗漏了一些东西,这实际上是可能的.我想发布我的答案,至少引导你或在正确方向上有更好经验的人(或确认我的怀疑).我有两种方法,我相信Microdata方法出现在工具中,但是错了.我认为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>来解决这个问题.组织>员工(人)>职称.我为带有元标记的员工添加一个空白范围,以便您可以保持相同的前端样式.

我对这种方法的关注是每个组织下的员工将与父人员断开连接.我在父项上使用了一个id,并在每个Employee中使用了itemref来指向那个父id,但我不确定它是否真的受到支持,或者它是否嵌套就足够了(可疑).

JSON-LD方法

我认为JSON-LD方法恰当地将人与本组织联系起来,但谷歌的工具最终会将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"]
                    }
                ]
            },"id": "CompanyB","name": "Company B","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

虽然结构化数据工具以一种看起来正确且看起来错误但似乎正确的方式呈现上面的一个选项,但很难说谷歌如何真正关联数据.它也可能只是Schema / Data工具在更基本的层面上假定关系,通常有人不会在多个组织中拥有多个工作头衔.但我只是在猜测那一点.

底线是 – 我觉得问题是组织只能作为worksFor列在一个人的下面. jobTitle只能在一个人之下而不在组织之下.您可以将组织下的人员关联为员工,但这似乎只是在结构化数据工具中匿名将jobTitle推回给相关人员.结构化数据工具过去已经知道有一些针对谷歌文档的缺陷,所以我不确定你不能100%依赖你从中看到的东西.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。