Re: ISSUE-55: Re-enable @profile in HTML5 (draft 1)

Henri Sivonen wrote:
> What does RDFa use @version for? What happens in XHTML if there is no
> @version?

RDFa was designed to use @version and @profile to trigger processing
behavior. Right now, there is only one processing behavior across all
languages, so it's unnecessary, but this is probably going to change in
the near future.

Philip Taylor wrote:
> So less than 2% of pages that apparently use RDFa use @version.
> This has not yet triggered the end of the world, so presumably RDFa in
> practice works fine without @version.

Yes, RDFa does and should always work just fine without @version,
@profile or rel="profile". However, the purpose of @version isn't to
"make RDFa work", it's to ensure that the proper processing behavior is
applied to an author's page. More on this below...

Henri Sivonen wrote:
> If things go wrong and in the future there is a need to signal
> versioning, that bridge can be crossed then and versioning syntax
> added.

Then let me demonstrate that the problem is more concrete and visible
than some on here seem to think using one particular example:

The RDFa Task Force is seriously considering the following change based
on in-the-wild authoring practices. Currently, the following markup:

<h2 property="dc:title"><em>Lord of the Flies</em></h2>

outputs the following triple:

<>
   <http://purl.org/dc/elements/1.1/title>
      "<em xmlns=\"http://www.w3.org/1999/xhtml\">Lord of the
Flies</em>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> .

This coupled with all of the nuances associated with generating
XMLLiterals make this a problematic default behavior (well outside the
needs of novice authors). Basically, if there is a child element for an
object literal, the literal is assigned a datatype of XML Literal and
includes all HTML markup.

The default behavior should probably be this:

<>
   <http://purl.org/dc/elements/1.1/title>
      "Lord of the Flies".

So, when authors don't specify a datatype of "rdf:XMLLiteral", the
markup syntax isn't preserved and a plain literal is generated, instead.

I think we'd like to make this change in RDFa 1.1 because the usage data
shows that the second is the more desired outcome. The problem is that
we need a mechanism that would protect authors that want to keep the
RDFa 1.0 spec behavior. We don't want to require authors that have
already marked up XMLLiterals using the RDFa 1.0 syntax to have to go
back and change their documents, but we do want to provide this better
behavior moving forward. There is no way to cause this switch to occur
unless there is some mechanism that is capable of triggering the new
behavior. Currently, that trigger is either @version or @profile in
XHTML+RDFa.

Jonas Sicking wrote:
> However the version *identifier* seems like something
> you can wait with until version 2. Simply let the absence of a version
> identifier identify that version 1 is used.

But that's completely counter to what HTML5 is doing, isn't it? It's not
what most of these languages do. The HTML5 spec assumes that, barring
any version specifiers, that the author is using the latest version of
HTML (version 5) or XHTML (version 5). I believe the same is true for
SVG and I know the same is true for RDFa. Without a version specifier,
the parser assumes the latest version of the language.

To summarize:

* We'd like to change the default behavior of RDFa regarding XMLLiterals
  in RDFa 1.1 - we can't do this unless there is @profile,
  rel="profile", @version, or some other extended processing behavior
  signaling mechanism.
* We'd like to ensure that web languages have the capability to make
  incompatible changes to match authoring behavior or fix past
  language design mistakes.
* We'd like to do this in a way that is backwards and forwards
  compatible and unify that mechanism for SVG, MathML, HTML, XHTML and
  RDFa.
* We'd like to protect authors that are currently implementing RDFa 1.0.
  We'd like to give them the choice on when to switch their triples to
  RDFa 1.1... if ever.
* We'd like to be lenient by making @version and @profile a SHOULD and
  not a MUST. By not specifying either, you are signalling to the user
  agent to use the most recent version of any features found in the
  document.

-- manu

-- 
Manu Sporny (skype: msporny, twitter: manusporny)
President/CEO - Digital Bazaar, Inc.
blog: The Pirate Bay and Building an Equitable Culture
http://blog.digitalbazaar.com/2009/08/30/equitable-culture/

Received on Monday, 28 September 2009 22:03:33 UTC