Gregg,
I have not looked at the details of the processing steps, just at my implementation. I am looking at what I would expect here to happen...
First, let us look at an RDF 1.0 case, and using @rel instead of @property; also, put @typeof aside, using a @resource instead:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/" version="XHTML+RDFa 1.0">
<head>
<title>Test 0058</title>
</head>
<body>
<div about="http://www.example.org/#ben" rel="foaf:knows">
<p rel="foaf:homepage" resource="http://www.ex.org/">Mark Birbeck</p>
<p rel="foaf:homepage" resource="http://www.ex1.org/">Ivan Herman</p>
</div>
</body>
</html>
What we get in 1.0:
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ns1: <http://www.example.org/#> .
ns1:ben foaf:knows [ foaf:homepage <http://www.ex.org/>,
<http://www.ex1.org/> ] .
(This is how RDFa 1.0 solves the case of 'double' chaining in some way. I checked your distiller, it produces the same thing!)
If I switch to 1.1, the difference is minimal (removing xmlns) :
<html xmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa 1.1">
<head>
<title>Test 0058</title>
</head>
<body>
<div about="http://www.example.org/#ben" rel="foaf:knows">
<p rel="foaf:homepage" resource="http://www.ex.org/">Mark Birbeck</p>
<p rel="foaf:homepage" resource="http://www.ex1.org/">Ivan Herman</p>
</div>
</body>
</html>
The generated RDF is the same. Now I exchange to property:
<html xmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa 1.1">
<head>
<title>Test 0058</title>
</head>
<body>
<div about="http://www.example.org/#ben" rel="foaf:knows">
<p property="foaf:homepage" resource="http://www.ex.org/">Mark Birbeck</p>
<p property="foaf:homepage" resource="http://www.ex1.org/">Ivan Herman</p>
</div>
</body>
</html>
And the generated RDF is still the same! Great, this is what we wanted...
Now I can add @typeof. The philosophy is that, in presence of @property, the @typeof is bound to the resource. So if I take:
<html xmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa 1.1">
<head>
<title>Test 0058</title>
</head>
<body>
<div about="http://www.example.org/#ben" rel="foaf:knows">
<p property="foaf:homepage" resource="http://www.ex.org/" typeof="schema:Thing">Mark Birbeck</p>
<p property="foaf:homepage" resource="http://www.ex1.org/" typeof="schema:Thing">Ivan Herman</p>
</div>
</body>
</html>
I get:
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ns1: <http://www.example.org/#> .
@prefix schema: <http://schema.org/> .
ns1:ben foaf:knows [ foaf:homepage <http://www.ex.org/>,
<http://www.ex1.org/> ] .
<http://www.ex.org/> a schema:Thing .
<http://www.ex1.org/> a schema:Thing .
and, I believe, this is what one would expect! Finally, I remove the @resource; again, the philosophy is that @typeof would create a bnode; in effect, a @typeof alone is a shorthand for a @resource="_:a":
<html xmlns="http://www.w3.org/1999/xhtml" version="XHTML+RDFa 1.1">
<head>
<title>Test 0058</title>
</head>
<body>
<div about="http://www.example.org/#ben" rel="foaf:knows">
<p property="foaf:homepage" typeof="schema:Thing">Mark Birbeck</p>
<p property="foaf:homepage" typeof="schema:Thing">Ivan Herman</p>
</div>
</body>
</html>
And I get:
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ns1: <http://www.example.org/#> .
@prefix schema: <http://schema.org/> .
ns1:ben foaf:knows [ foaf:homepage [ a schema:Thing ],
[ a schema:Thing ] ] .
Which still looks o.k. to me!
The bottom line is that in the new setup the original test would create a backward compatibility issue. Yes, that is a pain. But I am not sure that we have to go out of our way to handle that case when, I believe, the current rule is consistent.
Your turn to convince me:-)
What actually makes me think: I think somebody (you? Toby?) should probably create a separate W3C Note on the backward compatiblity/incompatibility issues.
Ivan
On Nov 11, 2011, at 21:24 , Gregg Kellogg wrote:
> No surprisingly, there's a bit more to this.
>
> In Step 5, the first option should be:
>
> [[[
> 1. If the current element contains the @property attribute, but does not contains neither the @content nor @datatype attributes and the incomplete triples within the current context is empty, then ...
> ]]]
>
> Additionally in Step 11, the case where a resource attribute is present also needs to ensure that there are no incomplete triples.
>
> Gregg
>
> On Nov 11, 2011, at 11:58 AM, Gregg Kellogg wrote:
>
>> As I mentioned before, the new @property/@typeof rules break some tests, including 0058. This one is interesting, because it involves the use of both hanging @rels, @typeof and @property.
>>
>> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:foaf="http://xmlns.com/foaf/0.1/" version="XHTML+RDFa 1.1">
>> <head>
>> <title>Test 0058</title>
>> </head>
>> <body>
>> <div about="http://www.example.org/#ben" rel="foaf:knows">
>> <p typeof="foaf:Person" property="foaf:name">Mark Birbeck</p>
>> <p typeof="foaf:Person" property="foaf:name">Ivan Herman</p>
>> </div>
>> </body>
>> </html>
>>
>> The new rules say that because both <p> elements have a @typeof and @property, it results in chaining to a new BNode. This is in Step 5 (part 1). In Step 11, the "otherwise, if @typeof is present ..." causes "typed resource" to be used as the @property value. But, the existence of incomplete triples is intended to pick up these new objects. I think we need to revise this step:
>>
>> [[[
>> 11.
>> ...
>> otherwise, if @typeof is present and @about is not and the incomplete triples within the current context is empty, the value of typed resource.
>> ]]]
>>
>> This also applies to test 0078, 0081, and 0082.
>>
>> Gregg
>>
>>
>
>
----
Ivan Herman, W3C Semantic Web Activity Lead
Home: http://www.w3.org/People/Ivan/
mobile: +31-641044153
FOAF: http://www.ivan-herman.net/foaf.rdf