Flattening Microdata

Hello all!

I'm interested in 'flattening' schema.org<http://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'<http://sandha.us'/>/<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<http://sandha.us/>"]
            },
            "type": "http://schema.org/Person"
        }],
        "headline": ["A Test Headline"],
        "name": ["Evan S Sandhaus"],
        "url": ["http://sandha.us<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 15:44:16 UTC