How to link Job (jobTitle) with organization (worksFor) in Schema.org markup?

In the Person schema, I want to associate each job title with the corresponding organization. This is similar to a resume, so there are many jobs and many organizations.

Here is an example of using some code from my project (content is cropped + changed):

 <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> 

Returns a scheme such as , from 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 

Let's say I want Jobs 1 and 2 to be part of Company A and Job 3, to be with company B. How can I express this so that the Scheme has a clean hierarchy?

I understand that I have an itemref option (from questions such as How do I link items in schema.org? ), But I can't figure out how to design a way to link jobTitle Organization ( worksFor ).

+5
source share
1 answer

I don’t think this could happen between Schema and how Google (or at least the Structured Data tool) interprets this. I could be wrong, but I think the problem is that both jobTitle and worksFor apply to person . This way, Google will associate both of these attributes with a person, but not necessarily associate the two attributes with each other.

It may also be that I am missing something in my approach and that it is really possible. I would like to post my answer, at least direct you or someone with the best experience in the right direction (or confirm my suspicions). I have two approaches, I believe that the Microdata approach appears directly in the tool, but this is wrong. I think the JSON-LD approach is correct, but not displayed properly in the Structured Data tool.

Microdata approach

If you can change the DOM to some extent, you can use meta tags to organize the organization within a person. Although the structured data tool shows the results, I think you want it, I'm not sure that the data will really be related to the fact that the employee is really not attached to 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> 

What returns:

 @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 

I approached this by attaching person > Organization > Employee ( person )> jobTitle . I added an empty space for the employee with meta tags so that you can maintain the same interface styles.

My concern with this approach is that the Employee under each Organization will be disconnected from the parent person . I used the parent id and used itemref in each Employee to point to that parent id, but I'm not sure if this is really supported, or maybe its nested enough (doubtful).

JSON-LD Approach

I think the JSON-LD approach correctly connects the person to the Organization, but the Google tool will eventually push jobTitle towards the person, basically giving you the same results. However, there may be a better way to link data.

 <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> 

Unfortunately returns:

 @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 

While the Structured Data tool presents one option above in a way that looks right and the other looks wrong but seems right, it's hard to say how Google really links the data. It may also be that the Schema / Data tool assumes a relationship at a more basic level, where usually someone will not have several job titles for several organizations .. but I'm just thinking at that moment.

Bottom line . I feel that the Organization problem can only be indicated in person as worksFor . jobTitle can only be under person , not under Organization . You can associate a person under Organization as an Employee , but it seems to just push jobTitle back to the associated person anonymously in the structured data tool. The structured data tool has been known to have some flaws regarding Google documentation in the past, so I'm not sure that you cannot rely 100% on what you see on it.

+1
source

All Articles