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

Kevin Pickens kbpickens at gmail.com
Wed Jun 29 13:44:19 CEST 2011

TL;DR: If the current foaf:Person (a) foaf:knows another foaf:Person (b) and
b has a URI pointing to a foaf:Person record, just use foaf:knows and the
URI unless new information is being asserted, you probably don't need to
reinvent the wheel.

The rest of this assumes that our poor subject, Joe Bloggs, has foaf:Person
URI of <http://joebloggs.domain.or.social.network/foaf.rdf#joe>.

If the current document is not asserting any new information, a simple
foaf:knows using the foaf:Person URI is sufficient and prevents the current
document from containing out-of-date information.  If the current document
is asserting new information, something like this would make the most
practical sense (in this example, we would be asserting that a person has an
openid URI of <http://socialnet.example/user/joebloggsaccount> and is the
same person that's described at <

<http://socialnet.example/user/lame#foo> foaf:knows _:bnode0 .
_:bnode0 a foaf:Person .
_:bnode0 foaf:openid <http://socialnet.example/user/joebloggsaccount> .
_:bnode0 owl:sameAs <http://joebloggs.domain.or.social.network/foaf.rdf#joe>

If you just want to say that the foaf:Person that the current foaf:Person
foaf:knows is described by a document, the way to do that would be:
<http://socialnet.example/user/lame#foo> foaf:knows _:bnode0 .
_:bnode0 a foaf:Person .
_:bnode0 foaf:isPrimaryTopicOf <
http://socialnet.example/user/joebloggsaccount> .
_:bnode0 owl:sameAs <http://joebloggs.domain.or.social.network/foaf.rdf#joe>

If <http://joebloggs.domain.or.social.network/foaf.rdf#joe> or _:bnode0 is
not the foaf:primaryTopic, then foaf:isPrimaryTopicOf would be replaced by

I would also want to have the node for Joe in the current document be a
proper node, not an empty so that <
http://joebloggs.domain.or.social.network/foaf.rdf#joe> could include an
owl:sameAs so that a crawler hitting <
http://joebloggs.domain.or.social.network/foaf.rdf#joe> could learn about
the current document.

Kevin Pickens
A+ | Network + | Security+ | Project+
kbpickens at gmail.com | http://kbpickens.me |
+1(540)999-6257 (office) | +1(508)664-8314 (fax)

On Wed, Jun 29, 2011 at 6:16 AM, Mischa Tuffield <mischa.tuffield at garlik.com
> wrote:

> 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<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<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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.foaf-project.org/pipermail/foaf-dev/attachments/20110629/b3dde034/attachment-0001.htm 

More information about the foaf-dev mailing list