Question

The blog is basically a page that lists the summary of like 10 articles, each item title linking to the full article page.

I've seen:

Where do I use these?

Right now on the individual article page I have:

  <article itemscope itemtype="http://schema.org/Article">       

    <h1 itemprop="name"> <a href="..."> A title...  </a> </h1>    

    <div itemprop="articleBody">
       bla bla
    </div>

    ...

  </article>

Which is ok I guess, but what do I do on the article index page? Do I add these to each article and add itemscope itemtype="http://schema.org/Blog" itemprop="blogPosts" to the container element of all articles? Because in the docs it doesn't appear that article is a child of blog...

Was it helpful?

Solution

I agree with what others say that the subject is very vague. Never the less I will attempt to express my thoughts on the matter and show you how I'm doing it on my blog.

I use both WebPage and Blog item types in the same document to mark up different things.

Web page

I use WebPage item type on the body tag. By doing so I can mark up my bread crumbs.

<body itemscope itemtype="http://schema.org/WebPage">
  <ul itemprop="breadcrumb">
    <li>
      <a href="foo">foo</a> 
    </li>

    <li>
      <a href="foo/bar">bar</a>
    </li>

    <li>
      <a href="foo/bar/baz">baz</a>
    </li>
  </ul>

    ...

</body>

Blog postes

When I loop the blog posts I use the Blog item type on the wrapper that contains all of the blog articles. I mark every article with the property blogPostes and uses of course BlogPosting as item type.

<section itemscope itemtype="http://schema.org/Blog">
  <article itemprop="blogPosts" itemscope itemtype="http://schema.org/BlogPosting">
    ...
  </article>

  <article itemprop="blogPosts" itemscope itemtype="http://schema.org/BlogPosting">
    ...
  </article>

  ...

</section>

Article page

See edit below for an update to this opinion

On the articles landing page I don't use the Blog item type. But I do mark the post as a BlogPosting item.

<article itemscope itemtype="http://schema.org/BlogPosting">
  ...
</article>

The only reason I can see that you would wanna mark something with a Blog item type is because of the blogPostes properties and the fact to say that it is a blog. I think you fulfill saying that it's a blog by marking the article as a BlogPosting. I also don't think it's correct using the property in this context since this is used in a plural form. To me that reflect a different area of use.


Edit

I'm not sure if the schema has extended or if I missed it the first time around, but the Blog item has a property called blogPost now, that is the singular form blogPosts. So then I would say that it makes more sense to mark up the main element as the Blog item and use the blogPost property for the article and mark it up as a BlogPosting item

OTHER TIPS

I would use http://schema.org/WebPage for your all up page since this allows you to define things like Breadcrumbs/navigation which are important for describing a site regardless of the particular content.

There is still a lot of work needed in the microdata schemas and you've pointed out what appears to be a gap -- there is no parent/child relationship between Article and anything else that I can see (e.g. 'Articleindex' or 'Articles').

I haven't really read anything that indicates this parent child hierarchy is super important anyways, unless the parent is experssing attributes which are important to convey, so I think you can get away with either.

However, you haven't mentioned what type of content the "articles" are. If they are more journalistic or official in nature (like a news article, research paper, etc) I'd use http://schema.org/Article for each article and not worry about the article index page. Otherwise, use http://schema.org/Blog http://schema.org/BlogPosting for each.

The Article and Blog schema descriptions are pretty vague right now and will probably change sometime in the future, but i believe the Blog schema to be a little more relevant for a, well, blog (it's even implied in the Article schema description page down below, under "More specific types").

So, you can start by defining your main blog page with the higher level schema:

<!DOCTYPE html itemscope itemtype="http://schema.org/Blog">
<meta itemprop="creator" content="Creator of the blog">
<meta itemprop="name" content="Title of your Blog">
<meta itemprop="description" content="Description of your blog">
<meta itemprop="image" content="http://www.yourblog.com/main/image/pic.gif">

And you can define your blog pages with the second level blog schema, BlogPosting, and define the appropriate item properties, like so:

<!DOCTYPE html itemscope itemtype="http://schema.org/BlogPosting">
<meta itemprop="author" content="Author of your blog">
<meta itemprop="name" content="Title of your content">
<meta itemprop="description" content="Description of your post">
<meta itemprop="image" content="http://www.yourblog.com/post/image/pic.gif">

Urghh, complicated :P, there are a million properties you can employ, but just focus on the most important ones.

Oops! this code is error!

<!DOCTYPE html itemscope itemtype="http://schema.org/Blog">

You should use this code:

<!DOCTYPE html>

instead of:

<!DOCTYPE html itemscope itemtype="http://schema.org/Blog">

When we declare the type of the blog, we can add it in body tag:

<body itemscope='' itemtype='http://schema.org/Blog'>

Inside of this section, we can use "Itemprop" as the property of the itemtype.
We're talking about the type of a site, not a basic language of a site.

Here are other important itemscopes to use

Example for Person

<div itemscope itemtype="http://schema.org/Person">
     <span itemprop="name">Mahdi Maghrooni</span>
     <img src="http://maghrooni.ir/img/users/FCwNdpWQKGQqiZphN6rj2YuHY3bXrF.jpg" itemprop="image" alt="Maghrooni" />
</div>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top