W3C home > Mailing lists > Public > public-rdf-in-xhtml-tf@w3.org > October 2004

Re: comments on nodeID in RDF/A

From: Jeremy Carroll <jjc@hplb.hpl.hp.com>
Date: Tue, 26 Oct 2004 15:28:27 +0100
Message-ID: <417E5F0B.9060208@hplb.hpl.hp.com>
To: Mark Birbeck <mark.birbeck@x-port.net>
CC: "'public-rdf-in-xhtml task force''" <public-rdf-in-xhtml-tf@w3.org>

>> I think it is significantly cleaner not to provide such 
>>syntax, but require, say:
>><link nodeID="a" rel="foaf:knows">
>>   <link nodeID="b"/>
>>which cannot be read as introducing URIref nodes.
Mark Birbeck wrote:
> I looked first at doing what you describe, since that's effectively what
> RDF/XML does -- allow @nodeID in the position of either subject or object.
> However, your example won't work, because in the second line we cannot tell
> whether we have a subject or an object. You can get away with this in
> RDF/XML since there cannot be such a confusion, but in RDF/A we need to
> distinguish between them.

I was going from:


2. The second line does not contain a predicate or an object, so nothing 
is generated. However, the [context statement] has no object so a 
[triple] is generated with the subject and object provided by the 
[context statement], and the object provided by the subject in the 
statement being evaluated. The [triple] generated would be:

_:a foaf:depiction 
<http://www.ilrt.bristol.ac.uk/people/cmdjb/events/dc7/orig/eric.png> .

I think  "with the subject and object provided by the [context 
statement]" is a typo for
"with the subject and predicate provided by the [context statement]"

and we see that while the about attribute introduces a subject, it is 
used as the object of a context statement containing a rel and a subject 
but no object (and presumably as the subject of a context statement 
containing a rev and a subject).

So I think my proposed solution will in fact work, and is already 
implicit in RDF/A point 2 section 4.4.3

I take it that point 2 section 4.4.3 will apply to multiple statements 
so that

<link nodeID="a" rel="foaf:description">
   <link about="http://www.ex.org/a"/>
   <link about="http://www.ex.org/b"/>


_:a foaf:description <http://www.ex.org/a> .
_:a foaf:description <http://www.ex.org/b> .

The initial para of 4.4.3 seems clear enough on this one:

During the processing of each statement, a check is made on the [context 
statement] to see if it has a predicate but no object. If it does, then 
a triple is generated which has the subject and predicate provided by 
the [context statement], but with the object set to the subject of the 
statement being evaluated.

and also makes my earlier example legal.
Hence, I suggest simply deleting the #node(a) stuff and making the 
quoted para do all the work for the complex bnode cases.

One somewhat confusing thing is that even if there is no attributes at 
all on the element being evaluated it still has a subject, the gensym-ed 
bnode, so that

<link nodeID="a" rel="foaf:description">
   <link about="http://www.ex.org/a"/>
   <b>Hello World</b>

would generate

_:a foaf:description <http://www.ex.org/a> .
_:a foaf:description _:b .

with _:b being the gensym for the <b> element.

Received on Tuesday, 26 October 2004 14:30:21 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 8 January 2008 14:14:59 GMT