- From: Ivan Herman <ivan@w3.org>
- Date: Sat, 12 Nov 2011 09:28:41 +0100
- To: Gregg Kellogg <gregg@kellogg-assoc.com>
- Cc: RDFa WG <public-rdfa-wg@w3.org>
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
Received on Saturday, 12 November 2011 08:26:09 UTC