On Tue, 4 Dec 2012, Ed Summers wrote:
Over on a schema.org related list [1] there has been a discussion about
making identifiers for bibliographic items (books, articles, etc)
available in microdata using itemid. The use case is well described in
the dev edition, with this example [2]:
dl itemscope
itemtype=http://vocab.example.net/book;
itemid=urn:isbn:0-330-34032-8
dtTitle
dd itemprop=titleThe Reality Dysfunction
dtAuthor
dd itemprop=authorPeter F. Hamilton
dtPublication date
ddtime itemprop=pubdate datetime=1996-01-2626 January 1996/time
/dl
Our use case is when a publisher wants to record multiple identifiers
for an item. For example The Reality Dysfunction also has an OCLC number
225870439, which can be expressed as a URI, info:oclcnum/225870439.
When a property isn't the sole unique identifier for an item, just use a
property instead of itemid=, as in:
div itemscope itemtype=http://vocab.example.net/book;
meta itemprop=id content=isbn 0-330-34032-8
meta itemprop=id content=oclcnum 225870439
dl
dtTitle
dd itemprop=titleThe Reality Dysfunction
dtAuthor
dd itemprop=authorPeter F. Hamilton
dtPublication date
ddtime itemprop=pubdate datetime=1996-01-2626 January 1996/time
/dl
/div
...or, if continuing to use URLs makes more sense:
div itemscope itemtype=http://vocab.example.net/book;
link itemprop=id href=urn:isbn:0-330-34032-8
link itemprop=id href=info:oclcnum/225870439
dl
dtTitle
dd itemprop=titleThe Reality Dysfunction
dtAuthor
dd itemprop=authorPeter F. Hamilton
dtPublication date
ddtime itemprop=pubdate datetime=1996-01-2626 January 1996/time
/dl
/div
One alternative to using itemid would be to define an oclcnum itemprop
to the relevant schema.org types. This solution is a bit unwieldy
because there are so many identifier types in the bibliographic world. I
imagine the same is similar in other domains.
That's another possibility, yes. If having a large numbmer of properties
is not practical for some reason, then having one property use a common
syntax that can express all the identifier types (e.g. URLs, or the type
number syntax in the first example above) can work too.
Another solution would be to come up with some generic identifier
mechanism, but I feel like this would then duplicate what itemid is
already doing.
That's fine. itemid= is intended just for the very specific case of
there being a specific unique identifier that is globally used as the key
by which a particular vocabulary's items are identified; if there's no
such key, or there are many keys and none are more important than the
others, then it's better to just use a property.
Honestly, itemid= isn't really intended to be a particularly widely used
feature. This is reflected by the way the spec only has one example that
uses itemid=, and that example's purpose is to demonstrate itemid=.
It's really just a shorthand for a property (though not one whose name can
be specified in itemprop=), and if it doesn't quite fit, it's fine to
ignore it and use something else.
HTH,
--
Ian Hickson U+1047E)\._.,--,'``.fL
http://ln.hixie.ch/ U+263A/, _.. \ _\ ;`._ ,.
Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'