[foaf-dev] rough notes: badges, lists and groups in RDFa/OWL

Dan Brickley danbri at danbri.org
Mon Dec 20 21:34:24 CET 2010

explores the business discussed here recently, of modelling groups in
a very fluid way using OWL/RDFS classes, but also treating them as
named entities that can have properties (like image/icon urls).

Previous OWL discussion re foaf:Group

What I've done in
http://svn.foaf-project.org/foaftown/2010/badges/badgetest1.html is
start some RDFa example showing how a page can declare or describe a
group (aka list, badge, etc.). It gives examples from two different
badge systems: wikipedia and foursquare, but rather than showing
multi-site, provenance/claims stuff, for now we just have a simple
monolithic demo where the page itself asserts group membership.

The instance markup isn't too bad really, assuming you can live with
RDFa plus some kind of namespacing mechanism:

<ul about="http://danbri.org/foaf.rdf#danbri" typeof="foaf:Person
badge:Langskill_hr_1 badge:Location_boxee_party" >
  name: <span property="foaf:name">Dan Brickley</span>
  homepage: <a href="http://danbri.org/" rel="foaf:homepage

And here's the paragraph that defines one of those groups,

<p about="#Langskill_hr_1" id="Langskill_hr_1" typeof="foaf:Group rdfs:Class">
<span property="rdfs:label">Group 1: basic croatian</span>
<span property="rdfs:comment">People with basic language skills in croatian
This is a sub-group of the <a rel="rdfs:subClassOf"
href="#Langskill_hr">langskill_hr basic croatian</a>
<span rel="rdfs:subClassOf" href="http://xmlns.com/foaf/0.1/Person"/>

So basic idea is to move from per-site local names, to
badges/groups/lists whose definitions are to some extent machine
readable. And where the environment moves us gently towards being able
to stand back from particular groups, and look at the bigger picture.
So instead of my random twitter list for 'xml stuff', deal with 'all
the lists on twitter that ascribe some level of XML expertise to their

I've sketched a few more design issues in the svn demo page but I'll
excerpt here for convenience,


What do all these systems have in common?

They declare groups (lets say of people; we could also treat non-human
agents, organizations, groups etc. in a similar way, but simply for

The give a short natural language description characterising that
group. They may also have a short name, an image link. And in many
cases they may be part of a more complex system defining groups of

Consider a Boxee Fan with basic knowledge of Croatian.

In foursquare, this person would be in group 66 by virtue of having
checked in at a Boxee.tv promotional event. This means that the group
membership is asserted by the foursquare service, rather than the

In Wikipedia, the language ability could be encoded as part of a
larger 'Babel' template.

The wikipedia markup {{Babel|en|hr-1}} gives rise to HTML markup showing:

en - This user is a native speaker of English.
hr-1 - Ovaj suradnik posjeduje osnovno znanje hrvatskog jezika.
So again, we have simple local-to-some-site codes for groups; just as
our user is in group '66' on foursquare, they're in groups (let's say)
"babel en" and "babel hr-1" on Wikipedia. Unlike foursquare, these
group membership claims are typically asserted by the user, but are
accessible for anyone in the wiki to edit.

Mailing list membership, or groups in identi.ca (statusnet) or Twitter
lists can also be looked at this way. Again, they select some but not
(usually) all people and put them in a named group; in some cases
(identi.ca) the groups are self-selecting; in others (twitter) they
are annotations applied by others. On twitter for example, each user
account can create named lists with short names like 'semweb' to apply
to other users.

Is there an underlying model?

groups, lists and badges require a claims-based perspective: some
party is asserting that some (typically other) party is a member of
some group
Each group typically is defined within a Web page, with label,
description, icon etc.
Different sites provide different mechanisms for asserting group
membership, and different APIs to the resulting data
The various specific groups used in an assertion often have rich
relationships to each other (eg. compare 'en-1' with 'en-5', or the
cluster of cat-related groups defined at Wikipedia)
To varying degrees, it may be possible to make template-ized claims
about members of some group in machine-friendly form.
if person x is in this group, they work (or have worked) for organization y
if person x is in this group, they speak read or write language y,
with ability z
if person x is in this group, they are interested in entity y
if person x is in this group, they are interested in topic y

Nearby in the Web, https://wiki.mozilla.org/Drumbeat/Badges
http://joshuagay.org/blog/?p=32 from mozilla folks



More information about the foaf-dev mailing list