David Wood wrote:
On Jan 19, 2011, at 10:59, Nathan wrote:
ps: as an illustration of how engrained URI normalization is, I've capitalized
the domain names in the to: and cc: fields, I do hope the mail still come
through, and hope that you'll accept this email as being sent to you. Hopefully
we'll also find this mail in the archives shortly at
htTp://lists.W3.org/Archives/Public/public-lod/2011Jan/ - Personally I'd hope
that any statements made using these URIs (asserted by man or machine) would
remain valid regardless of the (incorrect?-)casing.
Heh. OK, I'll bite. Domain names in email addressing are defined in IETF RFC 2822
(and its predecessor RFC 822), which defers the interpretation to RFC 1035
("Domain names - implementation and specification). RFC 1035 section 2.3.3
states that domain names in DNS, and therefore in (E)SMTP, are to be compared in a
case-insensitive manner.
As far as I know, the W3C specs do not so refer to RFC 1035.
And I'll bite in the other direction, why not treat URIs as URIs? why go
against both the RDF Specification [1] and the URI specification when
they say /not/ to encode permitted US-ASCII characters (like ~ %7E)? why
force case-sensitive matching on the scheme and domain on URIs matching
the generic syntax when the specs say must be compared case
insensitively? and so on and so forth.
I have to be honest, I can't see what good this is doing anybody, in
fact it's the complete opposite scenario, where data is being junked and
scrapped because we are ignoring the specifications which are designed
to enable interoperability and limit unexpected behaviour.
I'm currently preparing a list of errors I'm finding in RDF, RDFa and
linked data tooling to do with this, and I have to admit even I'm
surprised at the sheer number of tools which are affected.
Additionally there's a very nasty, and common, use case which I can't
test fully, so would appreciate people taking the time to check their
own libraries/clients, as follows:
If you find some data with the following setup (example):
@base <htTp://EXAMPLE.org/foo/bar> .
<#t> x:rel <../baz> .
and then you "follow your nose" to <htTp://EXAMPLE.org/baz>, will you
find any triples about it? (problem 1) and if there's no base on the
second resource, and it uses relative URIs, then the base you'll be
using is <htTp://EXAMPLE.org/baz>, and thus, you'll effectively create a
new set of statements which the author never wrote, or intended (problem 2).
In other words, in this scenario, no matter what you do you're either
going to get no data (even though it's there) or get a set of statements
which were never said by the author (because the casing is different).
Further, essentially all RDFa ever encountered by a browser has the
casing on all URIs in href and src, and all these which are resolved,
automatically normalized - so even if you set the base to
<htTp://EXAMPLE.org/> or use it in a URI, browser tools, extensions, and
js based libraries will only ever see the normalized URIs (and thus be
incompatible with the rest of the RDF world).
I'll continue on getting the specific examples for current RDF tooling
and resources and get it on the wiki, but I'll say now that almost every
tool I've encountered so far "does it wrong" in inconsistent
non-compatible ways.
Finally, I'll ask again, if anybody has any use case which benefits from
<htTp://EXAMPLE.org/%7efoo> and <http://example.org/~foo> being classed
as different RDF URIs, I'd love to hear it.
[1] """The encoding consists of: ... 2. %-escaping octets that do not
correspond to permitted US-ASCII characters."""
- http://www.w3.org/TR/rdf-concepts/#section-Graph-URIref
Best,
Nathan