- From: David Rooks <drooks@segala.com>
- Date: Fri, 2 May 2008 10:08:18 +0100
- To: "Powder public" <public-powderwg@w3.org>
- Message-ID: <57e42cb10805020208v32ff78ccq71c353ea801cb707@mail.gmail.com>
Thats exactly how we do it Phil... Furthermore, we can do things like pre-defining WCAG-A, AA & AAA labels. On Fri, May 2, 2008 at 9:35 AM, Phil Archer <parcher@icra.org> wrote: > > Thanks Stasinos, > > Your comments have helped me to understand better what Alan was asking in > the first place! > > Your POWDER-S methods clearly all work and have the right semantics but I > wonder whether we're getting into domain-specifics here. > > In the nudity section of the ICRA vocabulary we have the following: > > 1 Exposed breasts > 2 Bare buttocks > 3 Visible genitals > 4 No nudity > > Where if you assert any of 1 - 3 then 4 cannot be true. Although we cannot > physically prevent people from asserting all 4, the label generator uses > JavaScript to prevent you from doing this, in the label tester it shows as > invalid and so on. If you assert 4 then this is a positive declaration that > there is no nudity present. So what happens if you assert none of them? Then > we say that 'Nudity may be, but is not necessarily, present'. > > This all stretches the formal semantics a little but it's the way we've > always interpreted it (irrespective of encoding). > > I think what Alan might consider is setting up some properties for each > accessibility check point that take a Boolean value, so in POWDER we'd have > > <descriptorset> > <ts:cp1.1_compliance>1</ts:cp1.1_compliance> > ... > <ts:cp11.4_compliance>1</ts:cp11.4_compliance> > <ts:cp12.1_compliance>0</ts:cp12.1_compliance> > <descriptiontext>This material meets some, but not all, WCAG A > checkpoints</descriptiontext> > </descriptorset> > > which positively asserts that check points 1.1 - 11.4 have passed, and > that 12.1 failed (which is different from saying nothing about 12.1 at all). > > In POWDER-S that would automatically be rendered as > > <owl:Class rdf:nodeId="descriptorset_1"> > <dc:description>This material meets some, > but not all, WCAG A checkpoints</dc:description> > <owl:intersectionOf rdf:parseType="Collection"> > <owl:Restriction> > <owl:onProperty rdf:resource="&ts;#cp1.1_compliance"/> > <owl:hasValue>1</owl:hasValue> > </owl:Restriction> > ... > <owl:intersectionOf rdf:parseType="Collection"> > <owl:Restriction> > <owl:onProperty rdf:resource="&ts;#cp11.4_compliance"/> > <owl:hasValue>1</owl:hasValue> > </owl:Restriction> > <owl:intersectionOf rdf:parseType="Collection"> > <owl:Restriction> > <owl:onProperty rdf:resource="&ts;#cp12.1_compliance"/> > <owl:hasValue>0</owl:hasValue> > </owl:Restriction> > </owl:intersectionOf> > </owl:Class> > > This gives a granular description and the Boolean value is appropriate. > Alan could include in the vocabulary a single Class that represented WCAG A > and point to that in the POWDER doc as > > <descriptorset rdf:resource="&ts;A" /> > > Which, according to the discussion we had [1] would mean that the POWDER-S > would be > > <owl:Class rdf:nodeID="descriptorset_1"> > <owl:intersectionOf rdf:parseType="Collection"> > <owl:Class rdf:about="&ts;A" /> > </owl:IntersectionOf> > </owl:Class> > > Which is more verbose than necessary but is practical in terms of the > XSLT. (Incidentally, I've learnt to write <owl:Class rdf:about="... not > rdr:resource...) > > In other words, I think the POWDER design we're working flat out to get > written up fully and published is already sufficient - it's a question of > designing the vocabulary effectively. All of which is very good material for > the Primer! > > Phil. > > [1] http://lists.w3.org/Archives/Public/public-powderwg/2008Apr/0054.html > > > > Stasinos Konstantopoulos wrote: > > > Alan, > > > > On Tue Apr 29 14:40:30 2008 Alan Chuter said: > > > > Phil suggests: > > > ...if you want to have a ready-made label that has several checkpoints > > > except others then the vocab file could include, say: > > > > > > <owl:Class rdf:about="&tswcag10;A"> > > > <rdfs:label xml:lang="en">Technosite Label WCAG 1.0 Level > > > A</rdfs:label> > > > <owl:intersectionOf rdf:parseType="Collection"> > > > <owl:Class rdf:about="#cp1.1_compliance" /> > > > <owl:Class rdf:about="#cp1.2_compliance" /> > > > <owl:Class rdf:about="#cp1.3_compliance" /> > > > <owl:Class rdf:about="#cp1.4_compliance" /> > > > <owl:Class rdf:about="#cp2.1_compliance" /> > > > <owl:Class rdf:about="#cp4.1_compliance" /> > > > <owl:Class rdf:about="#cp5.1_compliance" /> > > > <owl:Class rdf:about="#cp5.2_compliance" /> > > > <owl:Class rdf:about="#cp6.1_compliance" /> > > > <owl:Class rdf:about="#cp6.2_compliance" /> > > > <owl:Class rdf:about="#cp6.3_compliance" /> > > > <owl:Class rdf:about="#cp7.1_compliance" /> > > > <owl:Class rdf:about="#cp9.1_compliance" /> > > > <owl:Class rdf:about="#cp11.4_compliance" /> > > > </owl:intersectionOf> > > > <owl:complementOf rdf:parseType="Collection"> > > > <owl:Class rdf:about="#cp12.1_compliance" /> > > > <owl:Class rdf:about="#cp14.1_compliance" /> > > > </owl:complementOf> > > > </owl:Class> > > > > > > As you'll recognize this specifically excludes checkpoints 12.1 and > > > 14.1. > > > > > > > This should be: > > > > <owl:Class rdf:about="&tswcag10;A"> > > <rdfs:label xml:lang="en">Technosite Label WCAG 1.0 Level > > A</rdfs:label> > > <owl:intersectionOf rdf:parseType="Collection"> > > <owl:Class rdf:about="#cp1.1_compliance" /> > > <owl:Class rdf:about="#cp1.2_compliance" /> > > <owl:Class rdf:about="#cp1.3_compliance" /> > > <owl:Class rdf:about="#cp1.4_compliance" /> > > <owl:Class rdf:about="#cp2.1_compliance" /> > > <owl:Class rdf:about="#cp4.1_compliance" /> > > <owl:Class rdf:about="#cp5.1_compliance" /> > > <owl:Class rdf:about="#cp5.2_compliance" /> > > <owl:Class rdf:about="#cp6.1_compliance" /> > > <owl:Class rdf:about="#cp6.2_compliance" /> > > <owl:Class rdf:about="#cp6.3_compliance" /> > > <owl:Class rdf:about="#cp7.1_compliance" /> > > <owl:Class rdf:about="#cp9.1_compliance" /> > > <owl:Class rdf:about="#cp11.4_compliance" /> > > <owl:Class> > > <owl:complementOf> > > <owl:Class rdf:about="#cp12.1_compliance" /> > > </owl:complementOf> > > </owl:Class> > > <owl:Class> > > <owl:complementOf> > > <owl:Class rdf:about="#cp14.1_compliance" /> > > </owl:complementOf> > > </owl:Class> > > </owl:intersectionOf> > > </owl:Class> > > > > Although I don't think there is a way of saying in POWDER/XML that a > > property does not hold, this this document would have to be written > > directly in POWDER-S. Or the WG should consider providing for negation > > in POWDER/XML. > > > > NOTE that according to OWL open-world semantics there is no assumption > > made about unspecified properties, so that not stating that a property > > holds is different from stating that a property does not hold. Any > > property defined anywhere in the universe might hold for a resource > > unless there is an explicit or inferred statement to the contrary. > > > > Alan says: But I this means creating a new label for each case, in > > > OWL. Is there no way to simply say *in the label* that some of the > > > rules are not complied with? > > > > > > > That's exactly what you're doing here, giving a name to > > interesting and commonly seen mixtures of haves and have-nots. > > You can create a hierarchy of increasingly specific label-aggregates: > > > > <owl:Class rdf:about="&tswcag10;AB"> > > <rdfs:label xml:lang="en">Technosite Label WCAG 1.0 Level A or > > B</rdfs:label> > > <owl:intersectionOf rdf:parseType="Collection"> > > <owl:Class rdf:about="#cp1.1_compliance" /> > > <owl:Class rdf:about="#cp1.2_compliance" /> > > <owl:Class rdf:about="#cp1.3_compliance" /> > > <owl:Class rdf:about="#cp1.4_compliance" /> > > <owl:Class rdf:about="#cp2.1_compliance" /> > > <owl:Class rdf:about="#cp4.1_compliance" /> > > <owl:Class rdf:about="#cp5.1_compliance" /> > > <owl:Class rdf:about="#cp5.2_compliance" /> > > <owl:Class rdf:about="#cp6.1_compliance" /> > > <owl:Class rdf:about="#cp6.2_compliance" /> > > <owl:Class rdf:about="#cp6.3_compliance" /> > > <owl:Class rdf:about="#cp7.1_compliance" /> > > <owl:Class rdf:about="#cp9.1_compliance" /> > > <owl:Class rdf:about="#cp11.4_compliance" /> > > </owl:intersectionOf> > > </owl:Class> > > > > which leaves cp12.1 and cp14.1 unspecified, and can have two refinements > > which inherit the common properties and build upon them: > > > > <owl:Class rdf:about="&tswcag10;A"> > > <rdfs:label xml:lang="en">Technosite Label WCAG 1.0 Level > > A</rdfs:label> > > <owl:intersectionOf rdf:parseType="Collection"> > > <owl:Class rdf:about="#AB" /> > > <owl:Class> > > <owl:complementOf> > > <owl:Class rdf:about="#cp12.1_compliance" /> > > </owl:complementOf> > > </owl:Class> > > <owl:Class> > > <owl:complementOf> > > <owl:Class rdf:about="#cp14.1_compliance" /> > > </owl:complementOf> > > </owl:Class> > > </owl:intersectionOf> > > </owl:Class> > > > > <owl:Class rdf:about="&tswcag10;B"> > > <rdfs:label xml:lang="en">Technosite Label WCAG 1.0 Level > > B</rdfs:label> > > <owl:intersectionOf rdf:parseType="Collection"> > > <owl:Class rdf:about="#AB" /> > > <owl:Class rdf:about="#cp12.1_compliance" /> > > <owl:Class rdf:about="#cp14.1_compliance" /> > > </owl:intersectionOf> > > </owl:Class> > > > > Obviously, both #A and #B are rdfs:subClassOf #AB, which can be > > explicitly stated but does not need to, as any OWL tool will be able > > to infer it. > > > > You *cannot* have defaults which are subsequently overriden. > > > > Hope this helps a bit, > > stasinos > > > > > > > > >
Received on Friday, 2 May 2008 09:08:52 UTC