Re: RDF Description of HTTP headers/meta-data

Mark Nottingham wrote:
> Hey Justin,
> 
> Do you want to be able to talk about the logical components of the
> headers, rather than just as strings? If so, I'd love to chat.
> 

Yes, I want applications to be able to know things about various headers 
without having to understand the whole HTTP spec.

I also think it might be interesting to push this concept further and 
describe higher level constructs with the RDF. I'm very interested in 
showing some relationship between ETag and Content-MD5 as identifiers. 
There is also a (maybe weak) relationship between Content-MD5 and 
Content-Length in that both can be used to verify a piece of content.

The below RDF is definately on the right track.  One bit of feedback 
that I have is that while specifying type is very useful, it should also 
be possible to convert the RDF back into HTTP headers without too much 
trouble.

While I don't have time right now to really dive into this stuff, I'm 
very interested in hearing others thoughts on the topic.  Hopefully in 
the next couple of months I'll have some time to really play around with 
this.

-Justin


> 
> <> http_request:uri [ # a rdf:Bag ;
>                       :value
> "http://www.example.com/pages/dyn/1.html?username=bob@session=132323
> " ;
>                       :scheme "http" ;
>                       :host "www.example.com" ;
>                       :port "80" ;
>                       :path [ # a rdf:Seq ;
>                                :value "/pages/dyn/1.html" ;
>                                rdf:_1 "pages" ;
>                                rdf:_2 "dyn" ;
>                                rdf:_3 "1.html" ;
>                              ] ;
>                       :query [ # a rdf:Bag ;
>                                 :value "username=bob&session=132323" ;
>                                 :username "bob" ;
>                                 :session "132323" ;
>                               ] ;
>                     ] .
> <> http_request:method "GET" .
> <> http_request:pragma [ # a rdf:Bag ;
>                          :no-cache "null" ;
>                        ] .
> <> http_request:user_agent "Mozilla/1.0 (blah, blah)" .
> <> http_request:cookie [ # a rdf:Bag ;
>                          :sessionID "2323113132" ;
>                          :name "bob" ;
>                        ] .
> <> http_request:authorization [ # a rdf:Bag ;
>                                 :scheme "basic" ;
>                                 :userid "bob" ;
>                                 :password "bobspassword" ;
>                               ] .
> <> http_response:status "200" .
> <> http_response:cache_control [ # a rdf:Bag ;
>                                  :max-age "600" ;
>                                  :no-transform "1" ;
>                                ] .
> <> http_response:set_cookie [ # a rdf:Bag ;
>                               :sessionID [ # a rdf:Bag ;
>                                            :value "132134" ;
>                                            :expires "1002828066" ;
>                                            :path "/" ;
>                                            :domain "example.com" ;
>                                            :secure "0" ;
>                                          ] ;
>                               :name [ # a rdf:Bag ;
>                                       :value "bob" ;
>                                     ] ;
>                             ] .
> 
> 


-- 
Justin Chapweske, Onion Networks
http://onionnetworks.com/

Received on Thursday, 3 April 2003 23:50:26 UTC