- 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