2015-06-09 30 views
35

Şema.org için bir siteye JSON-LD uygulamak için en iyi uygulamayı merak ediyorum.En İyi JSON-LD uygulamaları: Birden çok <script> öğesinin kullanılması?

<script type="application/ld+json"> 
{ 
    "@context": "http://schema.org", 
    "@type": "WebSite", 
    "url": "http://www.example.com/", 
    "potentialAction": { 
     "@type": "SearchAction", 
     "target": "http://www.example.com/search?&q={query}", 
     "query-input": "required" 
    } 
} 
</script> 

<!- … --> 

<script type="application/ld+json"> 
{ 
    "@context": "http://schema.org", 
    "@type": "Article", 
    "author": "John Doe", 
    "interactionCount": [ 
    "UserTweets:1203", 
    "UserComments:78" 
    ], 
    "name": "How to Tie a Reef Knot" 
} 
</script> 

bu doğru ya da yanlış mı: Bir Article içeren bir sayfa var ve ben de sayfamda WebSite tanımlamak isterseniz

, bu olurdu? Bunları aynı senaryo veya dizi halinde birleştirmek için herhangi bir fayda veya ihtiyaç var mı?

+0

okumak https://www.w3.org/TR/json-ld/#h3_advanced-context:

Böyle bir dizi olarak her şema listeleyerek tek komut dosyası içine bu birleştirebilirsiniz -usage, sadece basit bir liste kullanın – hsrv

cevap

23

Geçerli. İstediğiniz kadar veri bloğuna (= script eleman) sahip olabilirsiniz.

tek script elemanı kullanmanın olası yararı: Bu birden çok öğe arasındaki ilişkiler kolaylaştırmak için izin verir sadece iç içe çizelgesine gibi (örneğin siz hasPart veya mainEntity kullanmaya karar vermelidir).
Ancak, bu ilişkilerin yapılması, ayrı bir veri bloğu kullanıldığında, öğenin URI'sine @id (thanks, @ Gregg Kellogg) ile gönderme yaparak da mümkündür.

(Referans için, adding two or more top-level items in a single script@graph ile mümkündür.)

+5

Ayrıca @id kullanarak JSON-LD komut satırındaki düğümleri de bağlayabilirsiniz. Model açısından bakıldığında, hepsi ortak bir grafikte üçlü olarak ele alınır. Ancak, arama motorları "optimizasyon" yapabilir ve beklediğiniz gibi olmayabilir. JSON-LD algoritmalarını kullanmak, muhtemelen ayrı komut bloklarını kullanmak için iyi bir sebep değildir; sadece onları ortak bir nesneye, hatta bir dizi nesneye birleştirin. –

+0

@GreggKellogg ve unor - Cevaplar için teşekkürler! Asıl kaygım bir CMS'nin sınırlamalarıydı, çünkü WebSitesi global düzeyde belirleyeceğim bir şey ve makale sayfa düzeyinde belirtildi. Bu senaryoda ne bekleyeceğime emin değildim. Google'ın Yapısal Veri Aracı bunu tamamlar ama ben her zaman burada biraz şüpheci olurum :) –

+0

@GreggKellogg 2017, yani '@' ya da bir dizi nesnenin önerisidir? İlgili tartışma 2012'de (https://github.com/json-ld/json-ld.org/issues/96) yapıldı ve benim okumamdan gelen fikir birliği üst düzey nesneler için '@ graph 'idi. Şimdiden teşekkürler. –

23

depolamak ve web sitenizde şema verilerini yönetmek nasıl etrafında sınırlamalar dışında tek veya çoklu veri bloklarına sahip hiçbir faydası yoktur. Örneğin, web sitenizdeki farklı bileşenlerin her bir veri bloğunu bağımsız olarak üretmekten sorumlu olması durumunda bunları ayrı ayrı göstermeniz gerekebilir. Alternatif olarak, web siteniz bir sayfadaki tüm şemaları tek bir yerde yönetebiliyorsa, tek bir veri bloğunu yönetmek ve bunu tek bir script öğesi olarak oluşturmak daha basit olabilir.

<script type="application/ld+json"> 
[ 
    { 
    "@context": "http://schema.org", 
    "@type": "WebSite", 
    "url": "http://www.example.com/", 
    "potentialAction": { 
     "@type": "SearchAction", 
     "target": "http://www.example.com/search?&q={query}", 
     "query-input": "required" 
    } 
    }, 
    { 
    "@context": "http://schema.org", 
    "@type": "Article", 
    "author": "John Doe", 
    "interactionCount": [ 
     "UserTweets:1203", 
     "UserComments:78" 
    ], 
    "name": "How to Tie a Reef Knot" 
    } 
] 
</script>