Re: Summary of @href/@resource completing triples issue

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