[foaf-dev] [foaf-protocols] fp:ping
mischa.tuffield at garlik.com
Fri Apr 16 21:10:33 CEST 2010
On 16 Apr 2010, at 17:26, Danny Ayers wrote:
> pings are great, and recording pings is a great idea (you don't think
> google don't do this already?). Bit over engineered - all you need is
> maybe A -> B (hopefully URIs) and a timestamp.
I would like to think it was that simple too. But I am guessing that would require each foaf page to have it's own rdf store. If every foaf personalprofiledocument came with its own sparql store, a friend request could be as simple as telling the foaf person's rdf store to grab your foaf data, I guess something like (but better than). We implemented a UI for showing friend requests in a foafbuilder UI , which checks the contents of the KB which the ping service adds rdf to, to present the user with a list of mutual friends, friend requests, and friend requests you have made (was meant to be facebookie). I can see how catering for people to arbitrarily upload rdf to your kb doesn't always sound like a good idea, as your KB could get rather bloated. I could envisage a UI feature which showed you a list of foaf:Document URIs that contain no information about anyone you have added as a friend, which you then then choose to remove from your rdf store. My foaf file works well in the foafbuilder.qdos.com (and yes I know I am a bad example, and that the service is far from polished - must find more time ....), but meh.
So, if I wanted to "friend" another foaf:Person, and I didn't know their foaf:Document URI, I could ask a search engine (or until then i could ask) foaf.qdos.com  for foaf:Person URIs for a Person which I know an ifp  for (as foaf.qdos.com does cater for name based searching - which it should do!).
Then I would have to some how magically find a way to ping them my updated foaf:Document. I guess a triple stating "<#me> <http://example.org/hasPingEndpoint> <http://foo.com/ping/> ." would be a starting point - and is what most of this thread is about trying to define (I think). And yes, I standard way of performing this would be a good thing. IMO it is best to keep whatever mechanism simple, all you need for friend requests to work is a store to hold the various foaf files of interest, and a way to query them to find out who is trying to friend you, as illustrated by the foafbuilder which I linked to above. It would be nice if one could find the object of the <http://example.org/hasPingEndpoint> property and then PUT a foaf:Document URI to the endpoint. Something like :
curl -T mynewlyupdatefoaffile.rdf 'http://foo.com/ping/http://example.com/mynewlyupdatefoaffile.rdf'
Then you don't need anything other than RDF, SPARQL, and yay friend requests.
Saying that I should add some timestamping triples to the foaf.qdos.com KB indicating the time when the foaf:Document was pinged (thanks Danny - should have really be doing this from the outset). Will help with keeping the kb uptodate later on ...
Thanks all really,
> On 14 April 2010 11:00, Story Henry <henry.story at bblfish.net> wrote:
>> I would like to propose a ping relation. It is extremely common for people
>> to ask how does one make friends in foaf. For a long time, I thought looking
>> at the referrer in the logs would be enough. But that is perhaps just a bit
>> too minimalistic. Here we can do better.
>> This is a sketch of what the relation should look like. It should be really
>> simple, something that would allow a simple html form to do the job for
>> human readers too.
>> The access to the resource can be protected using foaf+ssl, so that one can reduce spam
>> opportunities, or at least filter them.
>> It would be defined like this
>> @prefix fp: <http://foaf-protocols.com/ont/> . # made up name-space
>> @prefix owl: <http://www.w3.org/2002/07/owl#> .
>> @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
>> @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
>> fp:ping a rdf:Property;
>> rdfs:domain foaf:Agent;
>> rdfs:range xxx:POSTResource;
>> rdfs:comment """
>> This relation gives a way for other services to ping
>> this webid when a new document is found that mentions this WebID.
>> The relation relates a WebId to a collection. A new resource of
>> type PingEvent can be created in that collection by POST ing a
>> URL that mentions the given WebId.
>> The POSTing would be the post created by the following html form where
>> ?coll is the name of the object of the relation, and ?rederer is the URL of
>> the referring resource
>> <form action="POST" action="?coll">
>> referer: <input type="text" name="referer"/><br/>
>> comment: <input type="text" name="comment"/>
>> The resource returned by a GET on the POSTResource can even return the above html
>> The resource created should be a named ping request, which itself
>> can be described using this ontology.
>> This end point could long term accept more flexible contents to be
>> posted. One could post an atom Entry for example.
>> """ .
>> Social Web Architect
>> foaf-protocols mailing list
>> foaf-protocols at lists.foaf-project.org
> foaf-protocols mailing list
> foaf-protocols at lists.foaf-project.org
Mischa Tuffield PhD
Email: mischa.tuffield at garlik.com
Homepage - http://mmt.me.uk/
Garlik Limited, 1-3 Halford Road, Richmond, TW10 6AW, UK
+44(0)7989 199 786 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...
More information about the foaf-dev