[foaf-dev] PROPOSAL: Deprecate membershipClass, add memberOf

Axel Polleres axel.polleres at deri.org
Fri May 25 19:17:50 BST 2007

Let me recap a bit lengthy, just to see whether I got this right:

foaf:membershipClass shall link a group to a class:

"The foaf:membershipClass property relates a foaf:Group to an RDF class 
representing a sub-class of foaf:Agent whose instances are all the 
agents that are a foaf:member of the foaf:Group."

The memebershipClass property didn't have a  very well defined
semantics so far, did it? It was a mere placeholder, to keep within
OWL DL, did I understand this right?
... since e.g. directly stating that foaf:memberOf would be a 
rdfs:subProperty of rdf:type (which would have a similar effect)
would kick us outside OWL DL of course... yes?

So, let's look at the definition in the current spec:

   <rdf:Property rdf:about="http://xmlns.com/foaf/0.1/membershipClass"
     vs:term_status="unstable" rdfs:label="membershipClass"
     rdfs:comment="Indicates the class of individuals that are a member 
of a Group">

<!-- maybe we should just use SPARQL or Rules, instead of trying to use 
OWL here -->

     <!-- Added to keep OWL DL from bluescreening. DON'T CROSS THE 
STREAMERS, etc. -->
     <!-- This may get dropped if it means non-DL tools don't expose it 
as a real property.
	 Should be fine though; I think only OWL stuff cares about 
	 Dan									 -->

<!--    <rdfs:domain rdf:resource="http://xmlns.com/foaf/0.1/Group"/> 
prose only for now...-->
<!--    <rdfs:range 
rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/> -->
<!--    <rdfs:range rdf:resource="http://www.w3.org/2002/07/owl#Class"/> -->

     <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/>


1) If we look at the commented out range-restrictions,  this says 
basically the any filler of this
property is both an rdfs-class and an *owl-class*.
Note that this is more specific than the prose text, which only mentions:
"The foaf:membershipClass property relates a foaf:Group to an RDF class"
Anyway, as you state here is one reason why defining domain and range 
would kick us outside OWL DL:

 From http://www.w3.org/TR/owl-ref/ :
"Annotation properties must not be used in property axioms. Thus, in OWL 
DL one cannot define subproperties or domain/range constraints for 
annotation properties."

2) So, what I interpret from the prose definition (please correct me if 
I'm wrong!) is that this should say that:
  A group of persons is related to a class, ie. that the foaf:Group 
represents a class. What you really want is something like (saying it by 
SPARQL as a more or less generally agreed rule syntax ;-) )

  {?X a ?C }
  { ?X memberOf ?G
    ?G membershipClass ?C }

And, if I understood correctly, you also want the counterpart, ie. vice 

  {?X memberOf ?G }
  { ?X a ?C
    ?G membershipClass ?C }

that is, that the class and the group are really in 1to1 relation.

3) Now let's look at Ron's proposal... He says,

"Let's replace:

?G foaf:membershipClass ?C.


   ?C rdfs:subClassOf
      [ a owl:Restriction;
        owl:onProperty foaf:memberOf;
        owl:hasValue ?G ].

What are now the concequences of this one?

  If something is a member of ?C, then, by the proposed rewriting of Ron,
  then any member of ?C would also have a  an attribute
  foaf:memberOf with filler ?G ... fine, this covers (ii)

  But what about (i)?

  Wouldn't we also need to define:

      [ a owl:Restriction;
        owl:onProperty foaf:memberOf;
        owl:hasValue ?G ].
   rdfs:subClassOf  ?C

then? ie. we get an equivalentClass in total!

    ?C [ a owl:Restriction;
        owl:onProperty foaf:memberOf;
        owl:hasValue ?G ].
   owl:equivalentClass  ?C .

Shame on me, I didn't check now in detail, whether this is correct 
OWL/RDF syntax...
but I think (with both directions, this could be a nice way to 
circumvent the OWL DL
restrictions and relate an owl:Class to a group 1to1).

Finally, as for the comment:
"<!-- maybe we should just use SPARQL or Rules, instead of trying to use 
OWL here -->"
Let me emphasize that, yes, as Ron pointed out, this needs nominals, 
which are, AFAIR not very well supported by DL reasoners... but well,
I also experienced already that, as soon as you want to model anything 
real, doing without nominals is a real pain.

The SPARQL version would be the one above.. which equally could be 
translated to any simple rule language on top of RDF/S.

just my dos centavos,

Dan Brickley wrote:
> Ron Alford wrote:
>> I think I've mentioned the problems with membershipClass before with the
>> standard OWL mechanisms.  Thus, I'll be rather informal.
>> I propose
>> 1) Deprecating foaf:membershipClass
>> 2) Creating a foaf:memberOf owl:inverseOf foaf:member.
>> Group member ship can be handled in a standard way in OWL using
>> hasValue, and any property that is the inverse of foaf:member.
>> For example, take
>>   <#MyGroup> foaf:membershipClass <#MyGroupMember>.
>> This can be rewritten as
>>   <#MyGroupMember> rdfs:subClassOf
>>      [ a owl:Restriction;
>>        owl:onProperty foaf:memberOf;
>>        owl:hasValue <#MyGroup> ].
>> Any reasoning system that can handle nominals should be able to handle
>> this.  Step 2 is not strictly necessary, since any inverse of
>> foaf:member or its sub properties would do, but it would be nice as a
>> convenience.
> Could you be persuaded to write this up with some example instance data, 
> for those of us whose head hurts when they think about the DL bits of 
> OWL? Like describe some example people and groups. I'd like an example 
> that also helped us all understand where SPARQL might fit into the 
> picture, since a SPARQL query is for many, quite a nice way of finding 
> all the people that match some constraint. And I won't mention RIF just 
> yet :)
> I guess I need a nice OWL engine to explore this in. Can you recommend 
> one?  I just googled for "owl" and "pellet" and was rewarded with 
> pictures of dissected bird crap. Roll on the Semantic Web...
> I guess http://pellet.owldl.com/#Download is a good place to start, and 
> that I'll soon be running into the "how do we make a DL-happy profile of 
> FOAF" issue too?
> Dan
> _______________________________________________
> foaf-dev mailing list
> foaf-dev at lists.foaf-project.org
> http://lists.foaf-project.org/mailman/listinfo/foaf-dev

Dr. Axel Polleres
email: axel at polleres.net  url: http://www.polleres.net/

More information about the foaf-dev mailing list