- From: Dan Brickley <danbri@danbri.org>
- Date: Mon, 19 Jan 2009 15:01:13 +0100
- To: Adrian Giurca <giurca@tu-cottbus.de>
- Cc: freskessa <sharix86@gmail.com>, www-rdf-rules@w3.org, foaf-dev Friend of a <foaf-dev@lists.foaf-project.org>
+cc: foaf-dev On 19/1/09 10:22, Adrian Giurca wrote: > > I guess you have to use foaf:membershipClass > <http://xmlns.com/foaf/spec/#term_membershipClass> > > <foaf:Person rdf:about="#me" xmlns:foaf="http://xmlns.com/foaf/0.1/"> > <foaf:name>John Doe</foaf:name> > <foaf:membershipClass rdf:resource="http://w3c.org"/> > </foaf:Person> Ah, the issue being that in FOAF we define 'member' with domain of Group, range of Agent. Yes, we didn't make inverses for all the properties in FOAF. This can make syntax a little awkward. With URIs for the person and group: <foaf:Person rdf:about="#me"> <foaf:name>John Doe</foaf:name> </foaf:Person> <foaf:Group rdf:about="#group1"> <member rdf:resource="#me"> </foaf:Person> Or using local 'bnode' identifiers only: <foaf:Person rdf:nodeid="me"> <foaf:name>John Doe</foaf:name> </foaf:Person> <foaf:Group rdf:nodeid="group1"> <member rdf:resource="#me"> </foaf:Person> Given the nature of RDF/XML syntax, this tradeoff was inevitable. - if we add more inverses (eg. we already have depicts/depiction) then data that "says the same thing" becomes fragmented - if we don't, XML markup looks convoluted Since there is a trend towards more RDF notations, some of which -like RDFa in XHTML - have more graceful support for inverses, I'm somewhat wary of adding inverse properties at this stage. The cost of not having the extra property is uglier RDF/XML, whereas the cost of having another way of saying the same thing is that either queries need to check for both, or data stores have to normalise (in advance or during query). http://en.wikipedia.org/wiki/Postel%27s_law is somehow relevant. That said, where there is a natural name for a candidate relation and a lot of people ask for it, I don't see a huge problem with putting it into FOAF, though we might start indicating which of two inverses is the 'preferred form' of the relation. In RDFa XHTML you can write something like: <div xmlns:foaf="http://xmlns.com/foaf/0.1/"> <ul> <!-- Bob, a person with a name and a homepage --> <li typeof="foaf:Person"><a property="foaf:name" rel="foaf:homepage" href="http://example.com/bob/">Bob</a></li> <!-- Eve, a person who is in a uri-identified group that has a uri-identified homepage --> <li typeof="foaf:Person"> <a property="foaf:name" rel="foaf:homepage" href="http://example.com/eve/">Eve</a> is in the <span rev="foaf:member"> <!-- reversed relation; the group has a member, which is Eve --> <span typeof="foaf:Group" about="/groups/html#it"> <!-- a uri for the group, considered as a thing in itself --> <a href="/groups/html" rel="foaf:homepage">HTML group</a> <!-- the group's homepage --> </span> </span> </li> <li typeof="foaf:Person"> <!-- this is more cut down, we just say that Manu is in a group whose name is 'RDFa group' --> <a property="foaf:name" rel="foaf:homepage" href="http://example.com/manu/">Manu</a> is in the <span rev="foaf:member"><span typeof="foaf:Group" property="foaf:name">RDFa Group</span></span> </li> </ul> </div> rapper -i rdfa g1.html rapper: Parsing URI file:///Users/danbri/working/foaftown/2009/rdfa/tests/g1.html with parser rdfa rapper: Serializing with serializer ntriples _:bnode0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> . _:bnode0 <http://xmlns.com/foaf/0.1/homepage> <http://example.com/bob/> . _:bnode0 <http://xmlns.com/foaf/0.1/name> "Bob"@en . _:bnode1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> . _:bnode1 <http://xmlns.com/foaf/0.1/homepage> <http://example.com/eve/> . _:bnode1 <http://xmlns.com/foaf/0.1/name> "Eve"@en . <file:///Users/danbri/working/foaftown/2009/rdfa/tests//groups/html#it> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Group> . <file:///Users/danbri/working/foaftown/2009/rdfa/tests//groups/html#it> <http://xmlns.com/foaf/0.1/homepage> <file:///Users/danbri/working/foaftown/2009/rdfa/tests//groups/html> . <file:///Users/danbri/working/foaftown/2009/rdfa/tests//groups/html#it> <http://xmlns.com/foaf/0.1/member> _:bnode1 . _:bnode3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> . _:bnode3 <http://xmlns.com/foaf/0.1/homepage> <http://example.com/manu/> . _:bnode3 <http://xmlns.com/foaf/0.1/name> "Manu"@en . _:bnode5 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Group> . _:bnode5 <http://xmlns.com/foaf/0.1/name> "RDFa Group"@en . _:bnode5 <http://xmlns.com/foaf/0.1/member> _:bnode3 . rapper: Parsing returned 15 triples Hope this helps, cheers, Dan > > -Adrian > > > freskessa wrote: >> Hi all, >> I am new in RDF, I'm wroting an application that generates FOAF files >> about >> the web site users. I don't know how to wrote that the user (person) is >> member of a group or organization into the "foaf:Person" tags. >> Can you help me please? :( > > > > >
Received on Monday, 19 January 2009 14:01:55 UTC