Re: RDF Namespaces and Attributes (again)

Jason Diamond wrote:
> Given this:
> <rdf:RDF xmlns:rdf="..." xmlns:schema="...">
>   <rdf:Description about="http://subject">
>     <schema:predicate resource="http://object" foo="bar" baz="quux"/>
>   </rdf:Description>
> </rdf:RDF>
> Does your parser require the property element to be this: (?)
> <schema:predicate rdf:resource="http://object" foo="bar" baz="quux"/>

Jason, you have landed in the middle of the XML Namespace unqualified
attribute controversy.  Do unqualified attributes "inherit" the namespace of
their element, or not?  What does this mean for RDF?

It seems to me that you are arguing for "foo" and "baz" to NOT be in the
"schema:" namespace.  I think that is a valid interpretation, but I don't
think it is the most popular one.  The popular one seems to be that
unqualified attributes "inherit" their namespace from their element. 
Appendix A.2 of the XML Namespace spec is oft (mis?)interpreted to have that

If A.2 is clear about anything, it is clear that for this example:

<rdf:RDF xmlns:rdf="...">
	<rdf:Description about="this" rdf:about="that" ... />

"about" and "rdf:about" are two completely different attributes.  So where
does that leave RDF?  Beats me.

While there isn't a very good understanding of the XML Namespace spec today,
there was even less when the RDF spec was being drafted.  In hindsight, it
was probably a mistake to treat attribute and element names as if they were
interchangeable (and to wed namespaces to schemas to URIs, but that's
another tar pit :-), but for better or worse, RDF assumes they are.  So what
do we do?

At a minimum, the RDF FAQ should deprecate using unqualified names for
properties when in the abbreviated (attribute) form.  For the rest ...

> Do you generate the following two statements: (?)
> (http://subject, schema:foo, "bar")
> (http://subject, schema:baz, "quux")

Yes, and without the "rdf:" on resource, it would also generate:

  (http://subject, schema:resource, "http://object")

> My preference would be to not assume that foo and baz came from the "s"
> namespace and silently ignore those attributes.

While I think that is a valid interpretation, I just don't think it will
make you any friends. :-)  If the author of your example above INTENDED for
foo and baz to be in s, I think that author would be annoyed if you ignored
his properties, even if his practice was questionable.  You can't even point
to the spec and claim that the RDF is not well-formed, since it is.  There's
no good answer to this (so far), so I took a conservative approach: better
to have too much information, even if it is spurious, than to lose

> > <?xml version="1.0"?>
> > <Foo about="me" and="you" xmlns="schema:"/>

While my trivia question is indeed a trick question, it isn't because
rdf:RDF is missing.  rdf:RDF is optional, as indicated by production [6.1].


Received on Saturday, 30 September 2000 21:59:36 UTC