On Thu, 26 Nov 2009 22:30:41 +0100, Tim van Oostrom <t...@depulz.nl> wrote:

Hi, I made a forumpost : http://forums.whatwg.org/viewtopic.php?t=4176, concerning a possible "microdata specification bug" and a bug in the james.html5.org microdata extractor.

Comes down to <link/> and <meta/> elements possibly being unfit for use with the itemscope attribute.

I made an example in the forum post with some nice ubb formatting .


There are some other issues with <link> and <meta> you might want to review first: [1]

Your second example was:

<div itemtype="http://url.to/geoVocab#country"; itemscope>
<span itemprop="http://xmlns.com/foaf/spec/index.rdf#name"; lang="cn">中華人民共和國</span> <span itemprop="http://xmlns.com/foaf/spec/index.rdf#name"; lang="en">China</span> <link itemprop="http://url.to/city"; href="http://url.to/shanghai"; itemscope itemref="city-shanghai" />
   <div id="city-shanghai">
<span itemprop="http://xmlns.com/foaf/spec/index.rdf#name";>Shanghai</span> <span itemprop="http://url.to/demoVocab#population";>14.61 million people</span> <span itemprop="http://url.to/physicsVocab#time"; datetime="2009-11-26 11:43">11:43 pm (CT)</span>
   </div>
</div>

By using itemprop+itemscope, you're saying that the property is itself an item. Also specifying href="http://url.to/shanghai"; does nothing.

<link>, <meta> and any other void elements are usually the wrong choice for itemprop+itemscope because they don't have child elements, so itemref is the only way to add properties. What you've accidentally done above is add the 3 properties of Shanghai to both the top-level item and the sub-item, see [2] for details. I would rewrite it to something like:

<div itemtype="http://url.to/geoVocab#country"; itemscope>
<span itemprop="http://xmlns.com/foaf/0.1/name"; lang="zh-CN">中华人民共和国</span>
   <span itemprop="http://xmlns.com/foaf/0.1/name"; lang="en">China</span>
   <div itemprop="http://url.to/whatShanghaiIsToChina"; itemscope
        itemtype="http://url.to/geoVocab#city";>
      <span itemprop="http://xmlns.com/foaf/0.1/name";>Shanghai</span>
<span hidden itemprop="http://url.to/demoVocab#population"; content="14610000"></span> <time itemprop="http://url.to/physicsVocab#time"; datetime="2009-11-26T11:43+08:00">11:43 pm (CT)</time>
   </div>
</div>

I don't know how you meant for <http://url.to/city> to be used, the vocabulary at <http://url.to/geoVocab#country> has to define what properties are valid and their semantics. The itemprop <http://url.to/whatShanghaiIsToChina> could be lots of things, what you want is maybe something that means "financial center of" or "largest city", I don't know. If <http://url.to/shanghai> is a global identifier for Shanghai you should use itemid.

I don't know what <http://url.to/physicsVocab#time> is, but note that an exact time isn't very useful without a timezone, so I added the PRC timezone for you. I'll also note that using traditional Chinese for the full name of the PRC is an odd choice, so I changed it to simplified Chinese above.

Marking up the population as "14.61 million people" isn't terribly helpful if you want a computer to be able to find the city with the biggest population among several cities, unless your vocabulary defines how to parse "14.61 million people" into a number, which would be strange. In any case this is hidden metadata unless you want 14610000 or some other easily machine-parsable representation to be visible in the page rendering.

Finally, I think <http://xmlns.com/foaf/spec/index.rdf#name> should be <http://xmlns.com/foaf/0.1/name>. If you're going to use existing vocabularies like FOAF and want your data to be play nice with the RDF world, make sure to check that the result of the RDF extraction algorithm [3] is what you intended. In particular, you probably want to use itemid where possible and make sure that all your URIs are exactly correct. Personally, though, unless I could reuse existing vocabularies for every single item and property, I would only use a full URI for itemtype and point that to a vocabulary that defines what simpler property names like "name" and "city" mean and how to convert the vocabulary to RDF.

[1] http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-November/024116.html [2] http://www.whatwg.org/specs/web-apps/current-work/multipage/microdata.html#the-properties-of-an-item [3] http://www.whatwg.org/specs/web-apps/current-work/multipage/converting-html-to-other-formats.html#rdf

--
Philip Jägenstedt
Core Developer
Opera Software

Reply via email to