- From: Ralph R. Swick <swick@w3.org>
- Date: Wed, 22 Sep 1999 16:35:25 -0400
- To: caro@Adobe.COM
- Cc: rdf-dev@mailbase.ac.uk, www-rdf-comments@w3.org
At 02:13 PM 8/2/99 -0700, Perry A. Caro wrote:
http://lists.w3.org/Archives/Public/www-rdf-comments/1999JulSep/0020
> Based on the following production in the
>formal grammar BNF:
>
>[6.12] propertyElt :== // fourth alternative:
> '<' propName idRefAttr? bagIdAttr? propAttr* '/>'
>
>... a completely empty XML element (no attributes, no children) looks like a
>valid property. But what does it mean? ... I
>don't think a completely empty XML tag is a valid property.
Good question. I agree with your assessment that the grammar as
specified does permit an empty element in the position of a property
expression and that this should generally not be encouraged.
As you point out, the narrative description of propertyElt:
http://www.w3.org/TR/REC-rdf-syntax/#grammar
Each propertyElt E contained by a Description element results in the
creation of a triple {p,r,v} where:
...
3.If E is an empty element (no content), v is the resource whose
identifier is given by the resource attribute of E. If the
content of E contains no XML markup or if parseType="Literal" is
specified in the start tag of E then v is the content of E (a
literal). Otherwise, the content of E must be another Description
or container and v is the resource named by the (possibly
implicit) ID or about of that Description or container.
omits the case that E is an empty element and E has no resource attribute.
If I were to define what is meant by
<rdf:Description about="http://fiction.org/>
<s:myProperty/>
</rdf:Description>
I would define it to mean that the value of s:myProperty is an
anonymous resource about which I know nothing else. If an
RDF schema defining s:myProperty were added, there could be
an rdfs:range assertion for s:myProperty that then allows me
to add an rdf:type property to this anonymous resource.
Or more hypothetically, given some as-yet-unspecified interface
it could also be possible to say, for example 'the resource that
has the s:myProperty relationship with http://fiction.org/ has
the s:myOtherProperty relationship with http://other.org/'; that
is, construct a graph reference to this anonymous resource.
> When I give the following to
>SiRPAC:
>
>1: <?xml version="1.0"?>
>2: <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>3: xmlns:test="test#">
>4: <rdf:Description about="http://www.w3.org/RDF/Implementations/SiRPAC/">
>5: <test:noValue/>
>6: </rdf:Description>
>7: </rdf:RDF>
>
>I get a valid triple:
>
>triple('test#noValue',
> 'http://www.w3.org/RDF/Implementations/SiRPAC/',
> 'online#genid2').
>
>But what is the value? Is it a made-up literal? A made-up resource?
Janne seemed to have made the same guess that I proposed above;
the value is an anonymous resource, for which SiRPAC generates
an internal identifier.
>This gets even more confusing when I switch to the abbreviated form:
>
>1: <?xml version="1.0"?>
>2: <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>3: xmlns:test="test#">
>4: <rdf:Description about="http://www.w3.org/RDF/Implementations/SiRPAC/"
>5: test:noValue=""/>
>6: </rdf:RDF>
>
>SiRPAC generates no triples!??!
I call this a SiRPAC bug. This clearly states that the value of
the test:noValue statement is the empty string (a Literal).
It is the same as
<rdf:Description>
<test:noValue></test:noValue>
</rdf:Description>
> Based on my
>interpretation of the narrative description of the grammar in the RDFMS, I
>think the BNF should really be:
>
>[6.12] propertyElt :== // fourth alternative:
> '<' propName bagIdAttr? (idAttr | resourceAttr) propAttr* '/>'
>
>In other words:
> * 0 or 1 bagID attribute
> * AND, an ID attribute OR a resource reference
> * AND, 0 or more property attributes
>
>This makes it clear that the value of an empty tag is either the ID or the
>resource reference.
I think there is a reasonable interpretation of the grammar as
specified, though I cannot assert that this was the intent of
the Working Group. While I think this usage should not be encouraged
for the time being, I do not see a need to disallow it. Others are
welcome to comment on the merits of clarifying the specification
either way.
>The abbreviated form of ="" should be explicitly disallowed.
I disagree with this. The empty string is a valid literal.
-Ralph
Received on Wednesday, 22 September 1999 16:36:12 UTC