[rdfweb-dev] Time's running out?

Dan Brickley danbri at w3.org
Mon Aug 11 22:36:17 UTC 2003

* Julian Bond <julian_bond at voidstar.com> [2003-08-11 22:46+0100]
> Jim Ley <jim at jibbering.com> wrote:
> >My approach is to find all the THINGS with a  foaf:mbox_sha1sum and then 
> >see
> >what those things know, doing it this we way can ignore the type in the
> >code, it does mean that we use data of the slightly less defined THINGS,
> >however because of the foaf:mbox_sha1sum limitation on it being about a
> >foaf:Person, we're not very limiting by just looking at THINGS, and it 
> >means
> >people can use much neater syntax in their RDF docs, and I don't need to
> >teach my tools about subClasses.
> Trying to get my head round this. Look for mbox or mbox_sha1sum. Get 
> their owner, then look at the other properties of that.
> Then I checked the spec to find that both mbox and mbox_sha1sum have 
> domain and region "not specified". So where's the limitation on them 
> being about foaf:Persons? Just a convention?

You're right! This is currently under-constrained in the live RDF schema 
at http://xmlns.com/foaf/0.1/index.rdf

 <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/mbox"
 vs:term_status="testing" rdfs:label="personal mailbox" rdfs:comment="A
 personal mailbox, ie. an Internet mailbox associated with exactly one
 owner, the first owner of this mailbox. This is a 'static inverse
 functional property', in that  there is (across time and change) at
 most one individual that ever has any particular value for foaf:mbox.">
<rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/>

This needs fixing. The mbox_sha1sum definition says:

<rdf:Property rdf:about="http://xmlns.com/foaf/0.1/mbox_sha1sum"
  vs:term_status="testing" rdfs:label="sha1sum of a personal mailbox URI
  name" rdfs:comment="The sha1sum of the URI of an Internet mailbox
  associated with exactly one owner, the  first owner of the mailbox.">
<rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Agent"/>

Which (apart from using foaf:Agent rather than foaf:Person) is pretty
much what I'd expect for foaf:mbox. We don't currently have a 'Mailbox' 
class, so what I'd propose is that 

(in no particular syntax but hopefully clear)

  rdfs:domain = foaf:Agent
  rdfs:range = rdfs:Resource
  # "Anything with an mbox is an Agent; the mbox of something is always a
  # Resource". (we could tighten the latter if we got into modelling
  # mailboxes explicitly as a class, or found a nice schema that already
  # did that.
I should note that while http://xmlns.com/foaf/0.1/index.rdf is
completely up to date with recent changes, the spec at the namespace URI 
is 3+ weeks stale, since I've been working on a radically less sketchy
spec. Having not managed to wrap that up this weekend (I was offline and 
not working :) I think the best thing to do is circulate the current 
draft for rdfweb-dev to take a look at, rather than continue any longer 
with the out-of-date version.

> Then we have foaf:knows which does have Domain and Region of 
> foaf:Person. So if a file author is perverse enough not to use Person 
> for the main data, they then shouldn't use knows to link that 
> not-a-Person to other not-a-persons.

I would encourage everyone to include an rdf:type of foaf:Person where 
possible, or at the very least use a sub-class for which there is a 
dereferencable schema that relates the sub-class to foaf:Person.

But if the not-described-as-a-Person thing is in fact a Person, even if 
that wasn't mentioned, then the foaf:knows property is perfectly OK (and 
in fact implies personhood of anything it is linking). But we should
make efforts to avoid obscure or "too clever for its own good" RDF
documents. A rule of thumb might be that you can get by without making 
schema-based inferences, even if doing that extra work would be useful.


More information about the foaf-dev mailing list