[foaf-dev] Linking foaf and other rdf documents/resources

Mischa Tuffield mischa.tuffield at garlik.com
Thu Jun 30 17:36:40 CEST 2011


Hi Bruce, 

<snip/>

On 29 Jun 2011, at 17:42, Bruce Whealton wrote:

> Hi Mischa,
>         I might need you to clarify what you mean by “foaf:knows'ing a foaf:Person URI” which you said is more efficient. 

By that I mean : 

<http://mmt.me.uk/foaf.rdf#mischa> foaf:knows <http://plugin.org.uk/swh.xrdf#me>  .

which translates to: 

the foaf:Person Mischa Tuffield foaf:knows the foaf:Person Steve Harris . 

> Does the foaf:Person URI refer to a foaf:Person node in an RDF (FOAF) document?

Exactly, my foaf:Person URI http://mmt.me.uk/foaf.rdf#mischa is a node in my foaf:PersonalProfileDocument http://mmt.me.uk/foaf.rdf (or in your language [RDF (FOAF) document]) 

>  
> And relating to what you said Matthew, where you can use owl:sameAs what can I say my foaf file is the same as – another url that is about me, like a freebase topic?

For example, you should owl:sameAs your foaf:Person URI to another URI about you, which is also of type foaf:Person. 

Mischa
>  
> Thanks,
> Bruce
>  
> From: Mischa Tuffield
> Sent: Wednesday, June 29, 2011 6:16 AM
> To: Matthew Rowe
> Cc: Bruce Whealton ; foaf-dev at lists.foaf-project.org
> Subject: Re: [foaf-dev] Linking foaf and other rdf documents/resources
>  
> Bruce/Matt, 
>  
> On 29 Jun 2011, at 09:39, Matthew Rowe wrote:
> 
>> Hi Bruce
>>  
>> On 29 Jun 2011, at 01:11, Bruce Whealton wrote:
>> 
>>> Hello all,
>>>                 So, there are a few ways that one can link various profiles, or RDF FOAF files/resources.  I’m wondering if there is a best practice.
>>> I had been using
>>> <foaf:knows>
>>>         <foaf:Person>
>>> ...
>>>          <rdfs:seeAlso rdf:resource=”http://url/pathto/foaf.rdf"/>
>>>         </foaf:Person>
>>> </foaf:knows>
>>>  
>>> But some FOAF profiles I’ve seen setup with method #2.
>>> <rdf: Description rdf: about=”http://pathToFileAboutPerson/longstringofcharacters” >
>>>       ... information about the person
>>> </rdf: Description>
>>>  
>>> then further down there would be a
>>> <foaf: knows resource=”http://pathToFileAboutPerson/longstringofcharacters”/>
>>>  
>>> I assume that the about="http://pathToFileAboutPerson/longstringofcharacters” refers to a FOAF file but I guess it doesn’t have to link to a foaf file.
>>> I wonder if there is a benefit to using method #2 or a best practice that favors this? 
>>  
>> I don't think that there is a best practice per se, as both are, as you have found, commonly used conventions. Another is to place a link to an equivalent foaf:Person instance using owl:sameAs within the foaf:Person instance in a foaf profile:
>>  
>> <foaf:knows>
>> <foaf:Person>
>> .....
>> <owl:sameAs rdf:resource="http://pathToFileAboutPerson/hashURI"/>
>> </foaf:Person>
>> </foaf:knows>
>  
> Indeed, people do do this, I find it a bit wasteful in terms of number of triples authored, but that is merely personal preference.
>  
>> 
>>> I can see that it might make it easier if one had to refer, more than once, to the resource that represents a person (through their FOAF profile) in a document.
>>> As one uses more vocabularies and has more extensive rdf files, it becomes more likely that one is going to make numerous assertions about that person (resource). 
>>  
>> My preference is for your latter example over the former as data is not duplicated in this instance. However, if I was to create new information about a person (for example by exporting it from a Social Web platform) then I would go for the former option of creating a new instance of foaf:Person and then associating additional, existing information about the person to this instance using either rdfs:seeAlso or owl:sameAs.
>> 
>>> Most importantly though, will there be any difference in the ability of crawlers or other apps to follow the links between various FOAF profile files?
>>  
>> In theory, no. Any crawler should have built in 'lookups' that traverse the links and dereference any URIs that are described as being equivalent or providing additional information about the instance (i.e. rdfs:seeAlso and owl:sameAs).
>  
> I still think the former approach of using bnodes for People, rdfs:seeAlso, and Inverse Functional Properties is not as efficient as foaf:knows'ing a foaf:Person URI, as below:
>  
> If i (a crawler) come across triples such as below in the foaf:Person http://socialnet.example/user/lame#foo's foaf:PersonalProfileDocument:
>  
> <http://socialnet.example/user/lame#foo> foaf:knows _:bnode0 .
> _:bnode0 a foaf:Person .
> _:bnode0 rdfs:seeAlso <http://foozle.example/foaf.rdf> .
> _:bnode0 foaf:name "Joe Bloggs" .
> _:bnode0 foaf:mbox <mailto:joe.bloggs at lame.example> .
>  
> I would have to fetch all the triples in "http://foozle.example/foaf.rdf", and I would have to sparql for all the foaf:Person(s) in the document, and I would have to get all of people's foaf:mbox's to find out which of the foaf:Person(s)  http://socialnet.example/user/lame#foo was claiming to know.
>  
> Aside from that I am not criticising the approach, what I find really useful about the bnode manner of foaf:knows'ing someone is for when you don't know the URI of the foaf:Person's foaf:PersonalProfileDocument of their foaf:Person URI, as you can simply state, without the rdfs:seeAlso.
>  
> <http://socialnet.example/user/lame#foo> foaf:knows _:bnode0 .
> _:bnode0 a foaf:Person .
> _:bnode0 foaf:name "Joe Bloggs" .
> _:bnode0 foaf:mbox <mailto:joe.bloggs at lame.example> .
>  
> ^^ is pretty neat from my point of view, allowing one the ability to foaf:know's someone, regardless of whether or not you know what social network their foaf:PersonalProfileDocument resides.
>  
> Regards,
>  
> Mischa
>  
> 
>>  

___________________________________
Mischa Tuffield PhD
Email: mischa.tuffield at garlik.com
Homepage - http://mmt.me.uk/
+44(0)208 439 8200  http://www.garlik.com/
Registered in England and Wales 535 7233 VAT # 849 0517 11
Registered office: Thames House, Portsmouth Road, Esher, Surrey, KT10 9AD

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.foaf-project.org/pipermail/foaf-dev/attachments/20110630/5807a00e/attachment.htm 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 841 bytes
Desc: This is a digitally signed message part
Url : http://lists.foaf-project.org/pipermail/foaf-dev/attachments/20110630/5807a00e/attachment.pgp 


More information about the foaf-dev mailing list