[foaf-dev] relationship vocabulary suggestions for improovement

Story Henry henry.story at bblfish.net
Mon Feb 8 12:40:16 CET 2010

On 8 Feb 2010, at 10:29, in a personal note Ian Davis wrote:

> Not unwilling to fix things, but I don't have a lot of time and every
> discussion seems to go around forever.

I sent Ian my suggestions for improvements. He then suggested I mail these comments to a mailing list. The foaf-dev list has the most people active, and the issue concerns foaf:knows, so this seems the right list to do this for.

Now before people comment on the detail of the points below, I need to set the scene a little. I want to say that the issues in the relationship ontology http://vocab.org/relationship are subtle, but serious, yet easy to fix.

Conceptual Analysis problems

So how come people don't see it then? This is what I first need to answer, so that the level at which the criticism is levelled is understood.

First conceptual analysis is very new to a lot of people, and RDFs inferencing also. (A couple of years ago when I raised the problems I made an RDFs inferencing mistake which then made it seem like the whole of my argument was wrong - indeed I made the same mistake a few days ago).

An ontology needs to address itself to a number of constituencies simultaneously, of which I can think of the following right now:

  A- ontologists
  B- tools using the ontology (a semantic address book for example, a reasoning engine)
  C- markup specialists (looking for ontologies to markup up pages generated from dbs)

Each one of these will see a different part of the problem. What is needed is that as much as possible the definitions lead to consistent behaviour for these players.

The problem is that formally there is nothing wrong with the relationship ontology, so that those who look at it from that point of view will keep defending it as being consistent (ie users A and B above), and those who don't understand formalism  (C) won't see the problem and so will use it the way they understand the english text is telling them. 

Then those who understand formalism might say: but the formalism explains the meaning of the term! The problem is that people who don't read or understand or think about the formalism will see the english meaning and go from there, and they will very likely not look at the definition of foaf:knows in detail. So if they are reading the relationship ontology they will assume foaf:knows means something consistent with it! 

What we need to look at is what people really need these relationships for - IE what kind of tools one can build with it. Usually someone says:
   "I need a relation to express that I would like to know someone! How do I do it?"
  Then they are pointed to http://vocab.org/relationship . They assume that if they are pointed here it is because the obvious meaning of the terms has been thought through carefully, that it fits with the reasoning piece, and that they should use it as the human text tells them to. Now there is of course no formal way to prove what people expect of a vocabulary! One needs to use a little bit of common sense.

Proposed FIXES

The fixes are really quite simple. I'd leave the name of the relations as they are, but for a few of them I'd remove the subPropertyOf relation to foaf:knows.

1. rel:wouldLikeToKnow
It is really useful to state that you want to get to know someone reciprocally. Having the possibility of stating this would be very nice for tool developers, and could enable a lot of nice applications.

 But if stating that implies that one already foaf:knows them (as the ontology does currently), then it is a bit awkward . Stating 

	A rel:wouldLikeToKnow B.

currently implies

	A foaf:knows B .

So currently it is defines in such a way that the desire is already satisfied.

2. rel:knowsByReputation, and rel:influencedBy

  all of these relationships are relationships to people one may not have had the type of reciprocal interaction specified by foaf:knows

 We take a broad view of 'knows', but do require some form of reciprocated interaction (ie. stalkers need not apply). Since social attitudes and conventions on this topic vary greatly between communities, counties and cultures, it is not appropriate for FOAF to be overly-specific here.

  So it would be better to not add that to the formal meaning. 

3. rel:neighborOf
This does not usually imply a reciprocal interaction. It's ok perhaps if it does, but then that should be made clear in the text. This is a bit too weak:

"A property representing a person who lives in the same locality as this person."

4. certainly rel:knowsOf 
"A property representing a person who has come to be known to this person through their actions or position." Here clearly there is no reciprocity as implied by foaf:knows.

5. rel:siblingOf 

it is a bit more controversial if this should be a subrelation of foaf:knows, but it is quite easy to imagine many cases where you may want to say you had a sibling you never foaf:know(ed). Those are rare situations though. The text should make it clearer, that this relation does not cover those exception situations. But if it does not, it makes it also somewhat less interesting - why limit oneself here!

5. rel:worksWith 

should not be transitive. It is possible that

  A rel:worksWith B (under employer Sun Microsystems)
  that B has a part time job as a semweb teacher in the evening
  B rel:worksWith C (at the school)

clearly it would be silly to conclude that A rel:worksWith C.

[ but you can see how someone who has little experience on the semWEB will say: 
   "But they should look at the definition. It's transitive!"
To which the response should be: 
   "What if those two pieces of info are published in separate files by different people?"

For the same reasons as above, it is not clear that worksWith should be a subProperty of foaf:knows.

6. rel:ancestorOf, rel:descendantOf

Again it is pushing it to say that there is a reciprocal interaction here.
It is a bit much to say that one foaf:knows one's great-great-great-great grandfather.
 And nowadays, a lot of people fail to know their grandparents.

7. rel:ambivalentOf 

one can certainly have that feeling towards people one has not had a reciprocal interaction with. For many atheists the pope would be such a person.

Now removing those rel:subPropertyOf foaf:knows relations to the above relations is not a problem. If people have (unexpectedly) used these terms as if they were subrelations of foaf:knows, then their usage won't be wrong now that the ontology has been made somewhat lighter. It should also make the relationship ontology more stable over time.


The main reason I can see why all these relations have been made to be a subproperty of foaf:knows is that foaf:knows is well known and widely used. So mapping them by inference to foaf:knows has the advantage that tools that understand foaf:knows will also, if inferencing is enabled, understand all the above relationships.

But this seems to me to be a reason to have perhaps a more generic relationship that foaf:knows. Perhaps 

	foaf:contact or rel:contact or rel:knowsOf 

This would just state that one person knows of another, which makes sense: if you are going to publish a relation  about someone then you knowOf that person.

In that case I propose that

	foaf:knows rdfs:subPropertyOf rel:knowsOf .

This does not cover the biological relationships though which are causal relationships, and so should not be mixed up with the cognitive ones. One may have missing siblings, or parents, and having a vocabulary that would allow one to discover this would be great.

Similarly the neighborhood, or works relationships are not necessarily cognitive, though they sometimes can be. Discovering that someone who is a friend of someone is a neighbor of oneself would be something very nice to discover.

Hope that helps,


More information about the foaf-dev mailing list