(Removed from public-html to avoid distracting the thread)
Jonas Sicking wrote:
One of the problems with namespacing a'la XML Namespaces is that an
objects identifing name isn't a single string, it's a tuple. Everyone
has to lug around two separate values, localName and namespaceURI.
(Many times implementations have to lug around three values,
localName, namespaceURI, and prefix).
RDF has not chosen to use this. Instead it concatenates the expanded
prefix together with the localName-esq value in order to form a single
string. Each part of an RDF triplet, subject, predicate and object, is
identified by a single string (though in the case of object there's
additionally a datatype). The triplet does not consist of 3 string
tuples.
So while RDFa keeps one (what I perceive) complexity of XML
Namespaces, the use of prefixes, it has done away with another
complexity, namely the use of string tuples as identifiers.
This seems to be mixing RDF and its serialisations a little.
To be slightly more precise: RDF (as in
http://www.w3.org/TR/rdf-concepts/) does not have any concept of
prefixes or localNames or namespaces at all, it just has single strings.
It does not do any concatenation.
Many *serialisations* of RDF, like RDF/XML and RDFa and Turtle, do have
the concept of prefixes and localNames and namespaces, and they get
mapped onto the RDF data model (usually with concatenation), at which
point they're necessarily just strings. Some other serialisations of
RDF, like NTriples and HTML5 microdata, don't have the namespace concept.
So it's RDF (not RDFa) that has done away with string tuples as
identifiers, and RDFa CURIEs (not RDF) that provide a mapping from
namespaceURI/localName tuples to RDF's strings.
Anyway, I don't think this matters much to the general point, that
(given xmlns:foo=foo and xmlns:foob=foob) the identifiers written as
"foo:bar" and "foob:ar" are distinct in XML Namespaces but equivalent in
RDFa.
--
Philip Taylor
pj...@cam.ac.uk