foaf:tipjar

Once again, I find myself picking up a new technology and playing with it. The idea of a foaf:tipjar is interesting, for a number of reasons. One, it allows you to define who should retrieve payment for something. Currently, people don't really tend to get a whole lot of donations. However, if we make tools for determining how to give people money more simple, this might change. If there's a simple way - from the header of a page, for example - to extract information on who you should pay if you like the site, why, and how, suddenly people might be a bit more willing to donate.

I'm a geek. I like geek toys. To a certain extent, there are geek toys that would help me be more effective in creating a more accurate set of metadata on the web. For example, with a GPS reciever, I would be able to mark down locations of posts, photos, or other semantic events, and then use this information again later. However, if you just give me money to a foaf:tipjar account, you could be giving me money that I plan to give to terrorists in Brazil or something similar - you have no way of knowing how I plan on spending the money.

Of course, you can solve this by storing the information in a webpage, and just having your foaf:tipjar go straight to a wepage describing this information. Why require the extra step though? Wouldn't it be better to store this information semantically - so that tools can understand it, rather than requiring the human intervention?

So, while sitting around today, I decided to create a schema for that exact purpose - better defining what a foaf:tipjar is, and how it should be used. The newly created schema has a couple of properties that make using these tipjars in an application easier:

With this more complete definition of the foaf:tipjar format, we can easily create a tool which can have information on it. Whether it be XSLT - transform this information to a new format, stating "Donate via to for " or simply a quick button to click in your browser - "Donate to this person!" as a bookmarklet. It could even be used in pages like Amazon to describe how to pay for a specific item in RDF: simply add tipjar information to the header, and then let people add a bookmarklet to their browser bars which determines how to pay and where to pay to.

Some example uses of foaf:tipjar using the new schema definition:

A link to a webpage, to be used, for example, in pages I've created FOAF tools on.

foaf:tipjar
  tipjar:type webpage
  tipjar:payto
    foaf:Person
      foaf:name Christopher Schmidt
      foaf:mbox crschmid@uiuc.edu
  tipjar:info Payment for new toys to expand quality of FOAF information, such as a GPS 
              reciever for more accurate geo:data for posts. 
  rdf:resource http://crschmidt.net/tipjar

An Amazon wishlist - popular in the online publishing world, for letting other people who want to buy them gifts do so.

foaf:tipjar
  tipjar:type wishlist
  tipjar:payto
    foaf:Person
      foaf:name Christopher Schmidt
      foaf:mbox crschmid@uiuc.edu
  tipjar:info Amazon Wishlist for when you just think I should get a nice gift for some reason.
  rdf:resource http://www.amazon.com/wishlisturl.html

A tipjar pointing to the Make A Wish foundation.

foaf:tipjar
  tipjar:type webpage
  tipjar:payto
    foaf:Group
      foaf:name Make-a-Wish Foundation
      foaf:homepage http://www.wish.org
  tipjar:info Donations go to Make-a-Wish foundation, provides gifts and services to 
              disabled children with a high expectation of dying.
  rdf:resource http://www.wish.org/home/giving-shopping/giving.htm

Paypal email address.

foaf:tipjar
  tipjar:type paypal-email
  tipjar:payto
    foaf:Group
      foaf:name Plogs.net
      foaf:homepage http://www.plogs.net/
  tipjar:info Payments for accounts go through this email address
  rdf:resource mailto:plogs@paypal.com

A testing schema is available at http://crschmidt.net/foaf/tipjar/.