[foaf-dev] Request for addition of an inverse property for foaf:member

Houghton,Andrew houghtoa at oclc.org
Tue Sep 27 20:23:44 CEST 2011

Many times when I'm dealing with data that involves foaf:Group and foaf:Person its less than ideal to know up front all the persons associated with a particular group in order to create the group definition. FOAF currently requires, unless I've missed a property definition, agents to be associated with the group via the foaf:member property, e.g.:

#P1 a foaf:Person .
#P2 a foaf:Person .

 a foaf:Group ;
 foaf:member #P1 ;
 foaf:member #P2 ;

More often than not my data contains a person associated with a group and it would be ideal to, for creating large datasets as a stream, to say:

#G1 a foaf:Group .
#G2 a foaf:Group .
#G3 a foaf:Group .

 a foaf:Person ;
 foaf:memberOf #G1 ;
 foaf:memberOf #G2 ;

 a foaf:Person
 foaf:memberOf #G1 ;
 foaf:memberOf #G3 ;

where foaf:memberOf is defined as:

 a owl:ObjectProperty ;
 owl:inverseOf foaf:member ;
 rdfs:domain foaf:Agent ;
 rdfs:range foaf:Group ;

BTW: alternately one might consider foaf:belongsTo vs. foaf:memberOf, but foaf:memberOf seems like a natural extension to the ontology.

Is there a possibility that an owl:ObjectProperty which is an owl:inverseOf of foaf:member could be added to the ontology to make it easier to create large datasets as a stream when agents are associated with groups rather than groups associated with agents?

Think of this issue in terms of two different comma delimited lists. FOAF currently makes it easy when ordered by groups:




BTW: the use case is large datasets, sorting and reordering them is impractical. For smaller datasets, sorting and reordering would be an option.


More information about the foaf-dev mailing list