RDF in Fifty Words or Less

  • Revision slug: RDF_in_Fifty_Words_or_Less
  • Revision title: RDF in Fifty Words or Less
  • Revision id: 167016
  • Created:
  • Creator: Sheppy
  • Is current revision? No
  • Comment nowiki some stuff

Revision Content

Okay, so maybe this is a bit more than fifty words, but the key points are pretty simple (and put into bold text for you manager-types who just want to get straight to the point). The Resource Description Framework, or "RDF", is really two things.

First, RDF is a graph-based model for describing Internet resources (like web pages and email messages), and how these resources relate to one another.

But what does that mean, really? To a Mozilla developer, it means that the RDF data model (the "graph") can be used as a mechanism for integrating and organizing Internet resources.

Let's look at an example: bookmarks. Right now, most web browsers let you organize your bookmarks hierarchically into folders. Each bookmark is a pointer to a web page called a URI (Uniform Resource Identifier).

But a web page is just one kind of Internet resource. There are tons of others, including email messages, UseNet news articles (or entire UseNet news groups), and search results from your favorite web crawler, just to name a few. And fundamentally, there's no reason that you shouldn't be able to treat these as "bookmarks" as well, grouping them together into folders as you please, or maybe even creating "smart" folders that, when you open them, dynamically generate their contents by running common search that you define.

And a "bookmark" could really have arbitrary properties associated with it: you might want to invent your own "classification" scheme for a bookmark a la Macintosh's "hot", "warm", "cool" color coding. Or you might want to relate a bookmark to another bookmark, or keep it in multiple "folders" at once.

The RDF graph provides a perfect data model upon which to build a "universal" bookmarking service as described above: the graph can contain pointers to arbitrary resources and can group them in just about any way that you can imagine.

But wait, there's more...

Second, RDF is a serialization syntax. This syntax allows the graph-like model to be communicated between "agents".

Okay, what the heck does that mean? Fundamentally, it means that parts of the RDF data model can be communicated across network boundaries, and the contents of the graph can dynamically change as information arrives from a remote service.

Let's go back to our bookmark example. Say that one of my bookmark "folders" is really a pointer to my email inbox: when I open that folder, voilà! All the messages that I've received over night appear.

But how did that happen? The inbox "folder" was really just a pointer to an Internet resource that contains more RDF that extends the graph. That "Internet resource" was a URI that pointed to a CGI script (say, <tt>http://www.mozilla.org/smart-mail/get-mail.cgi?user=waterson&folder=inbox</tt>). The CGI script actually generates serialized RDF, which is basically just a way of formatting a graph into XML:

 <rdf:RDF
     xmlns:rdf="http://www.w3.org/TR/WD-rdf-syntax#"
     xmlns:sm="http://www.mozilla.org/smart-mail/schema#">
   <rdf:Description
     about="http://www.mozilla.org/smart-mail/get-mail.cgi?user=waterson&folder=inbox">
     <sm:message id="4025293">
        <sm:recipient>
          Chris Waterson "waterson@netscape.com"
        </sm:recipient>
        <sm:sender>
          Aunt Helga "helga@netcenter.net"
        </sm:sender>
        <sm:received-by>x-wing.mcom.com</sm:received-by>
        <sm:subject>Great recipe for Yam Soup!</sm:subject>
        <sm:body>
          http://www.mozilla.org/smart-mail/get-body.cgi?id=4025293
        </sm:body>
     </sm:message>
     <sm:message id="4025294">
        <sm:recipient>
          Chris Waterson "waterson@netscape.com"
        </sm:recipient>
        <sm:sender>
          Sarah Waterson "waterson.2@postbox.acs.ohio-state.edu"
        </sm:sender>
        <sm:received-by>x-wing.mcom.com</sm:received-by>
        <sm:subject>We won our ultimate game</sm:subject>
        <sm:body>
          http://www.mozilla.org/smart-mail/get-body.cgi?id=4025294
        </sm:body>
     </sm:message>
   </rdf:Description>
 </rdf:RDF>

Upon receipt of the above monstrosity, the RDF engine folds the RDF into the graph at the appropriate place, and the tree control that actually implements the UI to the bookmarks is notified that it should begin drawing some icons for the latest message about Yam Soup from Aunt Helga.

This is exactly how SmartMail works.

Contact: Chris Waterson (waterson@netscape.com)

Original Document Information

Interwiki Language Links

{{ wiki.languages( { "it": "it/RDF_in_cinquanta_parole_o_meno", "ja": "ja/RDF_in_Fifty_Words_or_Less", "ko": "ko/RDF_in_Fifty_Words_or_Less" } ) }}

Revision Source

<p>
</p><p>Okay, so maybe this is a bit more than fifty words, but the key points
are pretty simple (and put into <b>bold text</b> for you manager-types
who just want to get straight to the point). The <a href="en/RDF"><i>Resource Description Framework</i></a>, or "RDF", is really two things.
</p>
<blockquote>
<b>First, RDF is a graph-based model for describing Internet
<i>resources</i> (like web pages and email messages), and how these
resources relate to one another.</b>
</blockquote>
<p>But what does that mean, <i>really</i>? To a Mozilla developer, it
means that the RDF data model (the "graph") can be used as a mechanism
for integrating and organizing Internet resources.
</p><p>Let's look at an example: <i>bookmarks</i>. Right now, most web
browsers let you organize your bookmarks hierarchically into
<i>folders</i>. Each bookmark is a <i>pointer</i> to a web page
called a <b>URI</b> (<b>U</b>niform <b>R</b>esource <b>I</b>dentifier).
</p><p>But a web page is just one kind of Internet resource. There are tons
of others, including email messages, UseNet news articles (or entire
UseNet news groups), and search results from your favorite web
crawler, just to name a few. And fundamentally, there's no reason that
you shouldn't be able to treat these as "bookmarks" as well, grouping
them together into folders as you please, or maybe even creating
"smart" folders that, when you open them, dynamically generate their
contents by running common search that you define.
</p><p>And a "bookmark" could really have arbitrary properties associated
with it: you might want to invent your own "classification" scheme for
a bookmark <i>a la</i> Macintosh's "hot", "warm", "cool" color
coding. Or you might want to relate a bookmark to another bookmark,
or keep it in multiple "folders" at once.
</p><p>The RDF graph provides a perfect data model upon which to build a
"universal" bookmarking service as described above: the graph can
contain pointers to arbitrary resources and can group them in just
about any way that you can imagine.
</p><p>But wait, there's more...
</p>
<blockquote>
<b>Second, RDF is a serialization syntax. This syntax allows the
graph-like model to be communicated between "agents".</b>
</blockquote>
<p>Okay, what the heck does <i>that</i> mean? Fundamentally, it means
that parts of the RDF data model can be communicated across network
boundaries, and the contents of the graph can dynamically change as
information arrives from a remote service.
</p><p>Let's go back to our bookmark example. Say that one of my bookmark
"folders" is really a pointer to my email inbox: when I open that
folder, voilà! All the messages that I've received over night
appear.
</p><p>But how did that happen? The inbox "folder" was really just a pointer
to an Internet resource that contains more RDF that extends the
graph. That "Internet resource" was a URI that pointed to a CGI script
(say, <tt><span class="plain">http://www.mozilla.org/smart-mail/get-mail.cgi?user=waterson&amp;folder=inbox</span></tt>). The CGI script actually generates <i>serialized RDF</i>, which is
basically just a way of formatting a graph into <a href="en/XML">XML</a>:
</p>
<pre> &lt;rdf:RDF
     xmlns:rdf="http://www.w3.org/TR/WD-rdf-syntax#"
     xmlns:sm="http://www.mozilla.org/smart-mail/schema#"&gt;
   &lt;rdf:Description
     about="http://www.mozilla.org/smart-mail/get-mail.cgi?user=waterson&amp;folder=inbox"&gt;
     &lt;sm:message id="4025293"&gt;
        &lt;sm:recipient&gt;
          Chris Waterson "waterson@netscape.com"
        &lt;/sm:recipient&gt;
        &lt;sm:sender&gt;
          Aunt Helga "helga@netcenter.net"
        &lt;/sm:sender&gt;
        &lt;sm:received-by&gt;x-wing.mcom.com&lt;/sm:received-by&gt;
        &lt;sm:subject&gt;Great recipe for Yam Soup!&lt;/sm:subject&gt;
        &lt;sm:body&gt;
          http://www.mozilla.org/smart-mail/get-body.cgi?id=4025293
        &lt;/sm:body&gt;
     &lt;/sm:message&gt;
     &lt;sm:message id="4025294"&gt;
        &lt;sm:recipient&gt;
          Chris Waterson "waterson@netscape.com"
        &lt;/sm:recipient&gt;
        &lt;sm:sender&gt;
          Sarah Waterson "waterson.2@postbox.acs.ohio-state.edu"
        &lt;/sm:sender&gt;
        &lt;sm:received-by&gt;x-wing.mcom.com&lt;/sm:received-by&gt;
        &lt;sm:subject&gt;We won our ultimate game&lt;/sm:subject&gt;
        &lt;sm:body&gt;
          http://www.mozilla.org/smart-mail/get-body.cgi?id=4025294
        &lt;/sm:body&gt;
     &lt;/sm:message&gt;
   &lt;/rdf:Description&gt;
 &lt;/rdf:RDF&gt;
</pre>
<p>Upon receipt of the above monstrosity, the RDF engine folds the RDF
into the graph at the appropriate place, and the tree control that
actually implements the UI to the bookmarks is notified that it should
begin drawing some icons for the latest message about Yam Soup from
Aunt Helga.
</p><p>This is <i>exactly</i> how <a class="external" href="http://www.mozilla.org/mailnews/">SmartMail</a> works.
</p><p>Contact:
<a class="external" href="mailto:waterson@netscape.com">Chris Waterson</a> (waterson@netscape.com)
</p>
<div class="originaldocinfo">
<h2 name="Original_Document_Information">Original Document Information</h2>
<ul><li> Author(s): <a class="external" href="mailto:waterson@netscape.com">Chris Waterson</a>
</li><li> Last Updated Date: November 19, 1998
</li><li> Copyright Information: Copyright (C) <a class="external" href="mailto:waterson@netscape.com">Chris Waterson</a>
</li></ul>
</div>
<p><span class="comment">Interwiki Language Links</span>
</p>{{ wiki.languages( { "it": "it/RDF_in_cinquanta_parole_o_meno", "ja": "ja/RDF_in_Fifty_Words_or_Less", "ko": "ko/RDF_in_Fifty_Words_or_Less" } ) }}
Revert to this revision