2016-08-24 23 views
5

Theo một sơ đồ Person, Tôi muốn kết hợp từng chức danh công việc với tổ chức tương ứng của nó. Đây là một thiết lập giống như sơ yếu lý lịch, vì vậy có rất nhiều công việc và nhiều tổ chức.Làm cách nào để liên kết Công việc (jobTitle) với Tổ chức (worksFor) trong đánh dấu Schema.org?

Dưới đây là một ví dụ thực tế của một số mã từ dự án của tôi (nội dung cắt bớt + thay đổi):

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

Đó trả về một schema như này từ 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 

Hãy nói rằng tôi muốn Việc làm 1 & 2 là một phần của Công ty A và Công việc 3 với Công ty B. Làm thế nào tôi thể hiện rằng nó có một hệ thống phân cấp sạch trong Lược đồ?

Tôi hiểu rằng tôi có quyền lựa chọn itemref (từ câu hỏi như How do I relate items in schema.org?) nhưng tôi không thể tìm ra cách để thiết kế một cách để làm cho jobTitle tham chiếu Organization (worksFor).

+0

Tôi có thể chỉ cho bạn cách thực hiện điều này trong JSON-LD. Nếu bạn muốn microdata, bạn sẽ cần phải chuyển đổi nó. Điều đó có được chấp nhận không? –

+0

@JayGray Điều đó sẽ tuyệt vời nếu bạn có thể cho nó một shot! Tại thời điểm này một cái gì đó là tốt hơn không có gì cho tôi, tôi thực sự bị mắc kẹt ở đây. – Steven

Trả lời

1

Tôi không tin điều này có thể xảy ra giữa Schema và cách Google (hoặc ít nhất là công cụ Dữ liệu có cấu trúc) diễn giải nó. Tôi có thể sai, nhưng tôi nghĩ rằng vấn đề là cả hai jobTitleworksFor áp dụng cho person. Vì vậy, Google sẽ liên kết cả hai thuộc tính đó với người đó nhưng không nhất thiết phải liên kết hai thuộc tính với nhau.

Nó cũng có thể là tôi đang thiếu một cái gì đó trong cách tiếp cận của tôi và rằng điều này là thực sự có thể. Tôi muốn đăng câu trả lời của mình lên ít nhất là hướng dẫn bạn hoặc một người có trải nghiệm tốt hơn theo đúng hướng (hoặc xác nhận những nghi ngờ của tôi). Tôi có hai cách tiếp cận, tôi tin rằng cách tiếp cận Microdata xuất hiện ngay trong công cụ nhưng là sai. Tôi nghĩ rằng cách tiếp cận JSON-LD là chính xác nhưng không hiển thị đúng trong công cụ Dữ liệu có cấu trúc.

Microdata cách tiếp cận

Nếu bạn có thể sửa đổi DOM để một mức độ nào đó, bạn có thể sử dụng thẻ meta để làm tổ một tổ chức trong phạm vi con người. Mặc dù công cụ dữ liệu có cấu trúc cho thấy kết quả như tôi nghĩ rằng bạn muốn, tôi không thuyết phục các dữ liệu sẽ thực sự có liên quan vì người lao động là không thực sự gắn liền với 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> 

nào trả về:

@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 

Tôi đã tiếp cận điều này bằng cách lồng nhau Person>Organization>Employee (Person)>JobTitle. Tôi đã thêm khoảng trống cho nhân viên có thẻ meta để bạn có thể duy trì các kiểu giao diện người dùng giống nhau.

Mối quan tâm của tôi với phương pháp này là Employee trong mỗi Organization sẽ bị ngắt kết nối khỏi phụ huynh Person. Tôi đã sử dụng một id trên cha mẹ và itemref được sử dụng trong mỗi Employee để trỏ đến id mẹ đó nhưng tôi không chắc chắn nếu đó là thực sự được hỗ trợ, hoặc có thể nó được lồng nhau là đủ (nghi ngờ).

JSON-LD tiếp cận

Tôi nghĩ rằng cách tiếp cận JSON-LD đúng cách liên hệ người gia nhập Tổ chức, nhưng công cụ của Google cuối cùng sẽ đẩy jobTitle lại cho người về cơ bản đem lại cho bạn kết quả tương tự. Có thể có một cách tốt hơn để liên kết dữ liệu mặc dù.

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

nào không may trở lại:

@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 

Trong khi công cụ dữ liệu có cấu trúc trình bày một tùy chọn ở trên trong một cách mà có vẻ đúng và một trong đó trông sai nhưng dường chánh đáng, nên rất khó để nói như thế nào Google là thật sự liên quan đến dữ liệu. Nó cũng có thể chỉ là công cụ Schema/Data giả định mối quan hệ ở mức cơ bản hơn, nơi mà một người bình thường sẽ không có nhiều chức danh công việc trên nhiều tổ chức .. nhưng tôi chỉ đang suy đoán tại thời điểm đó.

Điểm mấu chốt là - Tôi cảm thấy vấn đề là Organization chỉ có thể được liệt kê dưới một person như worksFor. jobTitle chỉ có thể dưới person và không dưới Organization. Bạn có thể liên hệ Person theo số Organization dưới dạng employee, nhưng đó dường như để chỉ cần đẩy jobTitle quay lại liên quan person ẩn danh trong công cụ dữ liệu có cấu trúc. Công cụ dữ liệu có cấu trúc đã biết có một số sai sót trong tài liệu của Google trong quá khứ, vì vậy tôi không chắc chắn bạn không thể dựa vào 100% những gì bạn thấy từ nó.

Các vấn đề liên quan