Mark Birbeck wrote:
> Hi Ben,
>
> I have some comments on this, but I need to resolve one thing first;
> where is this coming from:
>
>> - all contained statements default to having as subject the object of
>> the @rel triple, whether it is a bnode, a URI indicated by @id, or the
>> URI of the @href if there is one.
To the best of my recollection, it's coming from a discussion on a
telecon, I don't think there's a log of it. It's something that I think
is actually fairly consistent, and I haven't found any issues with it
yet, but it's by no means resolved, so let's discuss.
(And in fact I have a use case as of yesterday: some folks implementing
Creative Commons licensing want to do striping with <a href=> and stuff
inside it. They sent me an HTML fragment that assumed it worked this
way, without my telling them a thing about it.)
>> <div about="#foo" rel="foaf:topic" href="#event_0" class="cal:Vevent">
>> <span property="cal:dtstart">2007-07-07</span>
>> </div>
>>
>> yields
>>
>> <#foo> foaf:topic <#event_0> .
>>
>> <#event_0> rdf:type cal:Vevent ;
>> cal:dtstart "2007-07-07" .
>
> I don't recall us ever making @href the *subject* of any contained
> triples. That's how things used to be in the earliest, earliest drafts
> (something I called "chaining") but it just didn't work. :)
We have not agreed on @href everywhere, you're right, it just seemed to
me a natural extension. Well, let's see if it works or not :)
> This means--at least in my view of where we are currently--the
> following triples would be generated from your example:
>
> <#foo>
> rdf:type cal:Vevent;
> foaf:topic <#event_0>;
> cal:dtstart "2007-07-07" .
>
> Since we've agreed that if @rel is on its own (with no @href) then the
> subject of any contained statements is the object of that
> statement--i.e., a bnode. So the following mark-up _would_ give the
> triples desired above:
>
> <div about="#foo" rel="foaf:topic">
> <div class="cal:Vevent">
> <span property="cal:dtstart">2007-07-07</span>
> </div>
> </div>
So this markup definitely wouldn't give the same thing, right, since
there's no pointer to #event_0 anywhere. You'd have to write #event_0
twice if you don't let @rel cause striping when there's an @href.
> This is obviously pretty important, so if you have any references to
> where the behaviour of @href was changed to become the subject of
> contained statements I'd appreciate the links. Thanks.
I don't think it has been changed, I think we had different assumptions
about this, and that's why I wanted to lay things out so we can discuss
them. We have *not* resolved this, as best as I can tell, so no fear,
there has been no change... yet. I'm only trying to iron out the
inconsistencies, and I think this is an important one, as you mention.
Now taking the above example you have, there are at least two issues
here. Let's tease them apart. First,
<div about="#foo" rel="foaf:topic">
<span property="cal:dtstart">2007-07-07</span>
</div>
I think we agree that this would yield:
<#foo> foaf:topic [cal:dtstart "2007-07-07"] .
Now, let's add @class, and let's make it unrelated to calendars so I
don't bias the psychological interpretation:
<div about="#foo" rel="foaf:topic" class="bar:Baz">
<span property="cal:dtstart">2007-07-07</span>
</div>
Do we think that this means that #foo is bar:Baz, or the bnode is
bar:Baz? I claim it's the bnode, because remember, the way we used to
think of @class was as a syntactic sugar for a contained LINK:
<div about="#foo" rel="foaf:topic">
<link rel="rdf:type" href="[bar:Baz]" />
<span property="cal:dtstart">2007-07-07</span>
</div>
And I don't see why the LINK and SPAN should have different subjects.
In other words, in my mind, @rel causes the creation of a bnode, which
sets the subject for contained statements, overriding the @about, and
since @class is syntactic sugar for a contained statement, I think @rel
effectively sets its subject.
This is where I think we may have a point of contention, but I'm not
sure how else we can interpret it if we agree that striping (or
chaining) is useful.
Now, *assuming* you agree with me so far, then I make the claim that if
you add an @href on the <div>, then you cannot change the rules for all
of the other triple generation all that drastically. Since the object of
the @rel is now the @href instead of the @bnode, shouldn't all the
contained statements have as subject the @href?
Going back to the first code chunk:
<div about="#foo" rel="foaf:topic" href="#event_0" class="bar:Baz">
<span property="cal:dtstart">2007-07-07</span>
</div>
The way I "see" this in my mind is that @rel creates striping/chaining,
whether or not there's an @href, and anything contained is then about
the object of the statement generated by @rel, whether there's an @href
or not.
The nice thing here is that this makes a lot of sense to XML folks
(precisely the use case that came up with Creative Commons yesterday),
and it's extremely powerful for complex graph expression, in my opinion.
(Btw, we could substitute @resource for @href, of course.)
I don't see any horrible complications, but maybe I'm missing something.
Thoughts?
-Ben