schema.org – What is the use of @id in json-ld syntax?

The @id keyword allows you to give a node a URI. This URI identifies the node.

See Node Identifiers in the JSON-LD spec.

(The equivalent in Microdata is the itemid attribute, and the equivalent in RDFa Lite is the resource attribute.)

Why are identifiers useful?

  • You can reference a node instead of repeating it (see my example).
  • Other authors can do the same (on external sites): when they use the URI you specified, it’s clear that they are talking about the same thing.
  • Consumers can learn that different nodes are about the same thing.

It’s also one of the core concepts of Linked Data and the Semantic Web. If you care about this, you might want to use URIs that differentiate between the actual thing and the page about that thing (see my explanation).

This is what Apple is doing in the example. The URI http://www.apple.com/#organization represents the actual organization, not a page (and not a part on that page) about the organization. This is a Hash URL, and it’s a popular way to make the distinction between the thing and the page about the thing. If you want to say in your JSON-LD that you like Apple, you could use http://www.apple.com/#organization to identify Apple. If you would use http://www.apple.com/ instead, it would be Apple’s homepage you like.

seo – How to indicate that this is the *highest* rate using json-ld and schema.org?

I have a web page that lists the banks with the highest saving account rates in the country. I have created some json-ld that lists one of these banks. However, nowhere do I say in the json-ld that this is the highest rate available. Can that type of information be indicated using json-ld and schema.org?

<script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "BankAccount",
    "name": "High Interest Savings Account",
    "offers": {
      "@type": "Offer",
      "offeredBy": {
        "@type": "BankOrCreditUnion",
        "@id": "https://banka/en/on-Home",
        "image": "https://banka/en/images/logo.png",
        "name":"Bank A"
      }  
    },
    "interestRate": "1.55",
    "areaServed": "Canada (excluding Quebec)"
  }
</script>

plugins – Connect to Google reviews and ratings data and put into schema.org structured data in website source code?

I have found Google reviews plugins, but these all seem to be meant to embed Google reviews on the front end of web page.

Instead I am wanting to pull in live/synced reviews data and include it in schema.org structured data “dynamically” – eg # of reviews, avg star rating.

Thanks much!

schema.org – Rich snippets appear in Google search results for pages without structured data

I was wondering if there’s a way to get Google to display rich text results without implementing any kind of structured data.

When Google displays a link to a page, it may also display some extra information under the link. This is what Google refers to as “rich snippets” or “rich results”. So, for a product page, it could list things like warranty information, rating, price, brand, etc.

I came across a search result for a website that displays some of that extra information, but when I scanned it using Google’s Rich Results Test tool, it didn’t seem to have any kind of structured data, and it says

This page is not eligible for rich results.

This is rather puzzling. What am I missing? Is there another way to indicate to the Google crawler which information to use? Do I absolutely have to implement Google’s structured data in order for these extra bits of information to appear?

Example:
As can be seen in the image below, it lists rating, reviews, price range and “In Stock”

enter image description here

schema.org – Google – rich search results appear but no structured data

I was wondering if there’s a way to get google to display rich text results without implementing any kind of structured data.

When google displays a link to a page, it may also display some extra information under the link. This is what google refers to as “rich results”. So, for a product page, it could list things like warranty information, rating, price, brand, etc.

I came across a search result for a website that displays some of that extra information, but when I scanned it using Google’s Rich Results Test tool, it didn’t seem to have any kind of structured data, and it says “the page is not eligible for rich results”.

This is rather puzzling. What am I missing? Is there another way to indicate to the google crawler which information to use? Do I absolutely have to implement Google’s structured data in order for these extra bits of information to appear?

search engine indexing – Having schema.org inside noindex on one page?

I have an e-commerce website that reuses a snippet to render products on the category, search and cart pages. The snippet uses the schema.org markup, and because it lets people interact with a product and buy it right away, I mark it up as Offer, not an ItemList or similar.

The issue is with the cart page, which is where I don’t want the schema.org markup to appear. The first thing coming to mind is to have the snippet stop applying any markup when it recognises the cart page, but that will introduce lots of if-elses, and complicate the code.

If I wrap the products block into a <noindex></noindex> from the parent cart template, will that have any effect on these products appearing on other pages? They use the same sku and url values everywhere. Or am I better off adding noindex to the whole cart page?

schema.org – Google knowledge graph not properly showing two companies have merged, it shows one aquired the other

My org recently merged with another org. A joint press release was issued and everybody has gone out of their way to stress that this is a merger and not an acquisition. However, when you search for the other org by name in Google, my org is being listed as the “Parent organization” in the Knowledge Graph box on the right. How do I change/remove this? Is it because someone made edits to the other org’s Google My Business profile? I couldn’t find any schema markup for their website (by viewing their page source) and in ours, nothing of the sort is listed.

schema.org – How can I add schema mark up for multiple holiday resorts?

Our client is a holiday company that offers villa accommodation at a list of different resorts in Menorca. We want to mark up the homepage for the handful of top resorts. Is it possible to mark up one page for multiple resorts do this or would we only be able to mark up one resort per page? I also can’t find a schema generator or plugin for resorts, does anyone know if there is one or would we need to write the code ourselves?

schema.org – JSON-LD error: “Missing ‘}’ or object member name” even when parenthesis appear to be balanced

Your problem is smart quotes. You use them. JSON can’t have them. JSON has to have regular old dumb quotes. Up until line 10, you use the correct quotation marks, but then at line 10 you switch to using fancy slanted quotation marks.

The solution is to use find and replace to find the smart quotes and replace them with dumb quotes. I would also clean up the indentation. Then you end up with:

<script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "WebPage",
    "name": "Brand X Information for Healthcare Professionals",
    "mainEntity": {
      "@type": "Drug",
      "name": "Name",
      "activeIngredient": "Cysteamine Hydrochloride",
      "administrationRoute": "Ophthalmic",
      "drugUnit": "0.44% Cysteamine Ophthalmic Solution",
      "dosageForm": "Topical Solution",
      "manufacturer": {
        "@type": "Organization",
        "name": "Company Name"
      },
      "mechanismOfAction": "Cysteamine, the active ingredient in BrandX, is an aminothiol that depletes lysosomal cystine, preventing buildup of cystine crystals in bodily tissues. Within lysosomes, cysteamine interacts with cystine to form cysteine and cysteineu2013cysteamine mixed disulfide. These substances can pass through the lysosomal membrane and be eliminated from the cell."
    }
  }
</script>

This is usually caused by trying to edit in a word processor such as Microsoft Word, Google docs, or Libreoffice. For code, you should avoid using these programs. Find a text editor built for programmers. Such an editor won’t try to smarten your quotes for you.

schema.org – Missing ‘}’ or object member name

Your problem is smart quotes. You use them. JSON can’t have them. JSON has to have regular old dumb quotes. Up until line 10, you use the correct quotation marks, but then at line 10 you switch to using fancy slanted quotation marks.

The solution is to use find and replace to find the smart quotes and replace them with dumb quotes. I would also clean up the indentation. Then you end up with:

<script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "WebPage",
    "name": "Brand X Information for Healthcare Professionals",
    "mainEntity": {
      "@type": "Drug",
      "name": "Name",
      "activeIngredient": "Cysteamine Hydrochloride",
      "administrationRoute": "Ophthalmic",
      "drugUnit": "0.44% Cysteamine Ophthalmic Solution",
      "dosageForm": "Topical Solution",
      "manufacturer": {
        "@type": "Organization",
        "name": "Company Name"
      },
      "mechanismOfAction": "Cysteamine, the active ingredient in BrandX, is an aminothiol that depletes lysosomal cystine, preventing buildup of cystine crystals in bodily tissues. Within lysosomes, cysteamine interacts with cystine to form cysteine and cysteineu2013cysteamine mixed disulfide. These substances can pass through the lysosomal membrane and be eliminated from the cell."
    }
  }
</script>

This is usually caused by trying to edit in a word processor such as Microsoft Word, Google docs, or Libreoffice. For code, you should avoid using these programs. Find a programmers text editor that won’t try to smarten your quotes for you.