Subject: Using Atom "Category"

From: pkeane <[email-masked]>
Date: Fri, 9 Nov 2007 10:37:25 -0600 (CST)

I am in the process of integrating Atom into a digital
asset management tool and I see a potentially very useful
extension point in the Atom "category" element. I have
followed some of the previous discussion in this area (notably
http://www.majordojo.com/atom/overloading_atomcategory.php and
http://torrez.us/archives/2006/05/25/447/).

I have described the system here before, but briefly, faculty members
can manage their digital "stuff" (images, mp3s, quicktime movies, pdfs,
etc) by creating a collection and can add any metadata they wish, based
on attributes (aka fields) they have specified. The semantics of these
attributes are collection-specific so that collection owners can feel
free to create any sort of schema they wish without reference to any
authority (Dublin Core, LCSH, etc.) in the style of FileMaker, Excel,
etc. On a collection-by-collection basis, we can create mappings to
standard metadata schemas (Dublin Core, MODS, VRA Core, LCSH, etc.) for 
exporting purposes.

That said, I need to provide some means by which we can apply very
basic sematics to some of the attributes so that the system can "talk"
Atom to itself and other systems. I already have a simple algorithm for
determining what can be considered a "title" for the item and I can come
up with an easy way to determine metadata that's likely to be a
"summary" and metadata that describes "rights" information. I can also
extract "updated" from the system.

But I suspect "category" might provide a place for some of the other
attributes while staying within the Atom namespace. Does anyone
have any thoughts on how we determine the "categoriness" of an
attribute algoritmically? Collection owners can specify occurrence
cardinality (0:1,0:m,1:m,1:1) for attributes, but not uniqueness
constraints (obviously, a unique attribute such as 'serial number'
is NOT category-like). "Tags" work nicely as categories as do any
attributes that have a predefined scope of values (collection owners
can, in fact, define the set of possible values for an attribute).

In addition to items in collections, I would like to have Atom feeds
that describe the attributes themselves. Our "attributes" database table
includes columns with information about the attribute (sort order,
whether it is included in basic search, whether it is public or private,
etc.) and I have shoehorned these into Atom categories as illustrated by
this snippet of an Atom feed:

<entry>
....
<id>http://example.com/american_politics_collection/att/scratch_pad</id>
<title>scratch_pad</title>
<category term="textbox" scheme="http://example.com/categories/attribute/html-input-type/" label="HTML input:textbox"/>
<category term="14" scheme="http://example.com/categories/attribute/sort-order/" label="sort:14"/>
<category term="on_list_display" scheme="http://example.com/categories/attribute/on-list-display/" label="on list display"/>
<category term="in_basic_search" scheme="http://example.com/categories/attribute/in-basic-search/" label="in basic search"/>
<category scheme="http://example.com/categories/attribute/public-private/" term="public" label="public"/>
...
</entry>

Does anyone have any thoughts on the appropriateness of this use for Atom categories?

many thanks-
Peter Keane
daseproject.org

---

From: James M Snell <[email-masked]>
Date: Fri, 09 Nov 2007 09:07:53 -0800

pkeane wrote:
> [snip]

+1, this looks like a great use of atom:category

> can, in fact, define the set of possible values for an attribute).

Any bit of information that can be used to organize the entry into some
form of taxonomy is suitable for atom:category.

> <category term="textbox"
> scheme="http://example.com/categories/attribute/html-input-type/"
> label="HTML input:textbox"/>
> <category term="14"
> scheme="http://example.com/categories/attribute/sort-order/"
> label="sort:14"/>
> <category term="on_list_display"
> scheme="http://example.com/categories/attribute/on-list-display/"
> label="on list display"/>
> <category term="in_basic_search"
> scheme="http://example.com/categories/attribute/in-basic-search/"
> label="in basic search"/>
> <category
> scheme="http://example.com/categories/attribute/public-private/"
> term="public" label="public"/>
> ...
> </entry>
> 

This looks fine to me.

- James