[foaf-dev] location display. V1: current location

Simon Reinhardt simon.reinhardt at koeln.de
Thu Jun 12 16:11:35 BST 2008

Story Henry wrote:
> The problem is that currently nobody publishes information about their 
> current location. They publish information about their office location, 
> their home, .... but not as far as I can see (but I have not looked 
> deeply) about where their current location is.

This is pretty much a privacy problem to me. Won't be one anymore with "RDFAuth" [1]. ;-)

> But this is not going to be a problem for long, and perhaps should not 
> be a problem at all.
> Services such as http://fireeagle.yahoo.net/ (thanks Damian Steer for 
> the pointer) and the next iPhone which will contain a GPS device, will 
> make developing such services really easy.
> So why not start doing this then?

Yep, with FireEagle, an RDF wrapper around it and support for OAuth this would work. Didn't know about iPhone GPS yet, sounds cool.

> 2.1.1 using foaf:based_near
> ---------------------------
> So first off we need an ontology to describe the current location of a 
> person. At first I thought that the foaf:
> :me foaf:based_near [ geo:lat 48.402495; geo:long 2.692646 ].
> Or perhaps even
> :me foaf:based_near <http://geohash.org/u09gm72szpn3> .
> where the location information is somewhere else would be good.
> But of course that would not quite work. Because a foaf:Person has 
> properties such as foaf:mbox, foaf:homePage, which are meant to be 
> relatively stable. The location one has at a time will be changing at a 
> much greater rate. In logical terms a foaf:Person is a 4 dimensional 
> space time sausage which is much longer than the 4 dimensional slice 
> that we wish to describe with our current location. Not to make this 
> distinction is going to create cashing as well as merging issues.

It works fine if you put the information into a separate file.


<> a foaf:PersonalProfileDocument ;
	rdfs:seeAlso <.../status.n3> ;
	foaf:primaryTopic :me .
:me a foaf:Person ;
	foaf:mbox <...> .


<> a foaf:StatusDocument ;
	dct:date "2008-06-12T12:00:00"^^xsd:dateTime .
<...#me> foaf:based_near [ geo:lat 48.402495 ; geo:long 2.692646 ] .

Although I understand based_near more like a stable position, where you live. But you native speakers tell me. :-)
dct:date in status.n3 is not even needed, HTTP does it all for you. If you wanted to not just describe your current status but also past ones like in MeNow, you could do that with graphs:

{ :me foaf:based_near [ geo:lat 48.402495 ; geo:long 2.692646 ] } dct:date "2008-06-12T12:00:00"^^xsd:dateTime .
{ ...

Or have each event in separate file linked to from status.n3.
Talking of events, this seems like the perfect case for the Event ontology [2]. An example:

:me event:isAgentIn [ # Note that this inverse property is deprecated but it makes it easier to write this in RDF/XML.
	a event:Event ;
	event:time [
		a tl:Interval ;
		tl:at "2008-06-12T12:00:00"^^xsd:dateTime ;
		tl:duration "PT1H"^^xsd:duration
	] ;
	event:place [
		geo:lat 48.402495 ;
		geo:long 2.692646
	] ;
	event:factor :mytv , :mybeer ;
	dct:description "Havin' a Bud, watchin' a game"^^xsd:string
] .

I really like this ontology and think it should deserve way more attention. :-)


[1] http://blogs.sun.com/bblfish/entry/rdfauth_sketch_of_a_buzzword
    rdfs:seeAlso <http://blogs.sun.com/bblfish/entry/foaf_ssl_creating_a_global> . 
[2] http://motools.sourceforge.net/event/event.html

More information about the foaf-dev mailing list