- From: Ben Adida <ben@adida.net>
- Date: Wed, 09 Jan 2008 10:24:50 -0800
- To: Manu Sporny <msporny@digitalbazaar.com>
- CC: RDFa <public-rdf-in-xhtml-tf@w3.org>
Manu,
Thanks for these summaries, which are very helpful, although I think
this time you've got two big bugs in your main example. See the bottom
of this email.
Mark, I haven't changed my mind recently on @href causing chaining,
remember I'm the one who introduced the idea in the first place, back
when only a hanging @rel produced chaining.
Also, Mark, you're confusing the situation thoroughly by using the
generic formulation "@resource can play the role of subject, and @about
can play the role of object." Of course they can, with chaining. The
question is, to *which* predicate? How much are you willing to
"collapse" the triple structure to connect a @rel with an object?
In your model, collapsing happens where one likely wouldn't expect it,
which is what gives Ivan's important counter-example. You've ignored
this issue so far, yet it's the biggest one!
When we have a standalone @href that isn't related to anything above:
<div href="#foo">
<span property="dc:title">Foo</span>
</div>
We're not collapsing anything: it's just that <#foo> is not related to
any subject above, it only has properties of its own. We can relate it
to subjects above using @rel on the DIV, and the triple structure stays
the same.
Similarly, an @about with no properties:
<div rel="foaf:knows">
<span about="#mark">Mark</span>
</div>
doesn't "collapse" any of the triple structure: it's just that <#mark>
has no properties hanging off of it, but it still completes the hanging
@rel.
I know we agree on the outcome of the above two examples, but I wanted
to explain them to contrast with another chunk of markup that shows the
unexpected triple collapse with your model:
<div rel="foaf:knows">
<span about="#mark" rel="foaf:knows" resource="#ben">
<span property="foaf:name">Ben</span>
</span>
<span about="#ivan" />
</div>
I think we all agree that this gives:
<> foaf:knows <#mark> .
<#mark> foaf:knows <#ben> .
<#ben> foaf:name "Ben" .
<> foaf:knows <#ivan> .
Now remove the @rel on the inner SPAN, which one should take as meaning
that "Mark no longer knows Ben:"
<div rel="foaf:knows">
<span about="#mark" resource="#ben">
<span property="foaf:name">Ben</span>
</span>
<span about="#ivan" />
</div>
I'm pretty sure we agree that this yields:
<> foaf:knows <#mark> .
<#ben> foaf:name "Ben" .
<> foaf:knows <#ivan> .
Effectively, we removed the relationship between <#mark> and <#ben>, but
we didn't change the overall triple structure, we just removed an edge
from the graph.
Now, what happens if we remove the @about, which should be interpreted
as "<#mark> is no longer an object of foaf:knows."
<div rel="foaf:knows">
<span resource="#ben">
<span property="foaf:name">Ben</span>
</span>
<span about="#ivan" />
</div>
In my model, there's only one object to foaf:knows remaining, and so the
first triple goes away completely, leaving only:
<#ben> foaf:name "Ben" .
<> foaf:knows <#ivan> .
But in Mark's model, a triple structure collapse happens, where suddenly
@rel connects to @resource, only because we removed @about:
<> foaf:knows <#ben> .
<#ben> foaf:name "Ben" .
<> foaf:knows <#ivan> .
So now the current page knows <#ben>, which is really odd since that was
never expressed earlier.
This is a *big* change, because it means that whether you declare a
subject with @about or not suddenly changes the *structure* of the
triples. Note how the collapse somehow brings <#ben> and <#ivan> to the
same level, and *all because we removed @about*.
Manu Sporny wrote:
> and this is where the two models differ (note that @rel was moved up to
> the containing element):
>
> -----------------------------------------------------------------
> <div href="#me" rel="foaf:knows">
> <span href="#ivan">
> <span href="#shane">
> </div>
> -------- Approach A triples (Mark)
> <#me> foaf:knows <#ivan> .
> <#me> foaf:knows <#shane> .
> -------- Approach B triples (Ben)
> <> foaf:knows <#ivan> .
> <> foaf:knows <#shane> .
> -----------------------------------------------------------------
First, a bug: use @about on the top-level DIV, otherwise @href becomes
the object of the @rel when you move it to the top-level DIV. I think
Mark and I agree on this,
There's also a big bug with Approach B's triples: in my and Ivan's
model, there are no triples generated, because @href on its own never
completes a triple. Why? Because non-RDFa authors write <a href=""> all
the time, and to have that automatically connect to a hanging @rel when
the anchor contains *no* RDFa attributes... very odd.
And there's one more issue: what happens to @instanceof? Does it then
apply to @resource in Mark's markup? That would be the natural
consequence of Mark's proposal, which I find quite ironic, given that my
earlier proposal that @instanceof would apply to @resource was so
untenable :)
-Ben
Received on Wednesday, 9 January 2008 18:24:58 UTC