I need to markup an item list (properties of a restaurant like "cocktailbar", "terrace", "free parking lots") on a restaurant website. Schema.org defines the type "Restaurant" in the following chain: Thing -> Organization -> Local Business -> FoodEstablishment -> Restaurant Within the itemscope of "Restauarant" there's no "ItemList" defined. Is it possible to add a "ItemList" within a "Restaurant" markup block although "ItemList" is defined in this chain?: Thing -> CreativeWork -> ItemList Thanks!
ninsky
The superficial answer is "No". The only guaranteed processing of ItemList will be within the context of CreativeWork.
The more vague answer would be "possibly?". There's nothing stopping you from just using it. Worst case scenario, it'll just be ignored. Google might do something with it or it may not.
As it stands, though, there's simply not guaranteed support for any sort of list structure within the item types you're using.
answered Jul 5, 2011 at 19:19 Chris Pratt Chris Pratt 238k 37 37 gold badges 399 399 silver badges 457 457 bronze badgesOk, but in this case I could also abandon the option to markup this content as a ItemList. So the content wouldn't "possibly" be harmed because of wrong nested semantics. but nevertheless, thanks for your comment!
Commented Jul 5, 2011 at 21:41As far as I know, ItemLists for such features of Restaurant are not generally understood. I'll investigate more structured ways of doing this, but it might be that the content is best represented in the description for now.
answered Oct 23, 2011 at 19:53 Dan Brickley Dan Brickley 531 7 7 silver badges 9 9 bronze badgesTechnically, you could use the itemprop contentLocation of the ItemList to reference the Restaurant. For example, you could use the following code:
The example code results in the following Google Rich Snippet Tool:
Item Type: http://schema.org/itemlist contentlocation = Item( 1 ) itemlistelement = cocktailbar itemlistelement = terrace itemlistelement = free parking lots Item 1 Type: http://schema.org/restaurant name = My Restaurant
You might instead want to use the itemprop "about" instead. If it makes sense to you, then it MIGHT make sense to a bot. If it doesn't make sense to you, then I would not force it.
answered Dec 9, 2011 at 5:23 Justin Nafe Justin Nafe 3,052 2 2 gold badges 19 19 silver badges 16 16 bronze badgesYes, but not with an ItemList. An ItemList is a Creative Work and "is used for something created by its author specifically as a list, such as a 'Top 10 List'" (from http://www.HTML-5.com/microdata/schemas/item-list.html). It's not a data type and therefore should not be used as if it were a generic collection of items (see http://www.HTML-5.com/microdata/index.html#item-list-vs-html-list).
Instead, for such a container you would use the "containedIn" property with the "itemref" attribute. There is a good example of a bar and restaurant in the same location here:
Although that example defines the bar and restaurant as "contactPoints" because they have their own phone and/or web URL, you would probably omit that for things like the parking lot (unless there's a valet stand with a phone!). The fact that the itemref property of all the features ("cocktailbar" - probably a "BarOrPub", "terrace" - possbily a "Place", "free parking lots" - maybe just a "Thing") of the establishment reference the same place provides the relationship you were seeking.