I have a personal home page, mainly for providing some stuff I created and published. I have an about page giving some information about me. There I have created JSON-LD like this:

    "@context": "https://schema.org",
    "@type": "Person",
    "@id": "https://my-domain.com/about#i",
    "name": "The Name",
    "sameAs": ["https://www.linkedin.com/in/myprofile"]

I also have a blog on which I publish posts. I have started enriching the blog posts with JSON-LD, for example with BlogPosting like:

    "@context": "http://schema.org/",
    "headline": "An Article",
    "url": "https://my-blog.com/an-article",
    "author": { "@id": "https://my-domain.com/about#i" }

referencing the author using the @id of my website.

  1. Is this the appropriate/intended use of node referencing via the @id?
  2. This requires that when the blog article is parsed, also the my web site has to be parsed. At least Google's test tool for structured data tells that e.g. name attribute is missing.
  3. What is the best thing to do? Add a new author entity on my blog (with a new @id, reference this from the blog article and on my webpage link it via sameAs? Or referencing it like above, but adding other data. Both approaches require that the data is kept in sync somehow. What happens, if they are not?

This is the correct use of referencing entities via their URI in @id. It doesn’t matter what the URI’s domain is. It doesn’t even have to be a resolvable URI, not even a HTTP(S) URI -- but it’s the best practice to use resolvable HTTP(S) URIs that provide structured data about the entity it represents.

Google’s SDTT doesn’t follow such references. This is why it outputs that the author is a Thing with the URI https://my-domain.com/about#i -- it doesn’t know about the data on https://my-domain.com/about, otherwise it would know that it’s a Person.

(Whether Google itself follows such references is not documented.)

For consumers that don’t follow such references, it can be useful to provide data about the referenced entity. It depends on your implementation and the consumer’s interest/goal whether, and to which extent, it’s worth it.

I think there is a set of properties which is almost always useful to provide, in addition to the @id: @type, url, and name.

"author": {
  "@type": "Person",
  "@id": "https://my-domain.com/about#i",
  "url": "https://my-domain.com/about",
  "name": "Alice"
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.