# in url into schema markup and #graph in schema - schema

What is meant by the use of hashtags in the url in schema?
#id": "https://www.example.com/#Organization
or
#id": "https://www.example.com/#/schema/Organization/1
What exactly does a graph do in a schema?
"#context": "https://schema.org",
"#graph": [
{
"#type": "Organization",
"#id": "https://www.example.com/#/schema/Organization/1",
"url": "https://www.example.com/",
"name": "Example organization name"
},
{
"#type": "WebSite",
"#id": "https://www.example.com/#/schema/WebSite/1",
"url": "https://www.example.com/",
"name": "Example website",
"publisher": {
"#id": "https://www.example.com/#/schema/Organization/1"
}
},
{
"#type": "WebPage",
"#id": "https://www.example.com/example-page/test/",
"url": "https://www.example.com/example-page/test/",
"name": "Example page name",
"description": "Example page description",
"isPartOf": {
"#id": "https://www.example.com/#/schema/WebSite/1"
thanks

Related

Problems with Dynamic Schema Markup

I'm having trouble with making my schema markup dynamic, I've formatted it with the guidelines but very time I validate the code, I get an error saying
"JSON-LD
Syntax error: value, object or array expected."
I'm unsure of how to fix it. Heres the code below. Thanks in advance
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "Product",
"name": document.querySelector("#product-title").innerText,
"description": document.querySelector("#product-description").innerText,
"image": document.querySelector("#product-image").src,
"url": window.location.href,
"sku": document.querySelector("#product-sku").innerText,
"brand": document.querySelector("#product-brand").innerText,
"offers": {
"#type": "Offer",
"availability": "http://schema.org/" + document.querySelector("#product-availability").innerText,
"price": document.querySelector("#product-price").innerText,
"priceValidUntil": "2019-12-31",
"priceCurrency": "Currency Code",
"url": window.location.href
},
"aggregateRating": {
"#type": "AggregateRating",
"bestRating": "5",
"ratingValue": "5",
"reviewCount": "3"
},
"review": [
{
"#type": "Review",
"author": document.querySelector("#review-author-1").innerText,
"reviewRating": {
"#type": "Rating",
"bestRating": "5",
"ratingValue": document.querySelector("#review-rating-1").innerText,
"worstRating": "1"
},
"reviewBody": document.querySelector("#review-body-1").innerText
},
{
"#type": "Review",
"author": document.querySelector("#review-author-2").innerText,
"reviewRating": {
"#type": "Rating",
"bestRating": "5",
"ratingValue": document.querySelector("#review-rating-2").innerText,
"worstRating": "1"
},
"reviewBody": document.querySelector("#review-body-2").innerText
},
{
"#type": "Review",
"author": document.querySelector("#review-author-3").innerText,
"reviewRating": {
"#type": "Rating",
"bestRating": "5",
"ratingValue": document.querySelector("#review-rating-3").innerText,
"worstRating": "1"
},
"reviewBody": document.querySelector("#review-body-3").innerText
}
]
}
</script>
I've tried changing format and all sort of things.

Is it ok for Google to ad few Breadcrumb Schema to header?

I mean few scripts. I have this structure to add:
website/secondary_a_1
website/secondary_a_2
website/primary_a_1
website/primary_a_2
So my schema right now is like this this:
{
"#context": "https://schema.org/",
"#type": "BreadcrumbList",
"itemListElement": [{
"#type": "ListItem",
"position": 1,
"name": "Name1",
"item": "website/secondary_a_1"
},{
"#type": "ListItem",
"position": 2,
"name": "Name2",
"item": "website/secondary_a_2"
}]
}
And another script:
{
"#context": "https://schema.org/",
"#type": "BreadcrumbList",
"itemListElement": [{
"#type": "ListItem",
"position": 1,
"name": "Name1",
"item": "website/primary_a_1"
},{
"#type": "ListItem",
"position": 2,
"name": "Name2",
"item": "website/primary_a_2"
}]
}
I use "primary" and "secondary" just to tell that there are 2 differrents services and folder with their own subpages.
Is it ok for GOogle and SEO to have same schema in different scripts??

Google Reviews Snippet VS Aggregate Ratings

I have a few questions about what happens if I add both "aggregate reviews" and "review snippets" schema to a webpage.
Will the aggregate number of "votes" and the aggregate vote rating be displaced by the number and average rating of the review snippets?
Is it possible for both to appear at the same time on SERP, with the aggregate votes & average score (1-5) appearing above the review snippets?
Review Snippet Sample:
<script type="application/ld+json">
{
"#context": "https://schema.org/",
"#type": "Product",
"brand": {
"#type": "Brand",
"name": "Penguin Books"
},
"description": "The Catcher in the Rye is a classic coming-of-age story: an story of teenage alienation, capturing the human need for connection and the bewildering sense of loss as we leave childhood behind.",
"sku": "9780241984758",
"mpn": "925872",
"image": "http://www.example.com/catcher-in-the-rye-book-cover.jpg",
"name": "The Catcher in the Rye",
"review": [{
"#type": "Review",
"reviewRating": {
"#type": "Rating",
"ratingValue": "5"
},
"author": {
"#type": "Person",
"name": "John Doe"
},
"reviewBody": "I really enjoyed this book. It captures the essential challenge people face as they try make sense of their lives and grow to adulthood."
},
{
"#type": "Review",
"reviewRating": {
"#type": "Rating",
"ratingValue": "1"
},
"author": {
"#type": "Person",
"name": "Jane Doe"
},
"reviewBody": "I really didn't care for this book."
}],
"aggregateRating": {
"#type": "AggregateRating",
"ratingValue": "88",
"bestRating": "100",
"ratingCount": "20"
},
"offers": {
"#type": "Offer",
"url": "https://example.com/offers/catcher-in-the-rye",
"priceCurrency": "USD",
"price": "5.99",
"priceValidUntil": "2020-11-05",
"itemCondition": "https://schema.org/UsedCondition",
"availability": "https://schema.org/InStock",
"seller": {
"#type": "Organization",
"name": "eBay"
}
}
}
</script>
Aggregate Ratings Sample
<script type="application/ld+json">
{
"#context": "https://schema.org/",
"#type": "Product",
"name": "Executive Anvil",
"image": [
"https://example.com/photos/1x1/photo.jpg",
"https://example.com/photos/4x3/photo.jpg",
"https://example.com/photos/16x9/photo.jpg"
],
"brand": {
"#type": "Thing",
"name": "ACME"
},
"aggregateRating": {
"#type": "AggregateRating",
"ratingValue": "4.4",
"ratingCount": "89"
},
"offers": {
"#type": "AggregateOffer",
"lowPrice": "119.99",
"highPrice": "199.99",
"priceCurrency": "USD"
}
}
</script>

JSON-LD | Multiple Schemas Per Page | What is the best way to structure a website?

Please excuse me, I am a noob and schemas are something new to me and I would really appreciate your expert advice guys! Thanks in advance! :)
To keep it short, I combined these 3 relevant question as part of one global question:
What is better? To use separate schemas or multiple nested schemas per web page?
How many schemas can be used per page? Is there a recommended minimum and maximum?
Lastly, what would the schema structure of a i.e 5 page website look like?
I've answered all these questions in a short summary below, followed by the schemas I've used.
My curreny interpretation:
a. You can nest multiple schemas per page, but keeping them separate allows for a better use of #id?
b. You can use as many schemas per page as you wish without penalty, taken you use #graph but then each separate web page needs to be defined separately. Is this practical?
c. You can, and should use multiple schemas per page, in separate scripts so as not to duplicate the same information via: about, provider, or #type, particularly when you are using multiple schema types: Organization, Corporation and/or LocalBusiness?
d. The structure/hierarchy we are currently implementing is as follows:
i. Home Page Schema Types: Website, Webpage, Breadcrumb and FAQPage.
ii. About Page Schema Types: Webpage, Organization and Local Business.
iii. Service Page Schema Types: Webpage, Service, OfferCatalog, Breadcrumb and FAQPage.
iv. Individual Service Page Schema Types: Webpage, Service, OfferCatalog, Breadcrumb and FAQPage.
v. Contact Page Schema Types: Webpage and ContactPage.
Current Implementation Home Page (Website Schema)
I might have overdone it, from what I understand it is better to include less information and more reference with #id
{
"#context": "https://schema.org/",
"#type": "Website",
"name": "ABC Company",
"image": "https://www.abccompany.com/wp-content/uploads/2016/12/company_slider.png",
"url": "https://www.abccompany.com",
"abstract": "The corporate website of ABC Company Ltd.",
"description": "Website of ABC Company Ltd, an information technology service management and support provider in Germany.",
"thumbnailUrl": "https://www.abccompany.com/wp-content/uploads/2016/12/company_slider.png",
"about":
{
"#type":
[
"Organization",
"LocalBusiness"
],
"#id": "https://www.abccompany.com/about",
"name": "ABC Company",
"image": "https://www.abccompany.com/wp-content/uploads/2016/12/company_slider.png",
"legalname": "ABC Company Ltd",
"alternateName":
[
"ABC Corp",
"ABC Berlin",
"ABC"
],
"address":
{
"#type": "PostalAddress",
"addressCountry": "Germany",
"addressLocality": "Berlin",
"addressRegion": "Berlin Municipality",
"postalCode": "30242",
"streetAddress": "Zigrid Abc Street, Office 521"
},
"pricerange": "€€ - €€€€",
"telephone": "99 540 010"
},
"sameAs":
[
"https://www.facebook.com/abccompany",
"https://twitter.com/abccompany",
"https://www.instagram.com/abccompany/",
"https://www.linkedin.com/abccompany"
],
"spatialCoverage":
[
"United Kingdom",
"Germany",
"Greece",
"Switzerland",
"United Arab Emirates",
"Italy"
]
}
Below is a simplified version of the Website Schema for the Home Page
{
"#type": "Website",
"name": "ABC Company Website",
"url": "https://www.abccompany.com",
"description": "Website of ABC Company Ltd, an information technology service management and support provider in Germany.",
"thumbnailUrl": "https://www.abccompany.com/wpcontent/uploads/2016/12/company_slider.png",
"about":
{
"#type": "Organization",
"name": "ABC Company",
"#id": "https://www.abccompany.com/about"
},
"potentialAction":
{
"#type": "SearchAction",
"target": "{search_term_string}",
"query-input": "required name=search_term_string"
}
}
Current Implementation Home Page (Organization Schema)
Thinking of moving this Schema to the about page. Any suggestions?
{
"#context": "http://schema.org",
"#id": "https://www.abccompany.com/about",
"#type": "Organization",
"name": "ABC Company",
"alternateName":
[
"ABC Berlin",
"ABC"
],
"knowsAbout":
[
"Information Technology Consulting",
"Information Technology Support",
"Information Technology Development",
"Managed Information Technology",
"API Integration"
],
"url": "https://www.abccompany.com",
"logo": "https://www.abccompany.com/wp-content/uploads/2016/12/company_slider.png",
"sameAs":
[
"https://www.facebook.com/abccompany",
"https://twitter.com/abccompany",
"https://www.instagram.com/abccompany",
"https://www.linkedin.com/abccompany"
],
"numberofEmployees": "~10",
"owns":
[
{
"#type": "Organization",
"name": "ABC Company 2",
"url": "https://abccompany2.com/",
"logo": "https://abccompany2.png",
"description": "Online ticketing platform.",
"sameAs": "https://www.facebook.com/abccompany2"
},
{
"#type": "Organization",
"name": "ABC Company 3",
"url": "https://abccompany3.eu/en/",
"logo": "https://abccompany3.eu/en.png",
"description": "Laptop and phone repair service.",
"sameAs": "https://www.facebook.com/abccompany3"
}
],
"contactPoint":
{
"#type": "ContactPoint",
"telephone": "+357-99-550-010",
"contactType": "Contact",
"email": "contact#abccompany.com",
"areaServed":
[
"United Kingdom",
"Germany",
"Greece",
"Switzerland",
"United Arab Emirates",
"Italy"
],
"availableLanguage":
[
"English",
"German"
]
}
}
Current Implementation Home Page (Local Business Schema)
As with the Organization schema, I am thinking of moving it to the about page and link #id. Additionally, Organization and Local Business Schemas tend to clash, is this because of duplicate information?
{
"#context": "https://schema.org/",
"#type": "LocalBusiness",
"name": "ABC Company",
"legalname": "ABC Company Ltd",
"image": "https://www.abccompany.com/wp-content/uploads/2016/12/company_slider.png",
"#id": "https://www.abccompany.com/about",
"url": "https://www.abccompany.com",
"logo": "https://www.abccompany.com/wp-content/uploads/2016/12/company_slider.png",
"hasMap": "https://www.google.com/maps/place/ABCCOMPANY+-+IT+Services+%26+Solutions+in+Cyprus/#44.6799323,65.0355366,15z/data=!4m2!3m1!1s0x0:0x4507a4904ebbe662?sa=X&ved=2ahUKEwjOnOKdy_bxAhWQsRQKHY9WD5kQ_BIwD3oECEMQBQ",
"address":
{
"#type": "PostalAddress",
"addressCountry": "Germany",
"addressLocality": "Berlin",
"addressRegion": "Berlin Municipality",
"postalCode": "3022",
"streetAddress": "Mitgard Street 302"
},
"description": "ABC Company Ltd is a managed information technology services provider in Germany.",
"disambiguatingDescription": "ABC Company is an information technology support and development company.",
"sameAs":
[
"https://www.facebook.com/abccompany",
"https://twitter.com/abccompany",
"https://www.instagram.com/abccompany",
"https://www.linkedin.com/company/abccompany"
],
"pricerange": "€€€ - €€€€€",
"email": "mailto:contact#abccompany.com",
"telephone": "99 520 010",
"geo":
{
"#type": "GeoCoordinates",
"latitude": "66.6799323",
"longitude": "55.0355366"
},
"areaServed":
[
{
"#type": "Country",
"name": "United Kingdom",
"sameAs": "https://en.wikipedia.org/wiki/United_Kingdom_(disambiguation)"
},
{
"#type": "Country",
"name": "Germany",
"sameAs": "https://en.wikipedia.org/wiki/Germany_(disambiguation)"
},
{"#type": "Country",
"name": "Greece",
"sameAs": "https://en.wikipedia.org/wiki/Greece_(disambiguation)"
},
{
"#type": "Country",
"name": "Switzerland",
"sameAs": "https://en.wikipedia.org/wiki/Switzerland_(disambiguation)"
},
{
"#type": "Country",
"name": "United Arab Emirates",
"sameAs": "https://en.wikipedia.org/wiki/UAE_(disambiguation)"
},
{
"#type": "Country",
"name": "Italy",
"sameAs": "https://en.wikipedia.org/wiki/Italy_(disambiguation)"
}
],
"openingHoursSpecification":
[
{
"#type": "OpeningHoursSpecification",
"dayOfWeek":
[
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
],
"opens": "09:00",
"closes": "19:00"
},
{
"#type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "11:00",
"closes": "14:00"
}
],
"aggregateRating":
{
"#type": "AggregateRating",
"ratingValue": "5",
"reviewCount": "5"
},
"review":
[
{
"#type": "Review",
"author":
{
"#type": "Organization",
"name": "BBB Company Ltd"
},
"datePublished": "2020",
"description": "Developed a great website.",
"reviewRating":
{
"#type": "Rating",
"bestRating": "5",
"ratingValue": "5",
"worstRating": "5"
}
},
{
"#type": "Review",
"author":
{
"#type": "Person",
"name": "Anderson Silva"
},
"datePublished": "2018",
"reviewRating":
{
"#type": "Rating",
"bestRating": "5",
"ratingValue": "5",
"worstRating": "5"
}
},
{
"#type": "Review",
"author":
{
"#type": "Organization",
"name": "NFS Ltd"
},
"datePublished": "2017",
"reviewRating":
{
"#type": "Rating",
"bestRating": "5",
"ratingValue": "5",
"worstRating": "5"
}
},
{
"#type": "Review",
"author":
{
"#type": "Organization",
"name": "Premiere Showroom"
},
"datePublished": "2020",
"reviewRating":
{
"#type": "Rating",
"bestRating": "5",
"ratingValue": "5",
"worstRating": "5"
}
},
{
"#type": "Review",
"author":
{
"#type": "Person",
"name": "Benzon Bez"
},
"datePublished": "2017",
"reviewRating":
{
"#type": "Rating",
"bestRating": "5",
"ratingValue": "5",
"worstRating": "5"
}
}
]
}
Current Implementation Home Page (WebPage Schema)
This is the last schema I will share, to keep this question manageable.
{
"#context": "https://schema.org/",
"#type": "WebPage",
"#id": "https://www.abccompany.com",
"url": "https://www.abccompan.com",
"name": "IT Services and Solutions | ABC Company",
"description": "Home web page of ABC Company Ltd, an information technology service management and support provider in Germany.",
"disambiguatingDescription": "ABC Company Home Page",
"image": "https://www.abccompan.com/wp-content/uploads/2016/12/company_slider.png",
"thumbnailUrl": "https://www.abccompan.com/wp-content/uploads/2016/12/company_slider.png",
"keywords": "IT Company, Information Technology Company, IT Provider",
"typicalAgeRange": "28-60",
"about":
{
"#type": "Organization",
"#id": "https://www.abccompan.com/about",
"name": "ABC Company"
},
"audience":
[
{
"#type": "BusinessAudience",
"name": "Business owner",
"alternateName": "Organizational Founder",
"disambiguatingDescription": "Refers to founders, owners and or majority shareholders of a commercial enterprise.",
"sameAs":
["https://en.wikipedia.org/wiki/Organizational_founder",
"https://en.wikipedia.org/wiki/Director_(business)",
"https://en.wikipedia.org/wiki/Business_magnate",
"https://en.wikipedia.org/wiki/Tycoon_(disambiguation)",
"https://en.wikipedia.org/wiki/Industrialist_(disambiguation)",
"https://en.wikipedia.org/wiki/Shareholder"
]
},
{
"#type": "BusinessAudience",
"name": "Entrepreneur",
"alternateName": "Business Person",
"disambiguatingDescription": "A business man or woman - refers to a founder, owner, investor or majority shareholder of a commercial enterprise.",
"sameAs":
[
"https://en.wikipedia.org/wiki/Entrepreneur_(disambiguation)",
"https://en.wikipedia.org/wiki/Businessperson",
"https://en.wikipedia.org/wiki/Investor",
"https://en.wikipedia.org/wiki/Intermediary"
]
},
{
"#type": "BusinessAudience",
"name": "Manager",
"alternateName": "Supervisor",
"disambiguatingDescription": "Refers to founders, owners and or majority shareholders of a commercial enterprise.",
"sameAs":
["https://en.wikipedia.org/wiki/Supervisor",
"https://en.wikipedia.org/wiki/Manager_(disambiguation)",
"https://en.wikipedia.org/wiki/General_manager"
]
}
],
"datePublished": "2016-12-01T08:00:08+00:00",
"dateModified":"2020-01-09T18:00:00+00:00",
"inLanguage":"en-UK",
"potentialAction":
{
"#type": "ReadAction",
"target": "https://www.abccompany.com"
}
}
To recap
Are the schemas above correct?
Do we write multiple schemas per page but in separate scripts?
Is best practice to then link #id or duplicate references?
How many schemas can we populate per page?
Are there particular schemas for particular pages only? If so which ones?
In advance thank you all for your time and effort.
Hope we can reach some sort of consensus, since there are no viable instructions regarding this, at least that I've found.
Peace.

How to implement https://schema.org/GenderType in Json

What the correct way to implement https://schema.org/GenderType for https://schema.org/Person in JSON-LD.
I Attempted bellow:
{
"#context": "http://schema.org",
"#type": "Person",
"givenName": "First Name",
"familyName": "Last name",
"gender": {
"#type": "GenderType",
"gender" "Male"
}
}
The following works:
{
"#context": "http://schema.org",
"#type": "Person",
"givenName": "First Name",
"familyName": "Last name",
"gender": "Male"
}
Though that would use https://schema.org/Text
An other solution:
{
"#context": "http://schema.org",
"#type": "Person",
"givenName": "First Name",
"familyName": "Last name",
"gender": "https://schema.org/Male"
}
Seems to be valid at https://search.google.com/structured-data/testing-tool
Though not sure if that how it mean to be implemented.