- From: Dave Beckett <dave.beckett@bristol.ac.uk>
- Date: Thu, 17 May 2001 18:08:50 +0100
- To: w3c-rdfcore-wg@w3.org
Revising http://lists.w3.org/Archives/Public/w3c-rdfcore-wg/2001May/0050.html in light of an error pointed out privately by Stefan Kokkelink - thanks! Here goes The confusion is the different interpretation of rdf:ID in propertyElt when the element is empty / non-empty. 1. if the propertyElt is an *empty* XML-element, an rdf:ID is the identifier of the target resource: Jan Grant has been working on empty elements but not considered rdf:ID so far: http://lists.w3.org/Archives/Public/w3c-rdfcore-wg/2001May/0081.html The current relevant words are [[3. r2 is the resource named by the resource attribute if present or a new resource. If the ID attribute is given it is the identifier of this new resource.]] section 6 paragraph beginning [[Properties and values expressed in XML attribute form within an empty XML element E..., second sentence of item #3] so the answer to the test case Brian McBride gave in http://lists.w3.org/Archives/Public/w3c-rdfcore-wg/2001May/0082.html <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:random="http://random.ioctl.org/#"> <rdf:Description rdf:about="http://random.ioctl.org/#bar"> <random:someProperty rdf:ID="foo" /> </rdf:Description> </rdf:RDF> is that the statement: (http://random.ioctl.org/#bar, http://random.ioctl.org/#someProperty, document-URI#foo) should be generated; no reification occurs since rdf:ID identifies a resource, not a statement here. 2. if the propertyElt is an *non-empty* XML-element, an rdf:ID is the identifier of the reified statement: [[The value of the ID attribute, if specified, is the identifier for the resource that represents the reification of the statement.]] section 6 paragraph beginning [[Within propertyElt (production [6.12]),]] So stating the issue again: [[The propertyElt production 6.12 of the grammar does not allow both an ID attribute and a resource attribute to be specified.]] and goes on to give an example with an empty element. In case #1 (empty element) since rdf:ID points to the target resource, adding rdf:resource as well would have two statement objects which does not make sense. Aside: I don't know why rdf:resource alone wasn't used uniquely to point to a target resource rather than both rdf:ID and rdf:resource being allowed. I suspect you often want to point to local IDs and making rdf:ID be the identifier of a reified statement wouldn't make sence because there are potentially many statements generated from propName, propAttr - so which one would it be? 6.12 part 4 which applies in this case is currently: '<' propName idRefAttr? bagIdAttr? propAttr* '/>' and remains valid (ID and resource are alternatives). In case #2 (non empty element), the current 6.12 part 1 is '<' propName idAttr? '>' value '</' propName '>' where no rdf:resource attribute is allowed and rdf:ID identifies the reified statment. It does not make sense to add rdf:resource here, since in that case if the value of the property was a resource, case#1 could be used to perform that. In summary - no change need be made to the grammar although some clarifications are obviously needed since this wasn't too clear. Dave
Received on Thursday, 17 May 2001 13:08:51 UTC