Tom Creighton has been a software engineer with the ADL Technical Team since 2004. During that time, he has worked on projects such as developing and maintaining the SCORM Test Suite and Sample RTE, supporting the ADL Help Desk, and serving as a technical reviewer of the SCORM Document Suite. Recently, Tom has been involved in researching ways to support a new learning platform, including building prototypes and reviewing new specifications and standards.
As a contractor with Katmai, Tom provides support to the Advanced Distributed Learning (ADL) Initiative. The views expressed are those of the author and do not necessarily represent the views or policies of ADL.
If you’ve used the Internet in the past year or so you’ve probably noticed the buttons on web pages that allow you to post to Facebook or Google Plus or some other social media site. It is such a simple process: click the button, sign in, add a comment, and you get a post on your profile about that article or video. This simple feature of social sites piques my interest both as a Software Engineer and as a member of ADL.
As a Software Engineer, I am intrigued by how this works. I get that the process authenticates me and sends info about me and some action to the site to record it. I mean, during the authentication process it figures out who I am. And the button itself is going to say that I “liked” something or “read” something or “snowshoed” somewhere. But how did it know what “something” (object) I was talking about? Is every page that has a fancy button on it really registered with the social site?
Looking into it on Facebook’s developer pages, you’ll find the Core Concept page on Open Graph. It’s that page that explains there is a specification called Open Graph Protocol, which describes how to include information about an object (ex. video, article, etc.) represented by a page. So, the Open Graph protocol gives people a way to describe their web pages as objects.
Using Open Graph in your web pages is simple. You include in the head section of the HTML document the type of the object, the URL to the object, the title and an image. When a web page using Open Graph is then shared on a social site, the Open Graph information dictates the title, link, description and URL that are displayed in the status update. After those four pieces, you may add additional information to give a more in depth description of the object. For instance, Rotten Tomatoes has a page on The Hunger Games. If you were to look at the HTML head section of this page, you would see Open Graph elements like title, URL and type, but you would also see various other bits of information like video release date, director, and actors.
Open Graph elements from Rotten Tomatoes:
<head prefix="og: http://ogp.me/ns# flixstertomatoes: http://ogp.me/ns/apps/flixstertomatoes#"> <meta property="og:title" content="The Hunger Games" /> <meta property="og:type" content="video.movie" /> <meta property="og:image" content="http://content7.flixster.com/movie/11/16/38/11163821_pro.jpg" /> <meta property="og:url" content="http://www.rottentomatoes.com/m/the_hunger_games/" /> ...
As a member of ADL this is interesting because it is a way to embed metadata within the object. Not only that, but since Facebook, Google and other social sites and search engines know how to read this Open Graph metadata, these sites can search them and present these pages in a more meaningful way. There are even validators, like Facebook’s Object Debugger and Google’s Webmaster Tools, to verify that your metadata is accurate. And Facebook, through its developer app interface, will generate default metadata you can use in your app. But just providing another way to search for stuff isn’t all that Open Graph does for us.
If a URL resolves to an object, can I use this protocol to describe my objects in the new Tin Can API? In other words, can I have an app that sends a statement of “I did this” where “this” is now a URL to the object? In the link above, I used a URL to Rotten Tomatoes’ page on The Hunger Games. Now if the LRS and Tin Can API understand Open Graph objects, I could make an assertion that “I watched The Hunger Games” or “I read The Hunger Games” (using Amazon). Of course, I wouldn’t have to use Rotten Tomatoes or Amazon to describe the object. The URLs could point to a course description from a vendor, a game leader board, or anything else as long as it is the page served when I resolve that URL.
Another interesting thought about having the Tin Can API understand Open Graph is that I could spend a bit of time representing real life objects with HTML pages and then report about those to the LRS. So by using something like a QR code or an informational webpage about a real world item, I could report about things I did. For example, I read an article recently that the Louvre and Nintendo have teamed up to offer a virtual guide of the Louvre exhibits on the Nintendo 3DS. If they would provide pages on each of their exhibits, one could conceivably scan a code, see the page about the exhibit and then report to their LRS that they experienced the exhibit. Or if I attend a conference and they have URLs to sessions, I could indicate that I attended a session or a conference.
One final thought about supporting Open Graph is that by supporting protocols used by popular and influential technology companies, we can utilize the tools and features they provide. If I write articles and use Open Graph, search engines will give a more tailored result view for my article in the list of search results. Someone may choose my article over another because of the four tags I added to my HTML page. Also, using Open Graph puts my site very close to being a Facebook app, allowing me to connect to millions that are already using Facebook. Finally using the same format means that I could potentially take information in my Facebook timeline or Google + profile, and push it to my LRS or allow my LRS to pull information from those sites. I could get credit for pages I liked or +1’d.
For more information related to this see,