mailing-lists in semantic-land

> So basically no-one in the Semantic Web community has a clue about
> mailing lists. That is quite cool in itself.

$ mkdir mail/foaf-protocols 
$ cd mail/foaf-protocols
$ wget http://lists.foaf-project.org/pipermail/foaf-protocols/2010-{January,February,March}.txt.gz && gunzip *gz
$ cd ../.. 
 (you could stay in this directory if you want a sep index)
$ e.console

irb(main):002:0> E('/mail/foaf-protocols/*txt').glob.map &:indexMbox
=> [/mail/foaf-protocols/2010-February.txt, /mail/foaf-protocols/2010-January.txt, /mail/foaf-protocols/2010-March.txt]

mail is of course identified by message-ID:

   (E E::SIOC+'from').rangePO 'henry.story@bblfish.net',1
=> [/mail/foaf-protocols/2010-March/97]

m=((E E::SIOC+'from').rangePO 'henry.story@bblfish.net',1)[0].resource :mail

irb(main):019:0> puts m.keys
uri
http://rdfs.org/sioc/ns#from
http://rdfs.org/sioc/ns#name
http://purl.org/dc/terms/date
http://rdfs.org/sioc/ns#group
http://rdfs.org/sioc/ns#subject
http://rdfs.org/sioc/ns#reply_of
http://rdfs.org/sioc/ns#reference
http://rdfs.org/sioc/ns#content

(not sure all predicates exist, but theyre trivially changed)

  m.uri
=> "5FAADD40-416A-43A4-A0FE-7F8B41D3C530@bblfish.net"

message identifier, it can be plugged into gmane :

http://mid.gmane.org/5FAADD40-416A-43A4-A0FE-7F8B41D3C530@bblfish.net

or local DB (filesystem really)

irb(main):022:0> (E m.uri).r
=> "From: henry.story at bblfish.net (Story Henry)\nDate: Thu, 11 Mar 2010 20:27:05 +0100\nSubject: [foaf-protocols] [xwiki-devs] http://webid.myxwiki.org/\nIn-Reply-To: <D61D8C2E-E77E-4856-AEC9-764E9CA0A1F2@bblfish.net>\nReferences: <D61D8C2E-E77E-4856-AEC9-764E9CA0A1F2@bblfish.net>\nMessage-ID: <5FAADD40-416A-43A4-A0FE-7F8B41D3C530@bblfish.net>\n\n\nOn 9 Mar 2010, at 20:40, Story Henry wrote:\n\n> A very basic implementation of foaf+ssl is up here:\n> \n>  http://webid.myxwiki.org/\n\nWhile fixing Chrome [0], we found a bug with my previous implementation of web..

and HTTP
 (a prettily formatted and link-clickable version) 

[root@x200 element]# curl -I http://m/5FAADD40-416A-43A4-A0FE-7F8B41D3C530@bblfish.net
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 4701

 (raw message)

[root@x200 element]# curl -I http://m/5FAADD40-416A-43A4-A0FE-7F8B41D3C530@bblfish.net?raw
HTTP/1.1 200 OK
Content-Type: message/rfc822
Content-Length: 2034

 (content-type turtle)

curl http://m/-/5FAADD40-416A-43A4-A0FE-7F8B41D3C530@bblfish.net -H "Accept: application/turtle"
@base </> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

<ma/foaf-protocols/2010-March/97>
    <fs:ftype> "file" ;
    <fs:mtime> "2010-04-06 21:21:45 +0000" ;
    <fs:size> "2034" .

<5FAADD40-416A-43A4-A0FE-7F8B41D3C530@bblfish.net>
    <http://purl.org/dc/terms/date> "2010-03-11T19:27:05+00:00" ;
    <http://rdfs.org/sioc/ns#content> """<snip>


 wrote some domain-specific views for mails (suggestions welcome)

 http://m/ma/foaf-protocols/*/*?view=threads 

=> http://i.imgur.com/eeP8W.png

a 'long tail' approach might be good, so you dont miss the important threads if ignoring a list for a week/month/forever:

  http://i.imgur.com/L9Spu.png  zoomed-out


theres a generic (Exhibit - inspired) facet-top which just counts the most occurences of p/o:

http://m/ma/foaf-protocols/*/*?view=top&face&a=sioc:from

668	
198	henry.story@bblfish.net
111	home_pw@msn.com
71	melvincarvalho@gmail.com
48	kidehen@openlinksw.com
32	Bruno.Harbulot@manchester.ac.uk

a custom domain-specific aggregation

http://m/ma/foaf-protocols/*/*?view=topthreads

39	[foaf-protocols] FOAF+SSL and root certificates
35	[foaf-protocols] FOAF+ssl, access control.
29	[foaf-protocols] rsa / cert Ontology questions.
24	[foaf-protocols] foaf+ssl working on Internet Explorer
22	[foaf-protocols] Lack of browser support

suporting these kind of ad-hoc URI-specified workflows and making them fast drove the refactoring of http://gitorious.org/element 
 and thats proably why it uses JSON almost everywhere, and the innate ruby Hash implementation rather than a RDF library - URIs are identifiers + conneg works anyways


a thread-reconstructor finds entire thread given a message

 model={}
 Fn 'data/thread', E('4B83F2FC.8010608@webr3.org'),nil,model
 model.keys =>
 ["4B83F2FC.8010608@webr3.org", "D2E1FD7A-8F66-4780-AC2A-BAEE6C973BA0@bblfish.net", "4B83FC31.2080005@manchester.ac.uk", "4B856FD5.5050000@webr3.org", "4B83FF45.3080908@webr3.org", "4B8564ED.4090005@manchester.ac.uk", "4B83FFA8.4040802@webr3.org", "4B854702.1040602@manchester.ac.uk", "4B840CC8.3010004@manchester.ac.uk", "8FD629D3-82E1-4663-9A5D-E608195593B0@bblfish.net", "9178f78c1002240553j73b1b3c3ifb30215585534652@mail.gmail.com", "9B586E6A-D821-404F-92A1-FB2635B7153F@bblfish.net", "8847320C-490A-4D59-8A16-D09186C35522@bblfish.net", "4B856F01.4020300@webr3.org", "AE226FB5-9CE1-400B-9715-8D86773E3DAE@bblfish.net", "03EA7BF8-A0F7-4324-916F-0FC3B0CF6792@bblfish.net", "4B8561E1.7040802@webr3.org", "FA02959F-24DB-4941-B035-6C12751D061D@bblfish.net", "4B856319.5030302@webr3.org", "A699539D-7871-4858-9B61-5E598E2D7487@bblfish.net", "4B8568A6.8070608@webr3.org", "BDEED524-7979-4736-BDB2-149F6F633A41@bblfish.net", "4B8596CE.5090706@webr3.org", "4B857BB3.2030405@webr3.org", "f8b444c11002270111n21d3b907n11ea00fed7bee453@mail.gmail.com", "F3786CFE-12F0-4C64-B6A0-C8419E3E312C@bblfish.net", "BLU139-DS151B2AB4FBAF8E9E383C2292400@phx.gbl", "39B67967-962E-4320-94E8-D1375024C568@bblfish.net", "4B85A24A.50007@webr3.org", "4B856A5E.1020207@manchester.ac.uk"]

which can be combined w/ a path expression and conneg or customized views:

 links -dump 'http://m/-/4B83F2FC.8010608@webr3.org?q=thread&p=sioc:from&view=table'
                                                            http://rdfs.org/sioc/ns#from    
4B83F2FC.8010608@webr3.org                                  nathan@webr3.org                
D2E1FD7A-8F66-4780-AC2A-BAEE6C973BA0@bblfish.net            henry.story@bblfish.net         
4B83FC31.2080005@manchester.ac.uk                           Bruno.Harbulot@manchester.ac.uk 
9178f78c1002240553j73b1b3c3ifb30215585534652@mail.gmail.com melvincarvalho@gmail.com        
f8b444c11002270111n21d3b907n11ea00fed7bee453@mail.gmail.com akkiehossain@googlemail.com     
BLU139-DS151B2AB4FBAF8E9E383C2292400@phx.gbl                home_pw@msn.com                 

anyways..

Received on Tuesday, 6 April 2010 22:41:06 UTC