Re: Exceptions to a label's normal rules

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 06:20:23 UTC