- From: John McClure <jmcclure@hypergrove.com>
- Date: Fri, 10 Aug 2007 10:43:05 -0700
- To: "Pat Hayes" <phayes@ihmc.us>, "Bijan Parsia" <bparsia@cs.man.ac.uk>, "Owl Dev" <public-owl-dev@w3.org>
My assertion -- that the use of rdf:ID vs rdf:about IS a meaningful choice -- is supported by the specs (see below). I've supplied a proof that is consistent with the specs. I'd like to see an issue opened that 1) allows both ID & about on a Description 2) clarifies their semantic roles 3) eliminates declaredAs DISCUSSION http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/#basicSyntax : "The Description element names, in an about attribute, the resource to which each of the statements apply. If the resource does not yet exist (i.e., does not yet have a resource identifier) then a Description element can supply the identifer for the resource using an ID attribute. " This says that Descriptions with an 'about' attribute are assertions, and Descriptions with an 'ID' attribute are declarations (definitions). ID & about are NOT the same, and their XML schema most certainly defines them differently, one a text string the other an XML ID (funny I can't find their xmls). My proof does break a 'rule'... the 1999 spec disallows both ID & about on a Description... a rule that must be revisited in light of explicit relationships made between rdf:ID & reification and between Description & Statement. For instance, Section 2.17 of http://www.w3.org/TR/rdf-syntax-grammar/#section-Syntax-reifying, states "the rdf:ID attribute can be used on a property element to reify the triple that it generates" -- my proof treats rdf:ID similarly. Further, the spec states that Description is functionally equivalent ('sugar') to Statement so a mapping *MUST* exist between their attributes -- this is *exactly* what my proof does. The argument that if rdf:ID & rdf:about are semantically distinguished, then triples cannot be round-tripp'ed -- this is an underlying problem with triples, one solved by quads. [ sidebar >They aren't properties. At least not rdf:Properties. >They are part of the *syntax* not the model. In Section 5 -- Global *Issues* -- of the spec you pointed me to also claims an operational distinction between 'syntax' and 'concepts'... let's see how useful this is. The complete list of 'syntax' names that are not 'concepts' is given there: RDF Description ID about bagID parseType resource li nodeID datatype Wow. A Description, to be consistent with its functional equivalence to a Statement, ergo must be the name of a 'concept' not 'syntax'. RDF as a 'concept' is clearly a 'graph'. Other items should be Resource property names, e.g., bagID identifies the subgraph for a statement. So the distinction between 'syntax' and 'concepts' kinda looks artificial. ] >-----Original Message----- >From: Bijan Parsia [mailto:bparsia@cs.man.ac.uk] >Sent: Thursday, August 09, 2007 2:49 PM >To: John McClure >Cc: Owl Dev >Subject: Re: declaredAs > > >On Aug 9, 2007, at 10:09 PM, John McClure wrote: > >> >> I'm wondering then about the consistency of the semantics, >> If: >>> <rdf:Description rdf:about="#foo"/> >>> and >>> <rdf:Description rdf:ID="foo"/> >>> Produce exactly the same node. >> >> Then what is the semantic for: >> <rdf:Description rdf:ID='x' rdf:about="#foo"/> >> ? > >Syntax error. > >Instead of relying on your intuition, which, for RDF/XML, trust me, >isn't remotely reliable (for *any*one), I recommend section 2 of the >spec: > http://www.w3.org/TR/rdf-syntax-grammar/#section-Syntax > >Which is a very nice, example driven but exhaustive, tour of RDF/XML >syntax. > >The W3C RDF validator is a great, zero install tool for seeing what >bits of RDF/XML parse to: > http://www.w3.org/RDF/Validator/ > >When in doubt, test. > >I popped your node into the example in the validator: > ><?xml version="1.0"?> ><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > xmlns:dc="http://purl.org/dc/elements/1.1/"> > <rdf:Description rdf:about="http://www.w3.org/"> > <dc:title><rdf:Description rdf:ID='x' rdf:about="#foo"/></dc:title> > </rdf:Description> ></rdf:RDF> > >The error message is clear: > Error: {E201} Both ID and about[Line = 5, Column = 61] > > >> Discussion >> ========== >[snip...I'm sorry, but this exhibits a huge number of confusions that >I don't have time to sort out right now] > >> Chiefly for reason of this proof, I am surprised that you think >> these two >> properties (ID & about) > >They aren't properties. At least not rdf:Properties. They are part of >the *syntax* not the model. > >> represent "syntactic sugar" > >ID is (crappy) syntactic sugar for about. > >> because then you're saying >> that they are sameAs one another > >No I'm not. > >> -- and why in the world would the spec have >> these two properties > >None of the RDF specs have these as properties. Look around. There is >no assertion that either are properties. > >I know Sandro would like them to be, but that's different :) > >> in the first place, and not indicate that they are >> syntactic sugar? > >It does, both normatively and informatively. I point you to the >informative: > http://www.w3.org/TR/rdf-syntax-grammar/#section-Syntax-ID-xml-base > >"""RDF/XML allows further abbreviating RDF URI references in XML >attributes in two ways. >... >The rdf:ID attribute on a node element (not property element, that >has another meaning) can be used instead of rdf:about and gives a >relative RDF URI reference equivalent to # concatenated with the >rdf:ID attribute value. So for example if rdf:ID="name", that would >be equivalent to rdf:about="#name". rdf:ID provides an additional >check since the same name can only appear once in the scope of an >xml:base value (or document, if none is given), so is useful for >defining a set of distinct, related terms relative to the same RDF >URI reference.""" > >I agree that the last sentence is misleading and there are only a >very limited number of cases where it can be made to work and >requires otherwise restricting the syntax. And has no effect on the >model. For example, if you require your author to give every uri a >label and only one label, then you could force them to write label >assertions *only* this way: > ><rdf:Description rdf:ID="foo"> > <rdfs:label>foo</rdfs:label> ></rdf:Description> > >And the *parser* will complain if you repeat this fragment (in the >scope of the same base). But note it won't hiccup at all if you do: ><rdf:Description rdf:ID="foo"> > <rdfs:label>foo</rdfs:label> > <rdfs:label>bar</rdfs:label> ></rdf:Description> > >Or ><rdf:Description rdf:ID="foo"> > <rdfs:label>foo</rdfs:label> ></rdf:Description> ><rdf:Description rdf:about="#foo"> > <rdfs:label>bar</rdfs:label> ></rdf:Description> > >And if you write Turtle, you don't have that check *expressible* in >the syntax. (Actually, every alternative serialization that I'm >familiar with lacks anything like rdf:ID. Even if they had it, >there'd be no way to round trip it.) > >So it really has nothing at all to do with declaring, or making >something a *definition*. > >It's just sugar. You lose nothing by eschewing it and gain some >simplicity and clarity. > >> My thinking is that, to the contrary, a given document may >> have only one declaration for a thing, but can have as many >> assertions about it >> as they care to have, so it's important to have both properties. > >In OWL 1.1 things can have many declarations per term. I don't know >why only one is valuable. But rdf:ID doesn't get you *any sort of >declaration*. It's *just a funny way of making an assertion*. > >> Am I way-off the deep end here? > >Yep. But understandably. But *way* :) Let it go. > >> Thanks in advance. > >Your welcome. Hope it helps. > >Cheers, >Bijan.
Received on Friday, 10 August 2007 17:42:53 UTC