- From: Aaron Bradley <aaranged@yahoo.com>
- Date: Wed, 8 Aug 2012 10:39:18 -0700 (PDT)
- To: "Sandhaus, Evan" <sandhes@nytimes.com>, Public Vocabs <public-vocabs@w3.org>
I believe this is expected behavior because, indeed, you restrict properties to those allowed by the declared itemtype. <meta> declarations are a little problematic in this regard insofar as they are self-closing, and so don't permit an itemscope to be declared beyond that <meta> content. In <body> this isn't problematic because <span> and <div> tags can be used to define itemscope. This... <span itemprop='creator' itemscope itemtype='http://schema.org/Person' itemid='the_creator_id'> <meta id='author_name' itemprop='name' content='Evan S Sandhaus'/> <meta id='author_url' itemprop='url' content='http://sandha.us'/> </span> </head> <body> </body> </html> ... results in this RSST result - is this the desired behavior Evan? Item Type: http://schema.org/newsarticle headline = A Test Headline creator = Item( 1 ) Item 1 Type: http://schema.org/person name = Evan S Sandhaus url = http://sandha.us Though I'm not certain <div> and <span> are permitted within <head> (I think not) - though no validation errors occur when they are used. A note from personal experience (re NewsArticle) is that I've found itemscope declarations in the <html> tag (and <body>) to be limiting, as you're out of luck if you need/want to markup a property in the content that's not permitted for that itemtype. At least I've found myself rewriting a lot of code because of an <html itemscope itemtype="WebPage"> declaration that prevented me from marking up properties that within the scope of WebPage (e.g. Event). (You get two of these Evan as I forgot to reply all:) ________________________________ > From: "Sandhaus, Evan" <sandhes@nytimes.com> >To: Public Vocabs <public-vocabs@w3.org> >Sent: Wednesday, August 8, 2012 8:43:42 AM >Subject: Flattening Microdata > > >Hello all! > > >I'm interested in 'flattening' schema.org object markup into the <head> element using <meta> elements. In theory one should be able to use the "itemref" and "id" attributes to 'flatten' an object hierarchy into a set of metatags - but in practice this leads to unexpected results. > > >For example: > > >Suppose we have a NewsArticle with the headline 'A Test Headline' that has a creator that is a Person that has the name 'Evan S Sandhaus' and the url 'http://sandha.us';. Here is an example of how to flatten that out in the <head> using id and itemref: > > ><html itemid='the_article_id' itemscope itemtype='http://schema.org/NewsArticle';> ><head> ><!-- Article properties in global scope --> ><meta itemprop='headline' content='A Test Headline'/> > > ><!-- Author Properties Flattened with itemref and ids --> ><meta itemprop='creator' itemscope itemtype='http://schema.org/Person'; itemid='the_creator_id' itemref='author_name author_url'/> ><meta id='author_name' itemprop='name' content='Evan S Sandhaus'/> ><meta id='author_url' itemprop='url' content='http://sandha.us'/> ></head> ><body> ></body> ></html> > > >So that's the theory. > > >In practice, however, both the Rich Snippets Tool and the Python microdata libraries I'm using locally (http://pypi.python.org/pypi/microdata) both insist on adding the creator-specific properties to both the scope of both the creator and the NewsItem. > > >More concretely - my local tools give me this: >[{ > "id": "the_article_id", > "properties": { > "creator": [{ > "id": "the_creator_id", > "properties": { > "name": ["Evan S Sandhaus"], > "url": ["http://sandha.us";] > }, > "type": "http://schema.org/Person"; > }], > "headline": ["A Test Headline"], > "name": ["Evan S Sandhaus"], > "url": ["http://sandha.us";] > }, > "type": "http://schema.org/NewsItem"; >}] > > >And the Rich Snippets tool gives me this: >Item > >Type: http://schema.org/newsarticle >headline = A Test Headline >creator = Item( 1 ) >name = Evan S Sandhaus >url = http://sandha.us > >Item 1 > >Type: http://schema.org/person >name = Evan S Sandhaus >url = http://sandha.us > > >So the question is: is this expected behavior? If so, is there anything I could do besides this to "flatten" the markup into the <head> element? > > >Thanks! > > >~Evan >-- >Evan Sandhaus >Lead Architect, Semantic Platforms >The New York Times Company >@kansandhaus > >
Received on Wednesday, 8 August 2012 17:39:47 UTC