Everyone is talking about what a bunch of evil privacy destroying, soul sucking jerks Facebook is. There's even a quit Facebook day. And I agree. I like my privacy and I would love something like Diaspora (despite their curse) to move the social graph out of one corporation's greedy hands.
What seems to have been overlooked by the tech media however is what an absolutely fantasmagastical (I'm really that excited) thing Facebook did to push us all towards that wondrous pie in the sky of Web 3.0.
With OpenGraph, a web-standard that Facebook released to help it pull information from web pages people "Like", we now have metadata. Real, usable, indexable, metadata. Facebook is throwing it's full weight behind OpenGraph by making it invaluable for maximizing the usefulness of it's new unit of social currency, the Facebook "Like". If you haven't peeked at the Open Graph Protocol, take a quick look.
Yes, it doesn't do everything, but notice how simple it is. There isn't even a mention of the words "semantic" or "triples". It's something that's very much targeted at being useful and usable. It's something you could explain to your boss and they'd understand it.
Facebook released open graph at F8 in 2010. It's already showing up all over the Web because of the market weight of Facebook (I noticed it in the HTML of GoodReads pages.) While OpenGraph is based on RDFa, OpenGraph and RDF are very different beasts. RDF has been around for most of the decade but hasn't gained much traction on the commercial Web. If you want to understand why, try to read the primer or even the primer primer (The fact that someone even felt compelled to write a primer primer speaks to the issue - RDF is complicated to understand and implement)
So here's the awesome part: everyone's implementing OpenGraph for Facebook, but us Web Developers can hitch our metaphorical Poon to the back Facebook's speeding truck and get to the same destination: the semantic web.
There's already libraries in a number of languages to support open graph, and using them (at least the Ruby one) is dead simple.
movie = OpenGraph.fetch('http://www.rottentomatoes.com/m/1217700-kick_ass/')
movie.title # => 'Kick-Ass'
movie.movie? # => true
movie.image # => 'http://images.rottentomatoes.com/images/movie/custom/00/1217700.jpg'
[To put a slight damper on Unicorns and Rainbows tone of this post, the opengraph Gem didn't want to pull meta-data from the GoodRead's site]
Contrast this with an actual API - even a simple REST one like GoodRead's API: you need to get an API key, limit yourself to 1 request per second, and handle the data that comes back on a per website basis.
Now something like oEmbed is obviously a competitor to OpenGraph, however oEmbed is actually a lot more work for a website to implement than OpenGraph and there's not the same motivation - Facebook "Likes" - driving adoption. We use a (great) third party provider called Embed.ly to support a lot of extra sites that haven't implemented oEmbed, but truthfully, it would be nice to be able to drop the middle man and pull meta-data straight from the source.
OpenGraph is pretty new, and given Facebook's willingness to change and tweek constantly, I'm sure there's more usefull stuff that will be added to the protocol soon. So even if the semantic Web isn't here, we're at least pointed in the right direction. OpenGraph is the classic case of the Bazaar functioning better than the Cathedral. I'll take a quick and dirty approach that's actually implemented by millions of sites than a "perfect" idea that no one can understand, and that's exactly what OpenGraph is starting to get us. It may be Web 2.5 - but it's here today.
....and follow @cykod on twitter