Wednesday Dec 13, 2006

Microsoft does RDF

In a very interesting slideshow "The Dark Side of the Semantic Web" Jim Hendler points to Microsoft's "Connected Services Framework 3.0 Profile Manager" documentation.

There are two main benefits offered by a profile store that has been created by using RDF. The first is that RDF enables you to store data in a flexible schema so you can store additional types of information that you might have been unaware of when you originally designed the schema. The second is that it helps you to create Web-like relationships between data, which is not easily done in a typical relational database.

A little further

You must use the the Simple Protocol and RDF Query Language (SPARQL) to read profile information from Profile Manager. SPARQL is an industry standard. For more information, see What is SPARQL?

Via Jim Hendler's blog. See also Danny's post.

Tuesday Dec 05, 2006

An Involuntary Evangelist

Yesterday I went to the first Global Network of Technology Evangelists (GNoTE) conference, which took place in Santa Clara, California. I have been wondering what technology evangelism was for some time. It sounded a bit like what I have been doing, but I was not quite sure. After listening to Guy Kawasaki, the first to have coined the term, and Matt Thompson, things are much clearer: I am an inadvertent tech evangelist.

Guy Kawasaki, who is not only an excellent blogger (that is how I found out about the conference), but also a great speaker, gave a very entertaining presentation on the history of tech evangelism, starting with his work at Apple. He underscored the importance of working for a company you like (Sun, yes!), on an excellent product (the Semantic Web, yes!), and being passionate about the technology (well, as much as we Brits can - luckily I do have some French and Austrian in me). The trick then is finding ways to make the technology relate to people (foaf and blogging, so I am on a good track, but I need to make it more directly relevant - quite difficult when one is dealing with something that technical), have resilience in the face of extreme skepticism (I get a lot of that!), and not trying to convert those that have espoused a different religion (oops: people on the atom working group?) or who have lost faith (hmm, like trying to reconvert Tim Bray?) - a very common mistake apparently.

So I am not alone. There were over a hundred other attendees in the room, listening to speakers and panelist from Microsoft, Yahoo, Amazon, SixApart, Sun and a number of smaller start ups. Microsoft seems to have an Evangelist career path, with hundreds of people in that role. I learned that we at Sun have a whole organization dedicated to evangelism, run by Matt Thompson, who among many other cool things have been developing the JEDI open source educational program, which got Sacha Chua really excited. You can have a budget for doing what I have been doing? Wow! [Bernard - we need to talk...]

But even better than the talks were the networking opportunities. I met nearly everyone I had wanted to meet at the conference and more.
Fellow Sun evangelist Tim Boudreau, whom I had met a year ago in Prague was standing next to me as the conference started. We are both homeless, we discovered - why bother having a house when you are always on the road! (Now this is serious evangelism - is that why I have been reading the old and new testament, and am now traveling with the Gnostic Bible??)
I met Jeff Barr and Vinesh Varia from Amazon Web Services, whom I was able to give a quick demonstration of a simple Semantic Web Service. Nothing beats a quick hands on demo: I was asked to give this presentation again by a small group of five interested evangelists, before we all left to the restaurant. Explaining the Semantic Web in 10 minutes: Now that's evangelism!

Monday Nov 06, 2006

How to create an RSS1.0 feed in Roller 3.1

Of the many feed formats, only two have long term viability: Atom and RSS 1.0. RSS1.0 is an rdf crystallization, which means that it is easy to parse using simple xml DOM and xslt tools and also very easy to extend. It is easy to extend because it is RDF, and so the interpretation of the extensions are given automatically by the rdf semantics. In the Atom world, understanding extensions always requires one to find the particular RFC for the extension (if there is one) and read it carefully. Machines cannot do very much with atom extensions, other than ignore them. RSS1.0 extensions on the other hand can be processed and partially understood by RDF tools, even if they never heard about them before.

Roller automatically creates Atom feeds now (I added mine a while back). Here is how to create an RSS1.0 feed in the latest version of Roller (which now supports tagging).

  1. Log in to your roller account
  2. Click on the Preferences Tab
  3. Click on Templates
  4. In the "Add a new template" entry box add a name such as rss10.xml (make sure your file name ends in xml, and click add.
  5. In the form add the following template
    <?xml version="1.0" encoding='utf-8'?>
    <rdf:RDF xmlns="http://purl.org/rss/1.0/"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:dc="http://purl.org/dc/elements/1.1/"
             xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
             xmlns:admin="http://webns.net/mvcb/"
             xmlns:content="http://purl.org/rss/1.0/modules/content/">
     #set($blg = $model.weblog)
     #set($items = $model.weblog.getRecentWeblogEntries("SemWeb", 25))
     <channel rdf:about="$url.home">
       <title>$utils.escapeXML($blg.name)</title>
       <link>$url.home</link>
       <description>$utils.escapeXML($blg.description)</description>        
       <dc:date>$utils.formatIso8601Date($blg.lastModified)</dc:date>
       <admin:generatorAgent rdf:resource="http://rollerweblogger.org/"/>
       <items>
          <rdf:Seq>
          #foreach($item in $items)
            <rdf:li rdf:resource="$item.permalink"/>
          #end
          </rdf:Seq>
       </items>
     </channel>
    
    #foreach($item in $items)
      <item rdf:about="$item.permalink">
         <title>$utils.removeHTML($item.title)</title>
         <link>$item.permalink</link>
         <dc:date>$utils.formatIso8601Date($item.updateTime)</dc:date>
         <dc:creator>$item.creator.fullName</dc:creator>
         <foaf:maker xmlns:foaf="http://xmlns.com/foaf/0.1/">
            <foaf:Person rdf:about="http://bblfish.net/people/henry/card#me">
              <foaf:name>$item.creator.fullName</foaf:name>
            </foaf:Person>
         </foaf:maker>
         #foreach ($cat in $item.categories)
         <dc:subject>$cat.name</dc:subject>
         #end
         #foreach ($tag in $item.tags)
         <dc:subject>$tag.name</dc:subject>     
         #end
         #if( $utils.isNotEmpty($item.summary) )
         <description>$utils.escapeXML($item.transformedSummary)</description>
         #end
         #if( $utils.isNotEmpty($item.text) )
         <content:encoded>$utils.escapeXML($item.transformedText)</content:encoded>
         #end
      </item>
    #end
    </rdf:RDF>
    
  6. adapt the above to your needs.
    • The above feed only selects entries from the "SemWeb" category. If you would like to have all entries appear replace the SemWeb above with nill
    • http://bblfish.net/people/henry/card#me is my web 2.0 name. If you have your own, make sure to replace mine with yours, otherwise remove the rdf:about="..." attribute from the template.
  7. Your rss feed is now available at http://blogs.sun.com/${blogname}/page/rss10.xml. Mine is available http://blogs.sun.com/bblfish/page/rss10.xml

About

bblfish

Search

Archives
« April 2014
MonTueWedThuFriSatSun
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    
       
Today