1

看起來好像谷歌現在已經實施了Schema.org第2版並且谷歌自己的例子沒有通過Google的驗證測試。例如,下面的是Google's example JSON-LD code for breadcrumbsGoogle現在支持Schema.org的新版本BreadcrumbList?

<script type="application/ld+json"> 
{ 
    "@context": "http://schema.org", 
    "@type": "BreadcrumbList", 
    "itemListElement": [ 
        { 
            "@type": "ListItem", 
            "position": 1, 
            "item": { 
                "@id": "https://example.com/arts", 
                "name": "Arts" 
            } 
        }, 
        { 
            "@type": "ListItem", 
            "position": 2, 
            "item": { 
                "@id": "https://example.com/arts/books", 
                "name": "Books" 
            } 
        }, 
        { 
            "@type": "ListItem", 
            "position": 3, 
            "item": { 
                "@id": "https://example.com/arts/books/poetry", 
                "name": "Poetry" 
            } 
        } 
    ] 
} 
</script> 

昨天,當我貼在上面的代碼爲test.html文件,Google's validation tool驗證它作爲「通行證」。

今天失敗了。看起來你現在必須明確定義一個mainEntity。但他們沒有打擾更新他們的文檔。

有誰知道在哪裏可以找到使用JSON-LD的官方文檔? Schema.org提供的內容並不多,而且似乎也過時了。我設法得到下面的代碼通過測試:

<script type="application/ld+json"> 
{ 
    "@context": "http://schema.org", 
    "@type": "WebPage", 
    "mainEntity": { 
        "@context": "http://schema.org", 
        "@type": "BreadcrumbList", 
        "itemListElement": [ 
            { 
                "@type": "ListItem", 
                "position": 1, 
                "item": { 
                    "@id": "http://www.example.com", 
                    "name": "Home" 
                } 
            }, 
            { 
                "@type": "ListItem", 
                "position": 2, 
                "item": { 
                    "@id": "http://www.example.com/shop.com", 
                    "name": "Shop" 
                } 
            } 
        ] 
    } 
} 
</script> 

我很擔心這就是:

比方說,你也可以定義在同一頁上的產物,使用微數據,將搜索引擎將麪包屑列表視爲mainEntity?即它在搜索結果中的排名是否會高於產品?

+0

在上一個問題中,您是否確實是指「Microdata」?所以你想爲'Product'的'BreadcrumbList'和Microdata使用JSON-LD? – unor

+0

[使用Microdata時出現同樣的問題](http://stackoverflow.com/q/32249948/1591669) – unor

+0

根據谷歌的其他方式。以下是谷歌推薦的摘錄:谷歌正在將JSON-LD支持添加到更多標記驅動功能。到目前爲止,所有Knowledge Graph功能,附加鏈接搜索框,Event Rich Snippets和Recipe Rich Snippe都支持JSON-LD; Google建議爲這些功能使用JSON-LD。對於剩餘的Rich Snippets類型和麪包屑,Google建議使用微數據或RDFa。 https://developers.google.com/structured-data/schema-org – user1749141

回答

2

你必須分離關注:

  • Schema.org是一個詞彙。
  • JSON-LD是一種語法。
  • 谷歌是supports結構化數據

    • 在JSON-LD語法提供和
    • 利用了Schema.org詞彙的消費者。

Schema.org不能是「過時」:他們當然是自己的類型/屬性的正規來源。如果他們的某些類型/屬性被棄用,他們通常仍然是詞彙的一部分。

「關於使用JSON-LD的官方文檔」是W3C推薦標準(與上文相關)。

如果我正確理解你的問題,你的問題是谷歌:他們的文檔與他們的測試工具。 They document它們支持Schema.org’s BreadcrumbList type,但their testing tool不承認這種類型:

屬性項目類型值無效。

(雖然此錯誤信息是指「項目類型」,這是一個微觀數據的屬性,它出現無論哪個支持的語法你測試。)

你沒有什麼可以做的。第一個片段是有效的JSON-LD,它適合使用Schema.org詞彙表。 Google甚至以這種方式記錄它的事實使得他們的測試工具似乎可能被竊聽(之前發生過幾次)。

關於您的第二個片段:使用mainEntity這種方式可能不是您想傳達的內容。你說的是麪包屑將是網頁的主要實體,但這是非常罕見的。通常,主要實體是Article等。

+1

是的,正好。我懷疑谷歌剛剛更新了他們對該技術的支持,因爲他們的樣本僅在2天前就開始工作。現在他們的樣本,就是這樣,它不起作用。如果我添加2.0版中明顯需要的「mainEntity」(在版本1.0中它是可選的),我可以得到它的工作。所以我懷疑谷歌今天更新了從版本1到版本2的支持。尋找確認。 – user1749141

+0

@ user1749141:Schema.org從不要求任何屬性。谷歌作爲衆多消費者之一,當然可以滿足他們的任何需求(他們只是說:如果你不提供這種財產,我們不會顯示豐富的代碼片段),但它們似乎是非常不可能的永遠需要使用'mainEntity' *這種方式(因爲它會是錯誤的,沒有任何意義)。如果使用'BreadcrumbList'(但目前沒有記錄),他們可能需要使用'mainEntity',但這並不意味着'BreadcrumbList'必須是主要實體:'mainEntity'通常是它的最後一個條目。 – unor