[foaf-dev] Time to make the foaf classes relate to Dublin Core classes?

Mikael Nilsson mikael at nilsson.name
Thu Jan 24 10:21:04 GMT 2008

On tor, 2008-01-24 at 19:03 +0900, KANZAKI Masahide wrote:
> Hi
> 2008/1/23, Dan Brickley <danbri at danbri.org>:
> > > i think the membershipClass idea is potentially a powerful one.
> >
> > I agree btw re range being dct:AgentClass. Good point.
> hmm... membershipClass and dct:AgentClass are both trying a sort of
> meta modeling ...
> See the example in FOAF spec quoted bellow:
> [[
> <foaf:Group>
> <foaf:name>ILRT staff</foaf:name>
> <foaf:membershipClass>
>     <owl:Class rdf:about="http://ilrt.example.com/groups#ILRTStaffPerson">
>      <rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
>      <rdfs:subClassOf>
>        <owl:Restriction>
>          <owl:onProperty
> rdf:resource="http://xmlns.com/foaf/0.1/workplaceHomepage"/>
>          <owl:hasValue rdf:resource="http://www.ilrt.bris.ac.uk/"/>
>        </owl:Restriction>
>      </rdfs:subClassOf>
>    </owl:Class>
> </foaf:membershipClass>
> </foaf:Group>
> ]]
> If you define that {foaf:membershipClass rdfs:range dct:AgentClass.},
> then class ILRTStaffPerson in the example being dct:AgentClass as well
> as foaf:Person, which is nonsense. We should be very careful when
> talking about things in different layers.

Actually, the example is correct.

ILRTStaffPerson is an *instance* of dct:AgentClass (due to range)

ILRTStaffPerson is a subclass of foaf:Person

Looks ok to me.

Actually, all subclasses of foaf:Agent are instances of dct:AgentClass,
including foaf:Person and foaf:Organization. I'm not sure if there is a
clean way of stating that in OWL (probably not), so one could argue that
an explicit rdf:type on Person and Organization could potentially be


> I guess, what the example wants to describe is "there is a class of
> (group of) person who works at ILRT". This is simply represented by
> the inner part of the example (but not a subclass of Person) :
> ex:ILRTStaff a owl:Class;
>   rdfs:subClassOf [a owl:Restriction;
>      owl:onProperty foaf:workplaceHomepage;
>      owl:hasValue <http://www.ilrt.bris.ac.uk/> ] .
> In OWL Full, you can say this is an instance of foaf:Group as well
> (not possible in OWL DL 1.0, but probably OK in 1.1). No need to make
> another group. In this sense, foaf:Group and dct:AgentClass are
> interchangeable, but only when we accept to break the separation of
> classes and individuals (as in OWL Full).
> cheers,
<mikael at nilsson.name>

Plus ça change, plus c'est la même chose

More information about the foaf-dev mailing list