Re: rdf-ns-prefix-confusion

>>>Uche Ogbuji said:
> I've read the most recent syntax/grammar draft.  The grammar
> specification is
> very confusing, but it does look quite thorough.

I'm sorry to hear it is confusing - what exactly did you find was the
problem?  (Maybe you could reply in a separate message?)


> However, I am disappointed to still see no good justification for
> the decision the WG has made w.r.t.
> 
> http://www.w3.org/2000/03/rdf-tracking/#rdf-ns-prefix-confusion 

I think Jeremy's explanation of
  http://lists.w3.org/Archives/Public/www-rdf-interest/2002Jan/0089.html

outlines the reasoning, although since he wasn't on the RDF Core WG
at that time, I'll try to explain what I think why the issue was
resolved that way.


RDF/XML in RDF M&S allows RDF attributes to be put on pretty much
any XML element including ones from the rdf: namespace itself.  So
here is an example of the old unprefixed use.

  <?xml version="1.0"?>
  <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    <Description about="http://example.org/">
    </Description>
  </RDF>

XML Namespace defines that unqualified attributes do not share
the namespace of their element - so 'about' here has no relationship
to the element (which is namespace prefixed, although I'm using the
defult one here).


Again:
  <?xml version="1.0"?>
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    <rdf:Description about="http://example.org/">
    </rdf:Description>
  </rdf:RDF>

So in particular 'about' is *not* associated with the namespace
behind the rdf: prefix.


RDF/XML allows abbreviations where the RDF attributes can appear on
typed nodes elements e.g.

  <?xml version="1.0"?>
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
           xmlns:a="http://example.org/properties/">
    <rdf:Description about="http://example.org/">
    </rdf:Description>
    <a:foo about="http://example.org/">
    </a:foo>
  </rdf:RDF>

So which namespace is the second 'about' attribute in?  None.
Definitely not the one attached to the a: prefix.

This looked confusing.

The RDF/Core WG decided that it would be much clearer if all RDF
attributes were always in the rdf namespace i.e:

  <?xml version="1.0"?>
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
           xmlns:a="http://example.org/properties/">
    <rdf:Description rdf:about="http://example.org/">
    </rdf:Description>
    <a:foo rdf:about="http://example.org/">
    </a:foo>
  </rdf:RDF>

It is now clear that the rdf:about for the a:foo element is an RDF
attribute and is intended to mean the same thing as the rdf:about on
the rdf:Description.

This has a slight impact when the RDF namespace is used as the
default; another has to be declared, but this is very commonly seen
in XSD and other modern XML specifications:

  <?xml version="1.0"?>
  <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
       xmlns:a="http://example.org/properties/">
    <Description rdf:about="http://example.org/">
    </Description>
    <a:foo rdf:about="http://example.org/">
    </a:foo>
  </RDF>


In addition, the RDF M&S document itself mixed the use of unprefixed
and rdf:-prefixed attributes despite only the former being allowed in
the BNF grammar.  Examples:
   'about' most places except 7.5 example.
   'rdf:parseType' used throughout
   'rdf:resource' mixed used throughout

The RDF/XML syntax was designed in 1998/1999 in parallel with XML
Namespaces.  This was thus before qnames and namespaces were more
widely used, before other ways of using them were tried such as for
XSLT, XML Schema.  We can't always take advantage of newer ideas
since we are mostly revising <insert-caveats="lots"/> :)


Looking at how XSLT uses attributes, it seems to only allow non
namespace-prefixed attributes on XSLT's own elements. 
  ( It also requires that other attributes on its elements are
    namespace-prefixed: http://www.w3.org/TR/xslt#xslt-namespace
    and XSLT requires namespaced elements.
  )
This method won't work for RDF; since RDF attributes can appear on
an element with pretty much any prefix /namespace.


This update was made by the working group in May 2001 and I think we
would need substantial evidence of why this resolution was a big
problem before we would revisit it.

Dave

Received on Monday, 14 January 2002 12:13:29 UTC