Subject: Atom-FOAF

From: Henry Story <[email-masked]>
Date: Sun, 15 Aug 2004 16:55:59 +0200

I have written out a full description with a lot of illustrations on 
how to FOAFify Atom [1]. The description is written out as a blog which 
is using the format it is advocating to back it up. So it is both a 
description and a proof of concept.

I see this being useful to the foaf, atom, and bloged communities for 
different reasons:
	- for the atom community it could bring bring some ontological 
insight, and lead to clarifications - mapping always do that.
     - for the foaf community, I suggest this as an opening into the 
blogging space
     - for bloged, the blog editor I am working on, this will be useful 
at the very
	least to help nail down the needed data structures, though I hope to 
use it both as
	an internal and external data-structure.

I look very much forward to any criticism. This document is the result 
of many such criticisms, for which I am very thankful.

Henry Story

[1] http://bblfish.net/work/atom-owl/2004-08-12/blogexample.html

---

From: Sam Ruby <[email-masked]>
Date: Sun, 15 Aug 2004 11:43:28 -0400

Henry Story wrote:
> 
> I have written out a full description with a lot of illustrations on how 
> to FOAFify Atom [1]. The description is written out as a blog which is 
> using the format it is advocating to back it up. So it is both a 

[snip]

> [1] http://bblfish.net/work/atom-owl/2004-08-12/blogexample.html

I have a few questions, let's take 
<http://bblfish.net/work/atom-owl/2004-08-12/entry.2004-06-29-1010.n3> 
as an example.

1) Why does line 13 have "^^xsd:string", but neither line 18 nor line 26
    do?
2) Why is :data an declared as "^^rdf:XMLLiteral"?
3) Why does :created have " GMT" in it?  I believe this makes it an
    invalid xsd:dateTime value.

- Sam Ruby

---

From: Henry Story <[email-masked]>
Date: Sun, 15 Aug 2004 19:18:38 +0200

On 15 Aug 2004, at 17:43, Sam Ruby wrote:

>> how to FOAFify Atom [1]. The description is written out as a blog 
>> which is using the format it is advocating to back it up. So it is 
>> both a description and a proof of concept.
>
> [snip]
>
>> I look very much forward to any criticism. This document is the 
>> result of many such criticisms, for which I am very thankful.
>> Henry Story

The short answer to all your questions, is because nobody has yet 
looked at this as closely as you have :-)

> 1) Why does line 13 have "^^xsd:string", but neither line 18 nor line 

I have changed all of them to ^^xsd:string. I am using Jena so that 
just required me to
change my code to
model.createTypedLiteral(mime)

> 2) Why is :data an declared as "^^rdf:XMLLiteral"?

I thought that since the value of the data field of a content object 
would most likely be xml, this would probably be the best type to give 
it. But I am fully open to criticism here.

>    invalid xsd:dateTime value.

That's because I must have copied and pasted my Java date creation time 
from a flawed source.

I have now changed it to:
       df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); //ISO 8601 
format

If there is a better format string for java please let me know.

> - Sam Ruby

These changes are now on the web site.

Thanks for the comments. I hope my fixes are moving me in the right 
direction.

Henry

---

From: Sam Ruby <[email-masked]>
Date: Sun, 15 Aug 2004 16:27:13 -0400

> it. But I am fully open to criticism here.

In general, text/html is a xsd:string.  application/xhtml+xml is xml.

>       df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); //ISO 8601 format

Other than four extra characters being present in your original source 
(" GMT"), the previous version was preferred as it included a timezone 
offset.

- Sam Ruby

---

From: Henry Story <[email-masked]>
Date: Mon, 16 Aug 2004 02:22:20 +0200

I have now fixed these two further bugs. Thanks for the feedback.

Still looking forward to more of the same medicine :-)

Henry

On 15 Aug 2004, at 22:27, Sam Ruby wrote:

>> would most likely be xml, this would probably be the best type to 
>> give it. But I am fully open to criticism here.
>

I would like at a later stage to rewrite my blog in xhtml. But for the 
moment it is
in html, so I'll use xsd:string.

I suppose that if one uses application/xhtml+xml and one wants to 
insert xml fragments,
these always have to be wrapped in a top level tag such as 
<div>...</div>

I need to fix the OWL file to make the data field be either xsd:string 
or rdf:XMLLiteral. Currently this is not possible to do in Protege, so 
I'll wait for a point when I am confident enough to write OWL files by 
hand to add that.

>> That's because I must have copied and pasted my Java date creation 
>> time from a flawed source.

---

From: Henry Story <[email-masked]>
Date: Wed, 18 Aug 2004 11:44:19 +0200

Here are some of my own thoughts concerning this [1] work:

	- How is this an improvement over RSS1.0. I am very new to RDF, RSS 
and blogging,
		and have not yet had much time to look at what the RSS1.0 community 
has come up
		with. Perhaps I am just (badly) re-inventing the wheel. I would love 
feedback
		from that area on how they think one could improve on their work, and 
the 		pitfalls one should avoid. Perhaps there is an RSS1.0 meeting 
point I should 		send this to.
	- clearly there is a lot of overlap with Dublin Core. It would be 
interesting to
		make these obvious by stating the equality relations between the 
properties
		I have defined and the Dublin Core ones in the Atom.owl file.
	- Should the foaf:Agent class be accessed directly, as it is in the 
example, or
		should one interpose an interface class, say atom:Agent, as Danny 
Ayers does in
		his Atom-OWL[2] work from which mine is derived. An interface class 
would
		be one that specifies the minimal requirements. If one were to do 
this, then 		presumably somebody could still end up with something 
directly referencing
		foaf:Agent, but I suppose they would have to import some ontology 
that makes
		the equality explicit. What is the best way to deal with importing 
such rules?

  Anyway as a side comment I have to say that this RDF thing is really 
easy to get a grip on. With tools such as Protege [3], from Stanford 
University, writing object oriented RDF is a breeze. Languages such as 
N3 make reading RDF as easy as reading the
morning newspaper. And it really feels good to have something that is 
based not only on such widely adopted standards as XML, but also 
supported by the full mathematical infrastructure of set theory and 
logic [4]. I love power tools, and we have not found anything much 
better than mathematics yet. It is only by building on the shoulder of 
giants that we can hope to go any further. I think that the view from 
up on Tim Berner's Lee's shoulder is going to be pretty awesome.

Henry

[1] http://bblfish.net/work/atom-owl/2004-08-12/blogexample.html
[2] http://semtext.org/atom/index.html
[3] http://protege.stanford.edu/
[4] http://www.w3.org/TR/rdf-mt/