Open Graph namespace declaration: HTML with XMLNS or head prefix?

I tried following @Paul Tarjan's answer of using prefix in the head. However I got some Internet Explorer 8 issue. So in the end I still use the xmlns way for fb namespace:

<!DOCTYPE HTML>
<html xmlns:fb="http://ogp.me/ns/fb#">
  <head prefix="og: http://ogp.me/ns# object: http://ogp.me/ns/object#">

They are all equivalent and will all work.

Use prefix as it is the new recommended way and is fewer characters.

I'll get all our documentation updated to prefix.


<html xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns# fb:
http://www.facebook.com/2008/fbml"> <head>

There is the best way to validate.


It doesn't even matter. RDFa Core Initial Context recognizes og as a widely used vocabulary prefix:

RDFa users can use these prefixes without having the obligation of defining the prefixes in the HTML code. The same list of prefixes have also been defined for JSON-LD as a JSON-LD Context at the URI http://www.w3.org/2013/json-ld-context/rdfa11; JSON-LD users can use the @context key with that URI as a shorthand to use the same prefixes.

Emphasis added for clarity.

Therefore, you do not need to add a namespace to your HTML documents. More information here.