- From: Mark Birbeck <mark.birbeck@webbackplane.com>
- Date: Tue, 18 May 2010 23:25:53 +0100
- To: Manu Sporny <msporny@digitalbazaar.com>
- Cc: RDFa WG <public-rdfa-wg@w3.org>
HI Manu/Toby,
This is exactly how it's implemented in my parser.
The rule is essentially that at the moment the parser generates a
triple, it should store alongside that triple a reference to the
current DOM element that it is processing.
Doing this has the effect of keeping track of all of the *objects* in
the tree (in the RDF sense of objects, not the OO sense), because it's
always objects that cause triples to be generated. (@typeof is not an
exception -- it just happens to be an abbreviation for a
predicate/object pair.)
Keeping track of objects turns out to be exactly what we want when
dealing with DOM+RDFa, because now you can highlight names, put
tooltips on objects, and so on.
Regards,
Mark
On Tue, May 18, 2010 at 11:14 PM, Manu Sporny <msporny@digitalbazaar.com> wrote:
> On 05/17/2010 03:17 AM, Toby Inkster wrote:
>> On Sun, 16 May 2010 21:50:18 -0400
>> Manu Sporny <msporny@digitalbazaar.com> wrote:
>>
>>> http://www.w3.org/2010/02/rdfa/sources/rdfa-dom-api/Overview-src.html
>>
>> How exactly do these getElementsByX methods work? Although RDFa defines
>> how to generate an RDF graph from a DOM tree, it doesn't offer a clear
>> and unambiguous mapping back from the RDF graph to DOM nodes.
>
> Right, we'd have to specify how that mapping happens.
>
> I was thinking about something along these lines:
>
> * The active DOM node is carried along with the context
> * When a subject, predicate or object starts to be generated, the
> currently active DOM node is associated with the subject, predicate
> or object being created.
>
>> For example:
>>
>> <a about="#me" typeof="foaf:Person"
>> rel="foaf:homepage" href="http://example.com/">
>> <span rel="rdf:type" resource="[foaf:Document]"
>> property="dc:title">My Homepage</span>
>> </a>
>> <i about="#me" property="foaf:name">Joe</i>
>>
>> What element would be returned in the case of
>> getElementsByType('foaf:Person')? Presumably the <a> element because it
>> set the subject for the {?thing rdf:type foaf:Person} triple.
>
> Yes, it would be where the @typeof is specified - or rather, the subject
> ("#me"), the predicate (rdf:type), and the object (foaf:Person) would
> all have the same ".origin" property - the <a> Element.
>
>> But what about the getElementsByType('foaf:Document')? If we apply the
>> same reasoning, it would be the <a> element too.
>
> Well, if we apply the "currently active node" rule for determining the
> associated DOM Node, it would be the currently active node when the
> object was determined, in this case, the <span> tag. So the triple's DOM
> Node associations would be:
>
> subject -> "#me" -> <a>
> predicate -> rdf:type -> <span>
> object -> foaf:Document -> <span>
>
>> Would the <i> element be selected by getElementsByType('foaf:Person')?
>> After all, we know #me is a foaf:Person.
>
> Nope, getElementsByType() only returns DOM Elements that are directly
> associated with the declaration of that type. So, only these patterns
> would match:
>
> @typeof
> @rel w/ @src/@href/@resource
>
> Even when we get fancy, I think this works:
>
> <div rel="rdf:type">
> <span resource="foaf:Document" />
> <span resource="sioc:Post" />
> <span resource="owl:Thing" />
> </div>
>
> In each case about getElementsByType() would return the associated span
> element for foaf:Document, sioc:Post, and owl:Thing.
>
>> As much as I think these getElementsByX methods would be useful, I
>> don't think they can be implemented in an especially obvious,
>> consistent and predictable way.
>
> Does this approach change your mind? It's a fairly simple rule, can you
> think of where it may break down?
>
> -- manu
>
> --
> Manu Sporny (skype: msporny, twitter: manusporny)
> President/CEO - Digital Bazaar, Inc.
> blog: Bitmunk 3.2.2 - Good Relations and Ditching Apache+PHP
> http://blog.digitalbazaar.com/2010/05/06/bitmunk-3-2-2/2/
>
>
Received on Tuesday, 18 May 2010 22:26:28 UTC