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:
The "type" describes the type of tipjar. For example, an Amazon wishlist might be of type wishlist, while a Paypal email address might be dealt with by providiing a link directly to the paypal page allowing donations. This is a clue to the program interpreting this information as to what type of information is being dealt with.
- tipjar:payto - a foaf:Agent to whom the tipjar points. This could be an organization: foaf:Group, for example, or a foaf:Person with enough information to make it a unique identifier.
- tipjar:info - a literal describing the tipjar. This might describe what the tipjar will be used for: for example, I could state that donations made to me will only be used for the proess of improving the quality of metadata I create.
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 <?xsl select tipjar:type?> to <?xsl select tipjar:payto ?> for <?xsl select tipjar:info ?>" 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.
In the end, it probably won't make any difference. Tools may not support it, people probably wouldn't use it even if it was possible. However, as always, I felt the need to play with a new geek toy, so these are the ideas I have. Some examples of this are available, although I have not yet made a full schema for the tipjar: references. Hopefully, I'll work on that soon. Ridicule me for participating in a useless technology if you must, but I like toys, and this seems to me like it could become a shiny toy. Who knows, maybe someone will want to give me money for it. ;)