RDF/XML Syntax problems with datatyping literals

I've already mentioned a few times that using the rdf:type attribute
to indicated datatyped literals is a bad idea *for the RDF/XML
syntax*.  It is ambiguous and difficult to parse.  We should not be
adding more ambiguity to the syntax, and I will oppose it.

Here is what I consider a fatal case.

Consider a datatyped literal that has a lexical form which is the
null string.  The datatype URI is, for example, http://example.org/datatype1

So the RDF/XML proposed would be:

  <ex:prop rdf:type="http://example.org/datatype1"></ex:prop>

This is, by XML rules, equivalent to
  <ex:prop rdf:type="http://example.org/datatype1" />
but that's not the issue.

The problem is that this form already has a different meaning in the
RDF/XML defined in M&S and the current draft.  An empty property
element with property attributes is equivalent to the
expansion below, which adds a blank node to hang the property off:

  <ex:prop>
    <rdf:Description>
      <rdf:type rdf:resource="http://example.org/datatype1" />
    </rdf:Description>
  </ex:prop>

which isn't what you wanted.  

If the lexical form is not the null string, say
  <ex:prop rdf:type="http://example.org/datatype1">a</ex:prop>
then that is bad syntax and will very likely break all existing parsers.


This is better done using any new rdf: term such as rdf:ltype.

  <ex:prop rdf:ltype="http://example.org/datatype1">a</ex:prop>

which may either give a warning or error with a current parser as an
unknown rdf: term, but should not be interpreted as a property. 

It can be defined to work something like xml:lang, i.e. sets a
property (sic) of the contained literal.

The latter is easy to add to a parser.  An interesting question is
whether to really make it like xml:lang - i.e. be the in-scope
datatype on a particular XML element, unless you say otherwise
or undefine it with rdf:ltype="".

Dave

Received on Thursday, 29 August 2002 08:44:00 UTC