Re: RDF/XML Syntax Oddity

On Wed, 11 Aug 2004 12:06:42 +0100, Ian Davis <iand@internetalchemy.org> wrote:
> The following RDF/XML different results depending on the parser used:
> 
> <rdf:RDF
>    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>    xmlns:ns1="http://example.com/">
> 
>    <rdf:Description>
>      <ns1:pred rdf:value="bar"><rdf:Description/></ns1:pred>
>    </rdf:Description>
> </rdf:RDF>
> 
> Raptor and James Carlyle's XSLT based parser both give a single triple 
> of the form:
> 
> _:genid1 <http://example.com/pred> _:genid2 .
> 
> The W3C online validator gives two triples:
> 
> genid:ARP76637 	http://www.w3.org/1999/02/22-rdf-syntax-ns#value 	"bar" .
> genid:ARP76636 	http://example.com/pred 	genid:ARP76637 .
> 
> and an error: "Syntax error when processing start element 
> rdf:Description. rdf:Description elements generally may only occur to 
> describe an object.[Line = 4, Column = 30]"
> 
> I'm not entirely sure who is right. Does anyone else have any ideas?

First terminology. In this example, rdf:Description is a node element,
ns1:pred is a property element and rdf:value is a property attribute.

ARP is correct in generating an error.  There are actually two.

1) A property element can only have property attributes if it is an
   empty element[1]

This would have been ok:
      <ns1:pred rdf:value="bar"></ns1:pred>

(or  <ns1:pred rdf:value="bar"/> )


2) A node element cannot appear as the value of a property element
except in two cases. Firstly when it has attribute
rdf:parseType="Collection"[2] expecting a set of node elements
otherwise there are no property attributes at all[3] when one node
element is expected.

So these would have been ok:
      <ns1:pred rdf:parseType="Collection"><rdf:Description/></ns1:pred>

      <ns1:pred><rdf:Description/></ns1:pred>


It is an implementation decision at what point to check these cases
but the rdf/xml document above should generate an error (or two).


I note in passing that the nxml-mode in emacs for RDF/XML using the
relaxng schema correctly points out there is an error - very handy :)

Dave

[1] http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210/#emptyPropertyElt
[2] http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210/#parseTypeCollectionPropertyElt
[3] http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210/#resourcePropertyElt

Received on Wednesday, 11 August 2004 11:46:02 UTC