Dienstag, 2. September 2014

itemId vs sameAs vs additionalType: how to distinguish and use correctly

correct usage of itemid, sameas and additionaltype
One of the best methods to gain the topical relevance of a text is to use entities instead of "plain" keywords. The most simple way to create an entity out of a keyword is to extend it as a standalone type with the Schema.org-markup and prove it with additional trustful informations. Here is the applying point of HTML5 attribute itemId and Schema.org-properties sameAs and additionalType. All of them are used to provide additional informations to a type. But while itemId and sameAs are pretty much the same, additionalType is used for different purpose. Let's look at the use cases in detail to get clear about distinguishing and correct assignment. Accurate usage of these properties is crucial for semantic SEO purposes, cause the kind of the entity creation turns the algorithms opinion about the given text to finally more or less topical ranking.

itemId

This HTML5 microdata attribute was created earlier then sameAs was accepted into the Schema.org vocabulary. The meaning of itemId is to provide a global identifier, like a book's ISBN-number or a Wikipedia-URL for unambiguously machine-readable defining of what the subject of description is. Jarno van Driel pointed me to another using art of itemId, namely local referencing - this usage isn't very common, local referencing is mainly accomplished with itemref. More about this kind of itemId usage here.

sameAs

This property was inspired by owl:sameAs and added to the Schema.org 1.0b version at 24.07.2013 as the full vocabualary-intern counterpart of itemId.

additionalType

This property is sometimes called a Schema hack, but in reality it is a bridge from limited types amount of Schema.org to the near endless set of types (classes), which are available through external ontologies.

Distinguishing

This is the main and the single difference between itemId / sameAs and additionalType:
  • itemId / sameAs are about identifier / definition
  • additionalType is about the type / class
The difference between an identifier and the type can be pretty subtle on the first look. The issue on this is, that the class definition in an ontology could look very similar to a subject definition from a Wikipedia. To better understand the difference let's look at the usage examples:

Usage

DBpedia URLs as sameAs property

Assume we have a Wikipedia article, which matches an entity in our text. Wikipedia article's URL must be rearranged the from http://xx.wikipedia.org/wiki/Article-Title (xx at the beginning is the language abbreviation) to http://xx.dbpedia.org/resource/Article-Title to be used as a global identifier for the sameAs property. Looking so the URL / URI is ready for using as sameAs property of your entity.
Note
Sometimes you can see a DBpedia URI looking like http://xx.dbpedia.org/page/Article-Title instead of http://xx.dbpedia.org/resource/Article-Title. Don't be confused with it! Such URIs are automatically redirected to the URIs with resource.

DBpedia classes as additionalType property

But what if Schema.org doesn't provide enough types to describe an entity? In such case is it a good idea to use an external classification to substantiate the entity description. DBpedia classes:
These classes and the classes from any other ontology, like productontology.org or imdb.com and the like, are the source for populating of additionalType property. DBpedia classes, if used in additionalType property, could be taken from the DBpedia classes list linked above and written like http://dbpedia.org/ontology/ClassName.

Distinguished usage of sameAs and additionalType

1. Only DBpedia classes
 <div itemscope itemtype="http://schema.org/Person">
  <link itemprop="sameAs" href="http://dbpedia.org/resource/Hercules"/>
  <link itemprop="additionalType" href="http://dbpedia.org/ontology/MythologicalFigure"/>
  <p itemprop="name">Hercules</p>
 </div>

2. With non-DBpedia URI and DBpedia class
 <div itemscope itemtype="http://schema.org/Person">
  <link itemprop="sameAs" href="http://www.imdb.com/title/tt0212985"/>
  <link itemprop="additionalType" href="http://dbpedia.org/ontology/FictionalCharacter"/>
  <p itemprop="name">Hannibal</p>
 </div>

3. With non-DBpedia class and DBpedia URI
 <div itemscope itemtype="http://schema.org/Product">
  <link itemprop="sameAs" href="http://dbpedia.org/resource/Search_engine_optimization"/>
  <link itemprop="sameAs" href="http://www.dbpedialite.org/things/187946"/>
  <link itemprop="additionalType" href="http://www.productontology.org/id/Search_engine_optimization"/>
  <p itemprop="name">Search engine optimization</p>
 </div>
Note
In the last example is visible, that the same keyword can be both of the class and the global identifier. That is why i said at the beginning about how fine the distinguishing between sameAs and additionalType could be.

Syntax handling of multiple types

additionalType can be written in socalled multiple types approach syntax, namely so:
<div itemscope itemtype="http://schema.org/Person http://dbpedia.org/ontology/MythologicalFigure">
Note
Usage of multiple types approach with different domains (in the last example schema.org and dbpedia org)  is not a good practice and is only theoretically possible. Such types chaining can be used unhesitatingly with types from the same domain.

Wrong or non-usage

Is this not a bean counting? Does one need it at all? What happens, if things will be applied wrong or even entirely don't used?
The discipline we are here in is SEO, that's why don't applying or wrong applying is suboptimal:) The concrete impact of suboptimal assignment is that the keyword or, in general, the described type will be not definitely understood by algorithm and, as the consequence, the whole text will lose a part of its topical relevance.

Conclusion / tl;dr

To use HTML5 Microdata attribute itemId and Schema.org properties sameAs and additionalType correctly, they must be clearly distinguished:
  • itemId and sameAs are about the definition, global identifier, URI
  • additionalType is about the class, type
Make web the better place!
Yandex.Metrica