SHOULD vs MUST ignore @version

Essentially what we want parsers to do is ignore @version -- i.e.
always use the latest version of RDFa. 

Firstly, let's check that we've left enough space for future
innovation. I think we have. If a future version of RDFa, say 2.0, is
so incompatible with RDFa 1.x that version detection is needed, they
can say that authors MUST include a particular profile attribute on
their root element, say:

	profile="urn:w3c:rdfa:2.0"

As it's deliberately unresolvable, an RDFa 1.1 processor will skip the
root element. This effectively allows future RDFa Working Groups to
re-establish versioning, so I think we have that covered.

So the versioning discussion only needs to apply to RDFa 1.0 and 1.1.

Now, let's assume that somebody *wants* to do version detection,
despite us saying it's a bad idea. Their code might be something like
this:

	function rdfa11_processor ($doc) {
		if (check_version($doc)==1.0) {
			return rdfa10_parse($doc);
		} else {
			return rdfa11_parse($doc);
		}
	}

If we prohibit this and say it's not conforming, they just refactor
their code:

	function html_processor ($doc) {
		if (check_version($doc)==1.0) {
			return rdfa10_processor($doc);
		} else {
			return rdfa11_processor($doc);
		}
	}

Now they're still doing version detection, but their rdfa11_processor
function is technically conforming, because the version detection
occurs externally to it.

So my argument is that we make ignoring @version a SHOULD rather than a
MUST, because if it's a MUST people can just work around it.

-- 
Toby A Inkster
<mailto:mail@tobyinkster.co.uk>
<http://tobyinkster.co.uk>

Received on Wednesday, 14 July 2010 12:06:32 UTC