- From: Tim Cole <t-cole3@illinois.edu>
- Date: Wed, 2 Jan 2013 11:46:18 -0600
- To: 'public-openannotation' <public-openannotation@w3.org>
- Message-ID: <011301cde911$1491aea0$3db50be0$@illinois.edu>
I agree with your analysis that the previous solution for style has flaws that need to be addressed. On first read, your proposed solution seems an entirely pragmatic and functional solution to address the realistic use cases that have so far been raised to justify the need to allow annotation styling - but I worry a little about the minting of the new property oa:styleClass and thinking about how it will be used. I'm not sure whether these niggles are just theoretical or might be of practical import: 1. What are the implications for an annotation serialized in XHTML+RDFa (i.e., where the XHTML class attribute is intrinsically available for styling)? Do we have to mint our own styleClass property? Or could we more simply leverage the existing http://www.w3.org/1999/xhtml:class as the property? So: _:Anno a oa:Annotation ; oa:styledBy <Style1> ; oa:hasTarget <SpTarget1> ; oa:hasBody <Body1> . <SpTarget1> a oa:SpecificResource ; oa:hasSelector <Selector1> ; xhtml:class "red" ; oa:hasSource <Target1> . ... This would make serializing an annotation as RDFa more straightforward, and of course would also reuse a property rather than re-invent it. The W3C 1.1 Modularization of XHTML makes clear that XHTML attributes can be used on elements not in the XHTML namespace, as long as namespace-qualified -- http://www.w3.org/TR/xhtml-modularization/changes.html). Or is there some nuance of xhtml:class that we don't want associated with oa:SpecificResources that are being styled? 2. The value of a styleClass property of a target or body resource is presumably in almost all cases specific to an individual annotation or finite set of annotations, right? So the domain of oa:styleClass will always be (practically speaking) oa:SpecificResource? So you'd almost always use the oa:SepcificResource construction even in the absence of Selector, Scope and State? Theoretically with the @document url() rule you could apply style to a target or body resource without assigning that resource a oa:styleClass value and so without having to use the oa:SpecificResource construction (i.e., in the absence of a Selector, Scope or State). Probably moot because I can't come up with a practical use case where you'd want to apply style on a target or body that was not an oa:SpecificResource. But obviously we want to make the use of style as easy and painless as possible, so if there were such a case this does complicate things slightly as compared to previous approach. It also means you could theoretically end up with the following - which would seem odd to an Open Annotation processor that ignores styling information: _:Anno a oa:Annotation ; oa:styledBy <Style1> ; oa:hasTarget <SpTarget1> ; oa:hasBody <Body1> . <SpTarget1> a oa:SpecificResource ; oa:styleClass "red" ; oa:hasSource <Target1> . ... These aren't major objections, more just niggles as I try to think through the implications. Mostly I think your proposed solution is just fine. Thanks, Tim Cole University of Illinois at UC From: Robert Sanderson [mailto:azaroth42@gmail.com] Sent: Thursday, December 20, 2012 10:15 AM To: public-openannotation Subject: Style Issue Dear all, While writing up the new method of attaching Styles to Annotations, we ran into the following unanticipated issues. We feel this makes the current solution for style unworkable, and propose a slight modification that should make things easier all round. Issues: 1. Styles reference the resources in the graph by URI, using the CSS @document rule. While this makes matching easy, it becomes impossible with the republishing method that is recommended in the specification. For example, a system publishes an Annotation A with an embedded body URN:B. URN:B is thus the URI that is in the Style. A second system harvests the Annotation, republishes it at A2, and the body as a web resource at HTTP URI B2. It should also assert that B2 equivalentTo URN:B. So now the style refers to the equivalent resource, not the body itself and systems will always have to check both. This isn't the end, however, as this is likely to happen multiple times in a distributed system. The Style could be updated, but it might be a web resource that is maintained outside of the annotation system and these changes would not be reflected in the copies. It also relies on consuming systems to understand the content of Styles, which seems above and beyond what they should be expected to do. 2. As Styles refer to the URI of the resource, they cannot be re-used across multiple annotations. This means that there necessarily must be one style per annotation, which is contrary to most uses of CSS and really to the web architecture in general. So every system that has a style for its annotations must create a new style resource for each annotation, rather than just a default few. 3. Following from 2, there is no reason to *not* embed the style if it is tied 1:1 to the Annotation. This defeats the purpose of some of the changes from the first draft, eg to make it a valid CSS resource rather than just the value block. It also brings up a (lesser) documentation/learning issue that to understand Styles you need to understand the Content in RDF model, which otherwise is not necessary. We consider the sum of these issues to be a show-stopper. Our proposal for how to adapt it is: 1. Keep the Style resource a valid CSS document attached to the Annotation, still using oa:styledBy, as in the current proposal. 2. Instead of using the complex @document url() rule construction, instead use the more familiar class name construction. 3. Have a property in the Annotation graph on the resources to be styled that records the class name. Systems then match the property to the respective name in the CSS document. This solves Issue 1 because the property can be reattached easily to the new resource, just like all of the other properties and relationships. At the same time, we use only basic CSS constructions rather than the CSS Level 3 @document construction. It solves Issue 2 because the class names can be re-used across multiple annotations. I also makes it easier to swap styles across a range of annotations -- simply change the referenced CSS resource and they all change, rather than the current method (edit all of the embedded CSS blobs) or the first version (change the references on all of the Specific Resources). It solves Issue 3 by solving Issue 2, as the style is not tied 1:1 with the Annotation. Thus: _:Anno a oa:Annotation ; oa:styledBy <Style1> ; oa:hasTarget <SpTarget1> ; oa:hasBody <Body1> . <SpTarget1> a oa:SpecificResource ; oa:hasSelector <Selector1> ; oa:styleClass "red" ; oa:hasSource <Target1> . ... Where Style1 has the representation: .red { color : red } This seems to capture the best parts of the current proposal while solving the issues that have come up with it. Please let us know any thoughts or comments on this revised approach. Many thanks, Rob, Paolo and Herbert
Received on Wednesday, 2 January 2013 17:46:52 UTC