Re: text "MUST replace in the graph"

> This part of the text has been introduced to address the compatibility
> problems pointed out by the HP people.

Yes, and I agreed with their basic point, as I understand it.

> Furthermore, I'm not really sure I understand this comment. Please note the
> following things:
> 
> - This requirement pertains *only* to RDF graph exchange and says
> *nothing* about other types of formats. For example, the OWL 2
> functional-style syntax permits rdf:text literals without any
> problems; similarly, there is nothing that prevents RIF from allowing
> rdf:text literals to occur in non-RDF exchange formats.

Let's imagine that next year I want to make N-Triples-2, which is like
N-Triples, but a little different.  Would it be okay for me to omit
syntactic mechanisms for plain literals, and instead just provide typed
literals, saying that people can just use rdf:text?  So any software
converting between N-Triples and N-Triples-2 would have to do the
conversions seen in rdf:text table 2.

It seems to me we want to allow for this case, but that the text in
question could be reasonably understood as forbidding it.

(It also seems to me that RIF Frames and and OWL
ObjectPropertyAssertions, as used in the non-RDF serializations, really
are just more RDF-exchange formats, and we know they use rdf:text
instead of providing special syntaxes for RDF plain litersal.)

> - RDF plain literals "abc" and "abc"@lang are fully equivalent to
> typed rdf:text literals "abc@"^^rdf:text and "abc@lang"^^rdf:text,
> respectively. Thus, even if MUST is left as it is, nothing is lost
> from the expressivity point of view: this requirement merely means
> that all typed rdf:text literals MUST be canonicalized to (equivalent)
> plain RDF literals. Since the two are equivalent, there is no loss of
> functionality. For example, if you want to exchange ground facts
> between RIF implementations using RDF, you can do so as long you use
> the (equivalent) plain RDF literal forms rather than the typed
> rdf:text literal ones. The RIF implementation that sends the RDF graph
> can thus send all the data without any loss of information, and the
> RIF implementation that receives the RDF graph can reconstruct the
> original graph up to logical equivalence.

Yeah, I'm concerned about the case of people making an "RDF Syntax" that
you might not consider an "RDF Syntax" since it doesn't support plain
literals.  I think the important thing is to say that every RDF graph
serialization format should mandate using EITHER a special syntax for
plain literals OR rdf:text, but not both.  And since all existing
formats don't give their answer to this choice (and some future ones
wont either), we just declare that if the format provides plain literals
and/or doesn't say you have to use rdf:text, then you shouldn't use
rdf:text in it.

How's this:

      Despite the semantic equivalence between typed rdf:text RDF
      literals and plain RDF literals, the presence of rdf:text literals
      in an RDF graph might cause interoperability problems.  For
      example, if an RDF graph containing rdf:text literals is
      serialized in RDF/XML, a system may receive it which does not
      implement rdf:text handling.  Such a system will typically treat
      these literals opaquely, storing them without processing and not
      matching them to plain literals.

      To avoid this problematic behavior, tools which support rdf:text
      MUST replace in the graph each rdf:text literal with the
      correspinding plain RDF literal before transmitting the graph to
      any system which is not required to implement rdf:text handling.
      In practice this means the replacement SHOULD be done before
      serializing in any RDF format which supports plain literals, since
      systems reading such a format will typically omit rdf:text
      handling.  In contrast, some formats for RDF may provide only
      typed literals and thus require that each plain literal be
      replaced by the corresponding rdf:text typed literal before
      transmission.

     -- Sandro


> > -----Original Message-----
> > From: public-rdf-text-request@w3.org [mailto:public-rdf-text-request@w3.org
> ]
> > On Behalf Of Sandro Hawke
> > Sent: 06 April 2009 18:02
> > To: public-rdf-text@w3.org
> > Subject: rdf:text "MUST replace in the graph"
> > 
> > 
> > (This is my second substantive comment in my rdf:text review; so far all
> > my other comments are editorial, and I'll send them along separately.)
> > 
> > I don't think the text at the end of section 4 is quite right.  It
> > currently says:
> > 
> >      Despite the semantic equivalence between typed rdf:text RDF
> >      literals and plain RDF literals, the presence of typed rdf:text RDF
> >      literals in an RDF graph might cause interoperability problems
> >      between RDF tools, as not all RDF tools will support
> >      rdf:text. Therefore, before exchanging an RDF graph with other RDF
> >      tools, an RDF tool that suports rdf:text MUST replace in the graph
> >      each typed rdf:text RDF literal with the corresponding plain RDF
> >      literal. The notion of graph exchange includes, but is not limited
> >      to, the process of serializing an RDF graph using any (normative or
> >      nonnormative) RDF syntax.
> > 
> > The problem with this is that it forbids use of rdf:text in interchange
> > in the future.  In fact, RIF can be used to interchange RDF Graphs (by
> > stating ground frame facts,), but it's forbidden by this text from
> > including internationalized strings!  More seriously, I expect new
> > machine formats for RDF would use rdf:text, but this forbids it.
> > 
> > I think this can be fixed by adding a little phrase, which I've put in
> > all-caps below, just to show the change:
> > 
> >      Despite the semantic equivalence between typed rdf:text RDF
> >      literals and plain RDF literals, the presence of typed rdf:text RDF
> >      literals in an RDF graph might cause interoperability problems
> >      between RDF tools, as not all RDF tools will support
> >      rdf:text. Therefore, before exchanging an RDF graph with other RDF
> >      tools, an RDF tool that suports rdf:text MUST replace in the graph
> >      each typed rdf:text RDF literal with the corresponding plain RDF
> > ->   literal, UNLESS THE EXCHANGE FORMAT BEING USED MANDATES THAT
> > ->   RECIEVERS SUPPORT RDF:TEXT.  The notion of graph exchange includes,
> >      but is not limited to, the process of serializing an RDF graph
> >      using any (normative or nonnormative) RDF syntax.
> > 
> > The paragraph could be re-written to be smoother, but I think that's the
> > minimal change we need here.
> > 
> >     -- Sandro
> > 
> > 
> 

Received on Monday, 6 April 2009 19:40:37 UTC