Subject: Purpose of PersonConstruct

From: Danny Ayers <[email-masked]>
Date: Sat, 28 Aug 2004 23:00:06 +0200

Before going any further, I wonder if it might be possible to clarify
the intended purpose of author/contributor elements.

Seems to me there are several possible uses, each with slightly
different requirements:

(first pass)

* providing ownership details (i.e. copyright on the content)
* providing contact details (i.e. how to get in touch with the person)
* providing data for entry processing (e.g. finding entries by the same author)

They all boil down to identifying the person entity, but how that's
done is another matter.
Take the <email> element - probably useful for contact, possibly
useful for ownership, probably useful for other processing. Almost
certainly useful for spammers. Wouldn't it be better to allow an
sha1's version of the address as an alternative?

A bit of prior art that may be useful:

http://rdfweb.org/mt/foaflog/archives/2003/07/10/12.05.33/

Cheers,
Danny.

-- 

http://dannyayers.com

---

From: Asbjørn Ulsberg <[email-masked]>
Date: Sun, 29 Aug 2004 01:28:33 +0200

On Sat, 28 Aug 2004 23:00:06 +0200, Danny Ayers <[email-masked]>  
wrote:

> done is another matter. [...] Wouldn't it be better to allow an

I've thought about this for a while, and many others have probably too,  
but since I know as much as virtually nothing about FOAF, I have no idea  
how to attack the problem.

Can't you, or anyone else with FOAF-knowledge, write up a pace, blog entry  
or whatever, that explains how FOAF can be used to identify authors in  
Atom? It would be very useful.

-- 
Asbjørn Ulsberg         -=|=-        [email-masked]
«He's a loathsome offensive brute, yet I can't look away»

---

From: Danny Ayers <[email-masked]>
Date: Sun, 29 Aug 2004 01:54:35 +0200

> Atom? It would be very useful.

Bit late at night here, but one or two maybe relevant points. FOAF
acknowledges that it's hard to identify a person using a single piece
of data, and a URI for various reasons is inappropriate. So provision
is made to allow multiple properties, some of which are 'inverse
functional properties' (IFPs) which can be used as a kind of key
field, so a mailbox property will only refer to one person, similarly
a homepage property and IM id property. Atom is close in using
multiple fields: name, uri and email. (Noting previous comment re. not
using live email addresses in harvestable docs - the sha1 hash of the
address will only refer to one person, it's another IFP).

Another point is that I think there's a very simple pragmatic way of
using FOAF with the current Atom format spec. A relatively recent
addition is the PersonalProfileDocument (PPD) class, which can be used
(within the RDF) to say this FOAF doc is about this person. That
appears to mesh well with the <uri> element within Atom's Person
construct: "...conveys a URI associated with the person."  - just give
it the URI of a PPD.

One final thing, there's a slight structural mismatch between the way
FOAF does its thing-person associations and the way Atom does them. By
example -

FOAF is roughly:
<entry><maker><Person><name>Jane</name></Person></maker><entry>

Atom is roughly:
<entry><author><name>Jane</name></author></entry>

- the person and relationship have been compressed into a single term.

This may make it difficult to use (namespaced) FOAF terms directly inside Atom.

Cheers,
Danny.

-- 

http://dannyayers.com

---

From: Henry Story <[email-masked]>
Date: Sun, 29 Aug 2004 11:04:28 +0200

On 29 Aug 2004, at 01:28, Asbjørn Ulsberg wrote:

>
> On Sat, 28 Aug 2004 23:00:06 +0200, Danny Ayers  
> <[email-masked]> wrote:
>
> I've thought about this for a while, and many others have probably  
> too, but since I know as much as virtually nothing about FOAF, I have  
> no idea how to attack the problem.
>
> Can't you, or anyone else with FOAF-knowledge, write up a pace, blog  
> entry or whatever, that explains how FOAF can be used to identify  
> authors in Atom? It would be very useful.

I have recently written up [1] an example of FOAF in action with a  
RDFised version of Atom, using N3 notation [2]. That should help give  
you some context which you are familiar with. Take for example my entry  
[3]

----------8<--------------------------------------------
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix :         
<http://bblfish.net/work/atom-owl/2004-08-12/Atom.owl#> .

<>    a       :Entry ;
       :alternate
               [ a       :Link ;
                 :href   <blogexample.html#entry.2004-07-12-1935.n3> ;
                 :mime-type "text/html"^^xsd:string ;
                 :text   "html blog entry"^^xsd:string
               ] ;
       :author [ a       <http://xmlns.com/foaf/0.1/Person> ;
                 <http://xmlns.com/foaf/0.1/homepage>
                         <http://bblfish.net/> ;
                 <http://xmlns.com/foaf/0.1/mbox>
                         <mailto:[email-masked]> ;
                 <http://xmlns.com/foaf/0.1/name>
                         "Henry Story"^^xsd:string
               ] ;
       :content
               [ a       :Content ;
                 :data   "All of the content here is freely licenced  
under the gpl for the code, and the <a  
href='http://creativecommons.org/licenses/by-sa/2.0/'>Attribution- 
ShareAlike 2.0</a> Creative Commons license, for the text.  
"^^xsd:string ;
                 :mime-type "text/html"^^xsd:string
               ] ;
       :copyright <http://creativecommons.org/licenses/by-sa/2.0/> ;
       :created "2004-07-12T19:35:00+0200"^^xsd:dateTime ;
       :entry-version <tag:bblfish.net/20040712/1935/blog1#version1> ;
       :id     <tag:bblfish.net/20040712/1935/blog1> ;
       :title  [ a       :Content ;
                 :data   "Copyrights"^^xsd:string ;
                 :mime-type "text/simple"^^xsd:string
               ] .
----------8<--------------------------------------------

This structure should be quite familiar to an Atomist.
The first line says that this file (<>) is an Entry.
This file has as alternate representation [4] at
	blogexample.html#entry.2004-07-12-1935.n3

The author is a FOAF structure. You can click on those links to get the  
full definition
of each property.

This does not yet make full use of the what is available in foaf, but  
it gives you the basics. Some nice applications of these FOAF  
relationships would be to be allow blog readers to find feeds of  
friends of a friend (FFOAF).

Henry Story
http://bblfish.net/

[1] http://bblfish.net/work/atom-owl/2004-08-12/blogexample.html
     http://bblfish.net/work/atom-owl/2004-08-12/
[2] http://infomesh.net/2002/notation3/
[3] http://bblfish.net/work/atom-owl/2004-08-12/entry.2004-07-12-1935.n3
[4] http://bblfish.net/work/atom-owl/2004-08-12/Atom.owl#alternate

---

From: Danny Ayers <[email-masked]>
Date: Sun, 29 Aug 2004 11:46:33 +0200

> you some context which you are familiar with. Take for example my entry

Thanks Henry, there's less of a mismatch than I thought. Looking at
your example (snippet below)  I'm reminded that there is a more direct
map to the Atom structure in RDF(/XML), it could look something like :

<entry>
   <author rdf:parseType="Resource">
      <name>Jane</name>
   </author>
</entry>

Here's a (marginally) more FOAFish version:

<entry>
   <author>
      <Person>
          <name>Jane</name>
     </Person>
    </author>
<entry>

If you knew (from the spec/RDF schema) that the range of the
atom:author property was foaf:Person, then I believe these two would
be equivalent.

Cheers,
Danny. 

-- 

http://dannyayers.co

---

From: Bill de hÓra <[email-masked]>
Date: Sun, 29 Aug 2004 15:12:00 +0100

> * providing data for entry processing (e.g. finding entries by the same author)

  * exposing those who post anonymously.

cheers
Bill

---

From: Henry Story <[email-masked]>
Date: Tue, 31 Aug 2004 13:28:23 +0200

Thanks Danny for pointing this out. I now understand the real value of  
OWL.
I have updated my model to take into account that one does not need to  
specify the
types of the fields when dealing with an OWL ontology, since the types  
are already specified in the ontology (=library in more conventional  
software development terms).

The N3 file I attached previously turns into the following very  
readable xml file:

------------------------8<----------------------------------
<rdf:RDF
     xmlns="http://bblfish.net/work/atom-owl/2004-08-12/Atom.owl#"
     xmlns:foaf="http://xmlns.com/foaf/0.1/"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema#">
   <Entry rdf:about="entry.2004-07-12-1935.n3">
     <id rdf:resource="tag:bblfish.net/20040712/1935/blog1"/>
     <author>
       <foaf:Person>
         <foaf:name>Henry Story</foaf:name>
         <foaf:mbox rdf:resource="mailto:[email-masked]"/>
         <foaf:homepage rdf:resource="/"/>
       </foaf:Person>
     </author>
     <alternate>
       <Link>
         <text>html blog entry</text>
         <href rdf:resource="blogexample.html#entry.2004-07-12-1935.n3"/>
         <mime-type>text/html</mime-type>
       </Link>
     </alternate>
     <entry-version  
rdf:resource="tag:bblfish.net/20040712/1935/blog1#version1"/>
     <title>
       <Content>
         <data>Copyrights</data>
         <mime-type>text/simple</mime-type>
       </Content>
     </title>
     <copyright  
rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/"/>
     <created>2004-07-12T19:35:00+0200</created>
     <content>
       <Content>
         <data>All of the content here is freely licenced under the gpl  
for the code, and the &lt;a  
href='http://creativecommons.org/licenses/by-sa/2.0/'>Attribution- 
ShareAlike 2.0&lt;/a> Creative Commons license, for the text. </data>
         <mime-type>text/html</mime-type>
       </Content>
     </content>
   </Entry>
</rdf:RDF>
------------------------8<----------------------------------

With a little bit of tweaking it seems to me we won't be far off from  
the current
atom format.

Henry